LINUX.ORG.RU

Systemd: перезапуск сервиса после пробуждения из саспенда

 ,


0

1

После саспенда отваливается VPN туннель, приходится перезапускать сервис. Как научить systemd делать это автоматически? Я знаю, что можно запихать команду на перезапуск в отдельный сервис с After=suspend.target, но это как-то костыльно.

★★★★★

Последнее исправление: Axon (всего исправлений: 1)

[Unit]
Description=Custom actions on sleep
PartOf=sleep.target

[Service]
Type=oneshot
RemainAfterExit=true # не уверен, что нужно
# ExecStart= # отсутствие ExecStart= допускается
ExecStop=/whatever/you/want

[Install]
WantedBy=sleep.target # или симлинк руками
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Это то же самое, что я упоминал в топике, только в профиль. Мне нужно, чтобы сервис перезапускался если был запущен, и не запускался, если не был. Приведённый вами способ такое без костылей на баше не обеспечивает, а разве systemd не создавался для того, чтобы о них забыть?

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Axon

Обеспечивает: ExecStop=/usr/bin/systemctl try-restart whatever.

И я бы скорее назвал костылём свистопляски с созданием хитрого дерева зависимостей, которое магически делает то, что нужно.

Кстати, КМК, исключительно с помощью встроенных директив (построения хитрого дерева зависимостей) так и не сделать. На них вообще нельзя ничего слишком сложного сделать, и это бай дизайн.

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

ExecStop=/usr/bin/systemctl try-restart whatever

Okay, сойдёт. Спасибо.

И я бы скорее назвал костылём свистопляски с созданием хитрого дерева зависимостей, которое магически делает то, что нужно.

Да ладно, какое тут хитрое дерево. У systemd уже suspend.target, уже есть try-restart. Всё, что нужно, это возможность указывать сервисы, к которым этот try-restart нужно применить после suspend.target. Я думал, это уже есть, но, видимо, пока нет.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)

Странно, у меня openvpn сам переподключается после пробуждения. Ничего специфичного в конфиге нет. В логах такое:

Tue Feb 10 09:19:09 2015 [disarmer.ru] Inactivity timeout (--ping-restart), restarting
Tue Feb 10 09:19:09 2015 /usr/bin/ip addr del dev tun0 10.8.0.3/24
Tue Feb 10 09:19:10 2015 SIGUSR1[soft,ping-restart] received, process restarting

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

Inactivity timeout

Кагбе намекает. У меня на серваке keepalive включен, поэтому таймаута и нет. Попробую запихать ping-restart 30 в клиенский конфиг.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.