Debian
由 init.d 啟動的保持活動程序的標准或最佳方式
我正在尋找一種標準方法或最佳實踐來保持由
init.d
shell 腳本啟動的守護程序處於活動狀態。或者更好的是,有沒有辦法直接讓它活著
/etc/init.d
?具體來說,我有一個名為 dtnd 的守護程序,它使用無限循環來尋找意外結束的程序,如果有的話,守護程序會再次喚醒它們。另外,我使用 start-stop-daemon 工具來讓程序從給定的系統使用者執行。
我想從啟動執行這個 dtnd 守護程序。為了實現這種行為,我創建了一個 init.d 腳本,它使用 start、stop 和 status 命令“包裝”dtnd 文件。
我有 2 個問題想解決:
- 有沒有辦法讓 init.d shell 腳本中**的某些程序保持活動狀態。**是標準/最佳方式的做法嗎?
- 建議使用無限循環保持程序活躍?我想最好使用一些命令
respawn
來實現這一點。這是正確的?我知道該
respawn
命令的存在。我認為這就是我需要的,但我不了解 和 之間的工作/etc/init.d/
流程/etc/init
。誰能幫我?請注意,我既沒有 inittab 也沒有暴發戶(我只允許使用
/etc/init
、/etc/init.d
和cron
系統工具作為start-stop-daemon
。我的意思是,只有預設工具)非常感謝您的參與!
Debian 最終將擁有 systemd,因此這是在使用 systemd 的 Linux 系統上執行此操作的方法(很多人已經這樣做了;您可能會考慮切換發行版)。
Systemd 可以自動為您處理保持服務活動;不需要其他工具。只需確保
Restart=always
在服務文件的[Service]
部分中進行了設置。# vi /etc/systemd/system/dtnd.service [Service] Restart=always #...everything else...