Reinicie o serviço Systemd automaticamente sempre que um diretório for alterado (qualquer arquivo dentro dele)

15

Como reinicio um serviço Systemd quando um arquivo é alterado? Eu tenho um serviço Java que quero recarregar quando qualquer arquivo jar é alterado.

Esta é minha configuração:

srv.service

[Unit]
Description=srv 0.1: Service's description
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root

[Install]
WantedBy=multi-user.target

srv.path

[Path]
PathModified=/opt/srv/lib/

Eu também tentei usar PathChanged e usar um arquivo em vez de um diretório.

Quando instalei o serviço, executei: sudo systemctl daemon-reload e sudo systemctl enable srv

Obrigado!

    
por jamming 26.01.2017 / 11:36

1 resposta

9

O comentário de Michal Politowski está exatamente correto. Eu uso esse método para reiniciar automaticamente os serviços quando novos artefatos são implantados. É muito útil.

Para ser claro, você precisa:

srv.service

[Unit]
Description=srv 0.1: Service's description
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root

[Install]
WantedBy=multi-user.target

srv-watcher.service

[Unit]
Description=srv restarter
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart srv.service

[Install]
WantedBy=multi-user.target

srv-watcher.path

[Path]
PathModified=/opt/srv/lib

[Install]
WantedBy=multi-user.target
    
por 12.12.2017 / 16:07

Tags