有一些情況下,我們需要將某些腳本作為系統服務來運行。比如,在我使用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
#chkconfig --add myservice
這樣,在2345的運行級別下,myservice就會開機自動開啟服務了,我們在任意目錄下面都可以直接運行腳本 service myservice start