Назад | Перейти на главную страницу

Расположение файла процесса FreeBSD

У меня есть сценарий на основе PHP, который останавливает выполнение двух одинаковых процессов (через crontab), в CentOS я проверил запущенный процесс следующим образом:

if(file_exists("/proc/{$pid}" )) {

Однако похоже, что FreeBSD не поддерживает эту структуру, есть ли подобное место, которое я могу проверить? Или мне нужно выполнить команду оболочки?

Самый простой способ блокировки заданий cron (от параллельного выполнения) - это замок (1) команда. Он доступен во FreeBSD и Mac OS X. Linux имеет очень похожие flock команда (но параметры разные).

E. g.

* * * * * lockf -st0 /tmp/foo.lock /path/to/foo-script

Если foo-script будет работать больше одной минуты, следующий запускаться не будет. -t0 значит не ждите блокировки, просто выйдите.

При желании можно дождаться блокировки, e, g,

@hourly lockf -st1800 /tmp/foo.lock /path/to/foo-script будет ждать 30 минут для блокировки и, если блокировка все еще удерживается, выйдет.

Если длительный процесс является ненормальной ситуацией и указывает на некоторую ошибку, полезно отправить сообщение об ошибке администратору:

MAILTO=cron-mail@example.org @daily lockf -t0 /tmp/foo.lock /path/to/foo-script (опция -s "тихо" удалена, т.к. требуется сообщение об ошибке).