Shell

Shell 腳本啟動子程序

  • June 6, 2012

免責聲明:我對 shell 腳本完全陌生,但在 PHP 和 Obj-C 等其他語言方面有相當多的經驗。

我正在編寫我的第一個守護程序腳本。以下是目標:

  • 我希望它在後台執行
  • 我希望它由包含啟動/停止/重啟命令的 init.d 腳本觸發
  • 我希望循環中的每個程序觸發自己的子程序。
  • 當由 init.d 腳本啟動的父程序被終止時,我希望子程序也終止。

從本質上講,我正在尋找在 apache、spamd、dovecot 等軟體中似乎很常見的相同行為。但是,根據我的研究,我還沒有找到一個單一的、簡單的答案來解決這個問題那種事情實現了。

任何幫助是極大的讚賞。

通過閱讀流程管理,您會發現很多非常好的資訊。

此外,請查看您現有的init.d腳本,並在編寫自己的腳本時將它們用作模型。請記住,儘管其中一些可能會有所改進。所以盡量不要養成任何壞習慣。

您可能希望在 Bourne shell ( ) 而不是 Bash 中編寫腳本,但是您可以通過閱讀Bash FAQsBash Pitfallssh學到很多適用於兩者的知識。

以下是步驟。

  • 讓我們說你的腳本/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.. 確保您的程序正在執行。

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