有一些情況下,我們需要將某些腳本作為系統服務來運行。比如,在我使用workerman框架開發php程序時,需要使用管理員權限來運行,而且需要開機自行啟動程序提供服務。這個時候將啟動程序寫成服務就可以很方便使用了,而且在使用時也可以直接sudo service xxxx start,不需要手動敲出來復雜的文件路徑。(在不使用小技巧的時候可能要這樣做: sudo php /path/to/file start -d)生命苦短,多用些小技巧可能提高我們生命的效率,呵呵扯遠了。我們直接來看如何自己寫一個,並將之作為系統服務,且開機自動運行。
首先,作為服務我們通常需要以下的功能:{start|stop|restart|status},接下來我就使用一段簡單的bash腳本做一個演示:
1.編輯我們的腳本文件
vim myservice
腳本內容:
#!/bin/bash
#
#description: a demo
#chkconfig:2345 88 77
lockfile=/var/lock/subsys/myservice
touch $lockfile
# start
start(){
if [ -e $lockfile ] ;then
echo "Service is already running....."
return 5
else
touch $lockfile
echo "Service start ..."
return 0
fi
}
#stop
stop(){
if [ -e $lockfile ] ; then
rm -f $lockfile
echo "Service is stoped "
return 0
else
echo "Service is not run "
return 5
fi
}
#restart
restart(){
stop
start
}
usage(){
echo "Usage:{start|stop|restart|status}"
}
status(){
if [ -e $lockfile ];then
echo "Service is running .."
return 0
else
echo "Service is stop "
return 0
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
usage
exit 7
;;
esac
之后,我們將腳本復制至/etc/init.d文件夾中
#cp myservice /etc/init.d
將我們的myservice.sh添加至chkconfig
#chkcofig --add myservice
這樣,在2345的運行級別下,myservice就會開機自動開啟服務了,我們在任意目錄下面都可以直接運行腳本 service myservice start
