Debian

由 init.d 啟動的保持活動程序的標准或最佳方式

  • November 16, 2016

我正在尋找一種標準方法或最佳實踐來保持由init.dshell 腳本啟動的守護程序處於活動狀態。

或者更好的是,有沒有辦法直接讓它活著/etc/init.d

具體來說,我有一個名為 dtnd 的守護程序,它使用無限循環來尋找意外結束的程序,如果有的話,守護程序會再次喚醒它們。另外,我使用 start-stop-daemon 工具來讓程序從給定的系統使用者執行。

我想從啟動執行這個 dtnd 守護程序。為了實現這種行為,我創建了一個 init.d 腳本,它使用 start、stop 和 status 命令“包裝”dtnd 文件。

我有 2 個問題想解決:

  1. 有沒有辦法讓 init.d shell 腳本中**的某些程序保持活動狀態。**是標準/最佳方式的做法嗎?
  2. 建議使用無限循環保持程序活躍?我想最好使用一些命令respawn來實現這一點。這是正確的?

我知道該respawn命令的存在。我認為這就是我需要的,但我不了解 和 之間的工作/etc/init.d/流程/etc/init。誰能幫我?

請注意,我既沒有 inittab 也沒有暴發戶(我只允許使用/etc/init/etc/init.dcron系統工具作為start-stop-daemon。我的意思是,只有預設工具)

非常感謝您的參與!

Debian 最終將擁有 systemd,因此這是在使用 systemd 的 Linux 系統上執行此操作的方法(很多人已經這樣做了;您可能會考慮切換發行版)。

Systemd 可以自動為您處理保持服務活動;不需要其他工具。只需確保Restart=always在服務文件的[Service]部分中進行了設置。

# vi /etc/systemd/system/dtnd.service

[Service]
Restart=always
#...everything else...

對於更複雜的場景,還有其他幾個選項可用。

引用自:https://serverfault.com/questions/611525