Freebsd

RC 腳本,在某些條件下將自己置於前台

  • August 6, 2015

我有一個要求使用者輸入的簡單腳本(

$$ y/N $$) 然後對其進行操作。我編寫了一個守護程序rc包裝器,以便它可以從啟動時執行。我想知道是否可以讓守護程序/腳本詢問使用者輸入,然後將其自身置於後台,直到再次詢問時,它才會將其置於前台?這可能嗎?這實用嗎?fg/bg 控制項應該託管在哪裡?在rc.d腳本中還是在主腳本中?

不要為了一項服務而阻止啟動過程,除非它是一些絕對關鍵的服務,否則機器將無法使用(例如,輸入密碼來解密 OS 磁碟)。

如果某些服務需要手動干預才能啟動(應盡可能避免這種情況,除非您喜歡在凌晨 3 點被尋呼,因為由於 UPS 故障導致服務在計劃外重新啟動後沒有返回),請確保它沒有t 阻止啟動。把需要做的事情放在後台。

要允許使用者與服務互動,請在Screen(或 tmux,如果您更喜歡 tmux)中執行它以創建一個偽終端,服務將在其中讀取輸入並寫入輸出。

screen -d -m -S myservice /usr/local/sbin/myservice --interactive-start

要連接到 Screen 創建的終端,請使用

screen -r -d -S myservice

您可以從任何地方執行此操作:在控制台上、通過 SSH 等。您需要以screen同一使用者身份執行該命令兩次。要從 Screen 會話中分離並使其在後台執行,請按Ctrl+ A D

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