Linux

如果文件更改,如何自動重啟 systemd 服務?

  • October 24, 2022

我有一項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我們應該手動再次呼叫嗎?

提前致謝。

PS:如果這裡缺少任何資訊,請告訴我

出色地

  • systemctl enable --now test-restart.path自動設置啟動。
  • 它將軟連結添加到指定的引導級別。
  • 這是一種持久的行為
  • 啟動時會systemd啟動
  • 你可以看看它的反向依賴systemctl list-dependencies test-restart.path --reverse
  • 無需systemctl enable --now test-restart.path再次手動執行
  • 設備重啟只需要一次
  • test-restart.path系統啟動時會自行啟動

引用自:https://unix.stackexchange.com/questions/722209