Правильный способ автоматического перезапуска (при изменении конфига)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Правильный способ автоматического перезапуска

Сообщение rl0ad » 22.06.2016 16:46

Есть демон, у него есть rc-файл. Интересно, как типовым образом решить проблему автоматического перезапуска при внесении изменений в конфиг? gvfs-monitor-file - это удачный вариант? И как дальше? (Опции "перечитать конфиг" нет, опции "replace" нет, только рестарт).
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15928
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правильный способ автоматического перезапуска

Сообщение Bizdelnick » 22.06.2016 17:15

rl0ad писал(а):
22.06.2016 16:46
типовым образом

Типовое решение — перезапускать его вручную после изменения файла.

rl0ad писал(а):
22.06.2016 16:46
gvfs-monitor-file - это удачный вариант?

Однозначно нет. Можно попробовать inotifywait. Если это действительно необходимо.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Re: Правильный способ автоматического перезапуска

Сообщение rl0ad » 22.06.2016 17:33

Bizdelnick писал(а):
22.06.2016 17:15
Типовое решение — перезапускать его вручную после изменения файла.

killall; start? Мне не кажется это юзабельным. Могу написать для него обертку, но как это сделать грамотно? Чтобы при закрытии терминала процесс оставался в фоне, nohup, disown?
Спасибо сказали:

Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX

Re: Правильный способ автоматического перезапуска

Сообщение Olej » 22.06.2016 17:37

rl0ad писал(а):
22.06.2016 16:46
Интересно, как типовым образом решить проблему автоматического перезапуска при внесении изменений в конфиг?

Большинство традиционных демонов перечитывают свои конфиг-файлы получив сигнал SIGHUP.
Это правило ещё из более старых UNIX, оно родилось ещё до Linux.
Кто-то из серверов (не помню кто) перечитывает конфигурацию по сигналу SIGUSR1.
Перечитать конфиги (или любые установки) - это асинхронная операция (потребность возникающая извне), и лучший механизм для уведомления об асинхронных событиях это сигналы.

Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15928
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правильный способ автоматического перезапуска

Сообщение Bizdelnick » 22.06.2016 17:39

rl0ad писал(а):
22.06.2016 17:33
killall; start?

service yourdaemon restart

rl0ad писал(а):
22.06.2016 17:33
Могу написать для него обертку, но как это сделать грамотно?

OpenSUSE? Добавить сервис systemd.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Re: Правильный способ автоматического перезапуска

Сообщение rl0ad » 22.06.2016 17:44

Bizdelnick писал(а):
22.06.2016 17:39
OpenSUSE? Добавить сервис systemd.

Об этом не подумал, заклинило на способах решения средствами bash. Вариант с systemd пожалуй "наиболее типовой" и будет :)

Правда, мне неизвестно, умеет ли systemd отслеживать изменения в конфигурационных файлах.
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 820
ОС: Fedora

Re: Правильный способ автоматического перезапуска

Сообщение s.xbatob » 23.06.2016 14:23

По-моему это плохая идея. Тут лучше без автоматики.
Как сообщить демону, что конфигурация изменилась, вам уже объяснили. Но всю работу должен делать сам демон, и роль systemd или ещё кого-либо тут весьма невелика.
Ещё лучше предусмотреть возможность конфигурирования на лету, например, через d-bus, но тут уже придётся повозиться.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15928
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Правильный способ автоматического перезапуска

Сообщение Bizdelnick » 23.06.2016 14:27

s.xbatob писал(а):
23.06.2016 14:23
возможность конфигурирования на лету, например, через d-bus, но тут уже придётся повозиться.

Онлайн-кофигурация обычно делается через БД (SQL или LDAP). Через d-bus возни будет действительно слишком много. Но, насколько я понял, это не тот случай (поправьте, если ошибаюсь): у ТСа уже есть некий демон, переделывать который он не намерен.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
rl0ad
Сообщения: 123
ОС: Leap 42.1

Re: Правильный способ автоматического перезапуска

Сообщение rl0ad » 23.06.2016 19:15

Bizdelnick писал(а):
23.06.2016 14:27
у ТСа уже есть некий демон, переделывать который он не намерен.

Угу. Автор написал классную вещь, но оно на C - тут я бессилен что либо испортить)) Но не принципиально, о чем именно речь, если написать подобную "обертку", то ее с тем же успехом можно использовать и для собственных скриптов.

Пожалуй вариант с systemd мне не нравится, почему-то.. но и частые перезапуски нужны только при настройке, а потом оно просто работает. Так что вопрос становится чисто теоретическим.
Спасибо сказали: