파일이 변경되면 시스템 서비스를 자동으로 다시 시작하는 방법은 무엇입니까?

파일이 변경되면 시스템 서비스를 자동으로 다시 시작하는 방법은 무엇입니까?

systemd사용자 정의 파일을 사용하여 임베디드 Linux 장치에서 프로그램을 시작하는 서비스가 있습니다 . 파일이 수정/변경되면 자동으로 이 서비스를 시작하고 싶습니다. 매뉴얼을 읽는 동안 유닛 파일을 사용하여 이를 수행하는 솔루션을 systemd발견했습니다 . .path내 설정은 다음과 같습니다.

test.service

[Unit]
Description=MyApp
After=network-online.target

[Service]
WorkingDirectory=/data/test
ExecStart=/usr/bin/myapp -c /data/test/myconfig.cfg

[Install]
WantedBy=multi-user.target

test-restart.service내용이 포함된 파일을 만들었습니다 .

[Service]
Type=OneShot
ExecStart=/usr/bin/systemctl restart test.service

추가적으로 단위 파일이 있습니다 test-restart.path:

[Path]
Unit=test-restart.service
PathChanged=/data/test/myconfig.cfg 

[Install]
WantedBy=multi-user.target

그러나 제가 이해한 바에 따르면 를 실행해야 합니다 systemctl enable --now test-restart.path. 파일이 수정된 후 test-restart.service활성화되면 이 작업이 실행되어 다시 시작됩니다 test.service. 그런데 systemctl enable --now test-restart.path자동으로 호출하는 방법을 모르겠네요 ? 내 말은, 이 작업을 매번 수동으로 수행해야 합니까(또는 처음에만 수행해야 합니까?) 아니면 처리해야 합니까 systemctl? 장치가 재부팅되면 어떻게 되나요? systemctl enable --now test-restart.path수동으로 다시 호출 해야 하나요 ?

미리 감사드립니다.

추신: 여기에 누락된 정보가 있으면 알려주세요.

답변1

훌륭한

  • systemctl enable --now test-restart.path부팅 시 자동으로 시작되도록 설정합니다.
  • 지정된 시작 수준에 소프트 링크를 추가합니다.
  • 이는 지속적인 동작입니다.
  • systemd시작 시 시작됩니다.
  • 역방향 종속성을 볼 수 있습니다.systemctl list-dependencies test-restart.path --reverse
  • systemctl enable --now test-restart.path다시 수동으로 할 필요가 없습니다
  • 기기는 한 번만 다시 시작하면 됩니다.
  • test-restart.path시스템이 시작되면 자동으로 시작됩니다.

관련 정보