Гарантированный запуск единичной копии скрипта

Принцип ее работы прост: для каждого процесса она создает файл и вешает на него lock. Как только процесс завершается, лок пропадает. Лок также пропадает в случае внезапной смерти процесса, и нет необходимости проверять pid на существование или делать другие телодвижения. Если процесс запускается повторно, а лок-файл еще не освободился, работа скрипта прерывается и выдается сообщение в STDERR.

Ниже будут приведены примеры для разных ОС

Linux

flock, lockrun

FreeBSD/OpenBSD

lockf, lockfile (из пакета procmail)

Solaris

lockrun

Ниже некоторые комментарии, касательно утилит, которые я нашёл в одной из рассылок. Привожу цитаты:

lockf тем и хороша, что залипания у неё нет. Если процесс умер,
ядерный flock снимается сам. Ну и для крона крайне вкусен таймаут
(если запускаешь раз в минуту — как раз ставь таймаут в минуту).

Для работы с FS, где flock() невозможен (старые NFS и т.п.) — есть
готовая тулза shlock (изначально — из комплекта cnews). Она не может
обеспечить идеальность, но пытается проверять все реально
отрабатываемые случаи.

PS. Часть информации взято с ресурса habrahabr.ru

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

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