Como reinicio um serviço Systemd quando um arquivo é alterado. Eu tenho um serviço Java que quero recarregar quando qualquer arquivo jar for alterado.
Esta é a 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!
path
unidades são úteis apenas para ativar (iniciar) outras unidades. Aqui você provavelmente poderia criarsrv-restart.path
comPathChanged=/opt/srv/lib/
esrv-restart.service
comExecStart=systemctl restart srv.service
.srv.path
só pode fazer o equivalente asystemclt start srv.service
, portanto, para automatizar as reinicializações, você precisará de outro serviço, que, quando iniciado, reinicia o serviço.systemctl start srv.path
- e começar com o bootsystemctl preset srv.path
Respostas:
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 implementados. É muito útil.
Para ser claro, você precisa:
srv.service
srv-watcher.service
srv-watcher.path
fonte
systemctl enable srv-watcher.path && systemctl start srv-watcher.path
.path
arquivo, adicioneUnit=nameofmyrestart.service
-o à[Path]
seção do.path
arquivo. freedesktop.org/software/systemd/man/systemd.path.html#Unit=