LINUX.ORG.RU

systemctl автоматический рестарт

 


0

1

Добрый вечер!

1. Есть служба запущенная systemctl enable gammu-smsd. После перезапуска компьютера, она не запускается, а падает с ошибкой, так как, по какой то причине запускается раньше, чем запускается интернет. Как этого избежать? 2. Как сделать, чтобы если служба в статусе файлед, то она периодически перегружалась, а не ждала ручного запуска.

Добавлял

[Unit] After=network.target

не помогло.

Добавлял [Service] Restart=always

тоже не помогло Плюс есть ошибка failed to parse service restart specifier, ignoring: always

nano /lib/systemd/system/gammu-smsd.service

[Unit]
Description=SMS daemon for Gammu
Documentation=man:gammu-smsd(1)
After=mysql.service postgresql.service
After=network.target

[Service]
EnvironmentFile=-/etc/sysconfig/gammu-smsd
# Run daemon as root user
ExecStart=/usr/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon
# Run daemon as non-root user (set user/group in /etc/sysconfig/gammu-smsd)
#ExecStart=/usr/bin/gammu-smsd --user=${GAMMU_USER} --group=${GAMMU_GROUP} --pid=/var/run/gammu-smsd.pid --daemon
ExecReload=/bin/kill -HUP $MAINPID
ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid
Type=forking
PIDFile=/var/run/gammu-smsd.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target

Как этого избежать?

Нужно настроить зависимости запуска, что бы службе запускалась после network-online.target: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

Как сделать, чтобы если служба в статусе файлед, то она периодически перегружалась, а не ждала ручного запуска.

Настроить либо через cron, либо через systemd timers периодическую проверку статуса службы и её перезапуск.

anonymous ()

systemctl

systemctl — это всего лишь утилита управления. На будущее, такие темы стоит создавать с тегом «systemd».

Есть служба запущенная systemctl enable gammu-smsd. После перезапуска компьютера, она не запускается, а падает с ошибкой, так как, по какой то причине запускается раньше, чем запускается интернет. Как этого избежать?

Зависит от того, что конкретно этой службе нужно от интернета.

В общем случае — добавить к юниту gammu-smsd.service зависимости:

[Unit]
Wants=network-online.target
After=network-online.target

Затем прочесть документацию к твоему сетевому менеджеру, чтобы узнать, как подвязать его к network-online.target.

Как сделать, чтобы если служба в статусе файлед, то она периодически перегружалась, а не ждала ручного запуска.

Добавить к юниту директивы автоматического перезапуска при сбое и ограничение на частоту перезапуска (чтобы не исчерпать лимит автоматических перезапусков):

[Service]
Restart=on-failure
RestartSec=5

Добавлял [Service] Restart=always тоже не помогло Плюс есть ошибка failed to parse service restart specifier, ignoring: always

Где-то опечатка в том, что ты добавил. Это должно работать.

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

Настроить либо через cron, либо через systemd timers периодическую проверку статуса службы и её перезапуск.

Неправда, так делать не следует. Следует разобраться, почему у ТСа не работает Restart=.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx
[Unit]
Wants=network-online.target
After=network-online.target

Это помогло. Спасибо.

«Где-то опечатка в том, что ты добавил. Это должно работать.» - опечатки нет. Как проверить , что это работает теперь?

shtrih ()

nano /lib/systemd/system/gammu-smsd.service

Не надо так делать. Все ваши правки затрутся при обновлении. Скопируйте файл в /etc/systemd/system/ и правьте там.

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

А ещё можно создать директорию /etc/systemd/system/gammu-smsd.service.d, а в ней файлы с изменениями зависимостей.

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