LINUX.ORG.RU

Запуск одной копии daemon'а


0

0

Есть daemon (Linux). Как узнать, что одна его копия уже запущена и запретить создание другой? Есть ли такие способы, кроме создания файловых флажков, сигнализирующих запуск daemon'а?

Спасибо.

★★★

Странный вопрос...

> Как узнать, что одна его копия уже запущена

ps -e |grep имядемона

> и запретить создание другой?

Например, послать всем письмо: "Запрещаю запускать имядемона!"

> Есть ли такие способы, кроме создания файловых флажков, сигнализирующих запуск daemon'а?

Очевидно, от демона зависит. Например:

Пролопатить /proc ( как делает ps); заслушать некий порт; задействовать заранее известный SySV семафор, очередь или SM сегмент; использовать внешний сервер; etc. -- нафантазировать можно много...

Только IMHO файловый флажок -- самое удобное. Лучше в какой-нибудь tmpfs.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>Только IMHO файловый флажок -- самое удобное. Лучше в какой-нибудь tmpfs.

Тока демона нада будет "красиво" останавливать: лишняя головная боль ленивым админам /если софтина дорастёт до определённого уровня/ :)

Pi ★★★★★
()
Ответ на: комментарий от Pi

> Тока демона нада будет "красиво" останавливать ...

Вовсе нет!

Достаточно, как обычно, во "флажке" запомнить PID (для гарантии можно еще и время старта). И заставить вновь стартующего демона вытирать все предыдущие флажки от предшествующих лузеров.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

аля /var/run/bla.pid ?

и точно, не сообразил сразу :)

Pi ★★★★★
()
Ответ на: комментарий от Die-Hard

И не забыть проверять соответствие флажка работающему приложению. Иначе такой цыкл получится!

one117 ★★★★★
()

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

В качестве такого ресурса может выступать IP порт (при старте приложения нужно bind'ить socket не него), файловая блокировка файла с известным именем (например flock), возможно что-нибудь на тему shared objects. Обычно такой ресурс имеется, и предпринимать специальные усилия для его появления не нужно.

Плюсы такого подхода (как идеи) очевидны: нет процесса - нет блокировки. С файловым флажком все сложнее, но в большинстве случаев правильнее и разумнее.

anonymous
()

Всем спасибо за помощь! Выбрал как вариант файловый флажок с принудительной блокировкой -- для большей портабельности, imho.

kondor ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.