Systemd - как запустить другой юнит при перезагрузке сервиса?
В настоящее время я столкнулся с проблемой, заключающейся в том, что я хочу запускать модуль Systemd, когда другой модуль перезагружается, а не перезапускается. Вот чего я добился до сих пор:
[Unit]
After=teleport.service
Requires=teleport.service
PartOf=teleport.service
[Service]
ExecStart=/usr/bin/bash -c "Reloaded gracefully | /usr/bin/logger"
Но это работает только с использованием systemctl restart teleport. Перезагрузка не работает. Как этого добиться, не касаясь исходного устройства teleport.service?
1 ответ
Выяснилось, что этого легко добиться с помощью вставных файлов. Вместо записи нового модуля файлы drop-in можно использовать следующим образом:
Вы можете создавать добавляемые файлы в / etc / systemd / ... для модулей, определенных в / lib или / usr / lib:/etc/systemd/system/teleport.service.d/override.conf
[Service]
ExecReload=
ExecReload=/usr/bin/bash -c "/bin/kill -HUP $MAINPID; usr/bin/bash -c "Reloaded gracefully | /usr/bin/logger"
Сначала необходимо отключить определенный атрибут. Что происходит сразу после [Сервиса].