![디스크의 파일이 수정되면 systemd 서비스를 자동으로 다시 시작합니다.](https://linux55.com/image/207764/%EB%94%94%EC%8A%A4%ED%81%AC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%88%98%EC%A0%95%EB%90%98%EB%A9%B4%20systemd%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EB%8B%A4%EC%8B%9C%20%EC%8B%9C%EC%9E%91%ED%95%A9%EB%8B%88%EB%8B%A4..png)
기본적으로 유목민 클라이언트인 서비스가 있습니다. 최소한의 버전은 다음과 같습니다:
[Unit]
Description=Nomad Client
Documentation=https://nomadproject.io/docs/
After=network-online.target
[Service]
ExecStart=/usr/bin/nomad agent -config /etc/myapp/myconfig.json
[Install]
WantedBy=multi-user.target
이 서비스는 에 제공된 특정 구성을 사용하여 노마드 프로세스를 시작합니다 /etc/myapp/myconfig.json
.
내가 사용하고 있는 애플리케이션은 이 유목민 클라이언트를 중심으로 구축되었으며 구성 파일은 애플리케이션 수명 동안 언제든지 변경될 수 있습니다.
/etc/myapp/myconfig.json
디스크에 변경 사항이 발생할 때마다 서비스를 다시 시작하고 싶습니다.
답변1
당신은경로 단위.
이 질문에 답하기 위해 귀하의 서비스 단위가 이라고 가정하겠습니다 nomad.service
.
먼저 서비스를 nomad-restart.service
oneshot
다시 시작할 서비스를 만듭니다 nomad
. 다음 내용으로 /etc/systemd/system/nomad-restart.service를 생성합니다:
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart nomad.service
.path
다음으로, 특정 파일이 수정되었을 때 서비스를 활성화하기 위한 유닛이 필요합니다 . /etc/systemd/system/nomad-restart.path
다음 콘텐츠로 만듭니다.
[Path]
PathChanged=/etc/myapp/myconfig.json
[Install]
WantedBy=multi-user.target
경로 단위 시작 및 활성화:
systemctl enable --now nomad-restart.path
이제 지정된 경로가 변경될 때마다 서비스가 다시 시작됩니다. nomad-restart.path
지정된 파일이 수정되면 이 장치가 실행됩니다. 이렇게 하면 까지 활성화("시작"이라고도 함)되어
nomad-restart.service
호출된 systemctl restart nomad.service
다음 종료됩니다.