Supervise是daemontools的一個工具,可以用來監控治理unix下的應用程序運行情況,在應用程序出現異常時,supervise可以重新啟動指定程序。本文簡單介紹一下supervise的安裝和使用。
一、 安裝
創建
/pacakage目錄(你可以創建任意目錄,這裡使用package只是為了保持與英文作者的一致):
mkdir -p /package
chmod 1755 /package
cd /package
下載daemontools-0.76.tar.gz到/package目錄,解壓該包。
tar xvzf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
編譯並安裝daemontools程序
package/install
二、使用supervise程序進行程序治理監控
supervise的執行命令是supervise Path ,其中Path 是指定路徑,可以是相對路徑,也可以是絕對路徑。在Path路徑下,必須有一個run的腳本,supervise調用的就是這個腳本,並監控治理該腳本中運行的程序。
supervise的一個重要的功能就是可以檢測出run腳本中執行的程序是否正常工作,若發現其已經死掉,supervise將會重新執行run腳本,重新啟動指定程序。這對於很多服務端程序來說是十分必要的,沒有人願意在深夜2點的時候從被窩裡爬出來重新啟動服務器。
下面是一個簡單使用supervise的例子。
三、例子
假定已經安裝好daemontools,建立一個test目錄,進入該目錄
mkdir test
cd test
在該目錄下寫一個簡單測試程序test.c:
#include
#include
int main()
{
int ix = 0;
for(;; ix )
{
printf("%d\n", ix);
sleep(1);
}
return 0;
}
編譯test.c輸出為test。
gcc -o test test.c
編寫一個腳本run,來執行test程序,以便supervise進行調用。
#!/bin/sh
echo "start test!"
./test
退到上級目錄,執行 supervise test 看看效果:
cd ..
supervise test
執行killall -9 test,殺死test進程,你會發現supervise會重新啟動test進程。當然假如程序core dump,supervise同樣會重新啟動程序。