как исключить повторный запуск скрипта

Применимость: Linux

Слова для поиска:


Задача:

Например некий скрипт на вашем сервере периодически запускается через cron, но случается когда он не успел завершить работу и запускается снова. Нередко случается наблюдать по нескольку десятков экземпляров таких скриптов активно выжирающих ресурсы.

Нужно добавить проверку на предмет наличия в памяти уже запущенных скриптов.

Решение:

Пример задания в cron

  */5 * * * * /usr/bin/php -q /var/www/myhost/cron.php >/dev/null 2>&1
Убедитесь что у вас установлен flock и установите если его нет.

Вносим исправления в задание cron:

  */5 * * * * /usr/bin/flock -xn /var/lock/my_lock_name -c '/usr/bin/php -q /var/www/myhost/cron.php' >/dev/null 2>&1

Опции flock:

 -s  --shared     Get a shared lock
 -x  --exclusive  Get an exclusive lock
 -u  --unlock     Remove a lock
 -n  --nonblock   Fail rather than wait
 -w  --timeout    Wait for a limited amount of time
 -o  --close      Close file descriptor before running command
 -c  --command    Run a single command string through the shell
 -h  --help       Display this text
 -V  --version    Display version

Смотрите также:


Актуальность: 2013/10/21 16:54