Категорії
FreeBSD Linux Misc, staff, other OpenBSD Solaris

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

Принцип ее работы прост: для каждого процесса она создает файл и вешает на него 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 адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff