Shell
Shell 腳本啟動子程序
免責聲明:我對 shell 腳本完全陌生,但在 PHP 和 Obj-C 等其他語言方面有相當多的經驗。
我正在編寫我的第一個守護程序腳本。以下是目標:
- 我希望它在後台執行
- 我希望它由包含啟動/停止/重啟命令的 init.d 腳本觸發
- 我希望循環中的每個程序觸發自己的子程序。
- 當由 init.d 腳本啟動的父程序被終止時,我希望子程序也終止。
從本質上講,我正在尋找在 apache、spamd、dovecot 等軟體中似乎很常見的相同行為。但是,根據我的研究,我還沒有找到一個單一的、簡單的答案來解決這個問題那種事情實現了。
任何幫助是極大的讚賞。
通過閱讀流程管理,您會發現很多非常好的資訊。
此外,請查看您現有的
init.d
腳本,並在編寫自己的腳本時將它們用作模型。請記住,儘管其中一些可能會有所改進。所以盡量不要養成任何壞習慣。您可能希望在 Bourne shell ( ) 而不是 Bash 中編寫腳本,但是您可以通過閱讀Bash FAQs和Bash Pitfalls
sh
學到很多適用於兩者的知識。
以下是步驟。
- 讓我們說你的腳本/opt/path/test。確保其可執行
- 確保腳本頂部的以下幾行,緊跟在 “#!/bin/bash” 之後
對於 RedHat 和表兄弟:
chkconfig: - 你想開始的序列號和級別“例如:- 91 35”
描述:你的 DAEMON 程序的描述
程序名稱:守護程序名稱
- 查看 /etc/init.d 路徑中的範例腳本並嘗試模仿您的啟動/停止/重啟過程…
$$ BIG STEP..not going into the details $$
- 以“&”結尾在腳本的後台執行你的腳本
例如:-“/opt/path/test &”
- 將腳本複製到 /etc/init.d 位置
- 不做 chkconfig
chkconfig –添加測試
chkconfig 測試
- 驗證
chkconfig –list | grep 測試
- 執行 /etc/init.d/test stop/start/restart.. 確保您的程序正在執行。