как исключить повторный запуск скрипта
Применимость: 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
Смотрите также:
- man flock
- Cron
Актуальность: 2013/10/21 16:54