¿Cómo reinicio un servicio Systemd cuando cambia un archivo? Tengo un servicio de Java que quiero recargar cuando cambia cualquier archivo jar.
Esta es mi configuración:
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/
También intenté usar PathChanged
y usar un archivo en lugar de un directorio.
Cuando instalé el servicio que ejecuté: sudo systemctl daemon-reload
y sudo systemctl enable srv
¡Gracias!
Parece que si lo nombra igual que el servicio (con .path), el archivo de ruta se refiere al mismo servicio: freedesktop.org/software/systemd/man/systemd.path.html sin embargo ... No sé si solo inicia un servicio o incluso lo reinicia si ya se está ejecutando
—
atascando el
Según tengo entendido por los documentos,
—
Michał Politowski
srv.path
solo puede hacer el equivalente de systemclt start srv.service
, por lo que para automatizar reinicios necesitará otro servicio, que cuando se inicia reinicia su servicio.
Necesitas iniciarlo
—
Michael D.
systemctl start srv.path
, y que comience en el arranquesystemctl preset srv.path
Relevante: github.com/systemd/systemd/issues/4324
—
Michał Politowski
path
unidades solo son útiles para activar (iniciar) otras unidades. Aquí probablemente puedas crearsrv-restart.path
conPathChanged=/opt/srv/lib/
ysrv-restart.service
conExecStart=systemctl restart srv.service
.