Ответы пользователя по тегу Linux
  • Пул периодических задач на сервере

    gouranga
    @gouranga
    Используйте lock-файлы.

    Как-то так:
    #!/bin/bash
    
    DEFAULT_LOCK="/tmp/.somelock"
    
    lock() {
    	LOCK=${1:-$DEFAULT_LOCK}
    	lockfile -r 0 $LOCK 1>/dev/null 2>&1
    	return $?
    }
    
    unlock() {
    	LOCK=${1:-$DEFAULT_LOCK}
    	[ -f $LOCK ] && rm -f $LOCK
    	return $?
    }
    

    После можно писать:
    lock && echo "lock ok test"
    lock || echo "lock not ok test"
    unlock && echo "unlock ok test"
    unlock || echo "unlock not ok test"
    

    И оно будет использовать стандартный lock-файл (удобно когда нужно запустить один скрипт).

    В вашем случае можно указать свой lock-файл, для каждого скрипта в зависимости от параметра(-ов):
    # $PARAM -- что-то уникальное для каждого из 4 запусков скрипта. Например:
    # PARAM=`echo -n "$@" | openssl dgst -sha1 -binary | base64`
    LOCK="${DEFAULT_LOCK}_${PARAM}"
    
    if ! lock $LOCK ; then
    	echo "Locked"
    	exit 1
    fi
    
    # ваши действия
    
    unlock $LOCK
    
    Ответ написан
  • как создать цикл с выполнением после завершения команды?

    gouranga
    @gouranga
    На сколько я помню там есть inittab. Пишете туда что-то типа
    tn:2345:respawn:/usr/bin/ssh -n -R localhost:2222:localhost:22 root@myhost
    

    и делаете kill -1 1.
    Ответ написан
    Комментировать