디렉토리가 변경 될 때마다 Systemd 서비스를 자동으로 다시 시작하십시오.


25

파일이 변경 될 때 Systemd 서비스를 다시 시작하는 방법 jar 파일이 변경되면 다시로드하려는 Java 서비스가 있습니다.

이것은 내 설정입니다.

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/

또한 PathChanged디렉토리 대신 파일을 사용 하고 사용해 보았습니다 .

나는이 서비스를 설치할 때 나는 실행 : sudo systemctl daemon-reloadsudo systemctl enable srv

감사!


2
테스트되지 않았으므로 대답은 아니지만 문서에서 path장치는 다른 장치를 활성화 (시작)하는 데만 유용한 것으로 보입니다 . 여기에 당신은 아마 만들 수 srv-restart.pathPathChanged=/opt/srv/lib/srv-restart.service함께 ExecStart=systemctl restart srv.service.
Michał Politowski 2012 년

당신이 (.path와) 그것에게 서비스와 동일한 이름을 경우 경로 파일이 동일한 서비스를 의미 것으로 보인다 : freedesktop.org/software/systemd/man/systemd.path.html 그러나 ... 나도 몰라 그것은 단지 서비스를 시작하거나, 이미 실행중인 경우에도 다시 시작하는 경우
전파 방해

문서에서 이해하는 것처럼 srv.path의 동등한 작업 만 수행 할 수 systemclt start srv.service있으므로 다시 시작을 자동화하려면 시작시 서비스를 다시 시작하는 다른 서비스가 필요합니다.
Michał Politowski

당신 systemctl start srv.path은 그것을 시작하고 부팅 할 때 시작해야합니다systemctl preset srv.path
Michael D.

답변:


22

Michal Politowski의 의견은 정확히 맞습니다. 새 아티팩트가 배포 될 때이 방법을 사용하여 서비스를 자동으로 다시 시작합니다. 매우 도움이됩니다.

명확하게하려면 다음이 필요합니다.

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

6
많은 파일이 빠르게 연속적으로 변경되는 경우 언제 트리거되는지에 대한 보장이 있습니까?
Rich Remer

3
«.path»장치도 활성화해야합니다. 이 경우 :systemctl enable srv-watcher.path && systemctl start srv-watcher.path
Pau Ruŀlan Ferragut

1
당신의 재시작 서비스가와 같은 이름이 아닌 경우 .path 파일 그럼 그냥 추가 Unit=nameofmyrestart.service받는 [Path]당신의 섹션 .path파일. freedesktop.org/software/systemd/man/systemd.path.html#Unit=
DKebler

황조롱이 (ASP.NET 코어) 다시 시작하기 위해 CentOS는에서 잘 작동
술맨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.