Использование flock для гарантии запуска одной копии процесса

Иногда, используя планировщик запуска программ cron необходимо удостоверится, что предыдущий запуск скрипта был завершен. (Например архивация файлов должна происходить после окончании предыдущего ее запуска).
В операционных системах Linux для этого удобно использовать утилиту- flock.

/usr/bin/flock -w 600 /var/tmp/myscript.lock /root/myscript.sh

Эта комманда запустит /root/myscript.sh и создаст lock-файл для данного процесса. Пока он активен, новый вызов данного скрипта не произойдет.
После завершения программы, блокировка файла снимается и процесс может быть снова запущен.
Параметр -w 600 определяет время ожидания комманды flock на освобождение lock-файла.
Для моментальной отмены выполнения процесса используйте параметр -w 0, для ожидания же бесконечно долгого времени параметр нужно опустить.

Наиболее подходящее место для lock-файла, папка/var/run, но для ее использования сначала потребуется создать файл и дать пользователю, исполняющему скрипт, права на его запись.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *