디스크의 파일이 수정되면 systemd 서비스를 자동으로 다시 시작합니다.

디스크의 파일이 수정되면 systemd 서비스를 자동으로 다시 시작합니다.

기본적으로 유목민 클라이언트인 서비스가 있습니다. 최소한의 버전은 다음과 같습니다:

[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다음 종료됩니다.

관련 정보