Столкнулся с проблемой, написанный мною бот для сайта запускался раз в минуту и однажды на сервере, где работал бот интернет канал сильно просел, как результат за минуту бот не успел завершить свою работу.

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

Но проблема решилась очень просто, через flock.

Теперь скрипт не запускается до тех пор, пока предыдущий запуск не закончит работу!

Например, запуск произвольного скрипта из crontab раз в минуту:

* * * * * root flock -n /tmp/script.lock -c /path/to/script.sh

Рассмотрим опции:

  • -n /tmp/script.lock - путь до lock файла.
  • -c /path/to/script.sh - путь до скрипта или программы, которую нужно запустить.

Эта утилита имеется штатно на FreeBSD и Linux.


Comments

comments powered by Disqus