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<stdio.h>
#include<stdlib.h>
int main()
{
intix = 0;
for(;;ix++)
{
printf("%d", ix);
sleep(1);
}
return0;
}
|
編譯test.c輸出爲test。
gcc -o test test.c
|
編寫一個腳本run,來執行test程序,以便supervise進行調用。
#!/bin/sh
echo "start test!"
./test
|
退到上級目錄,執行 supervisetest 看看效果:
cd ..
supervise test
|
執行killall -9 test,殺死test進程,你會發現supervise會重新啓動test進程。當然如果程序core dump,supervise同樣會重新啓動程序。