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"

Сначала необходимо отключить определенный атрибут. Что происходит сразу после [Сервиса].

Другие вопросы по тегам