在Linux中將腳本做成系統服務


 

  有一些情況下,我們需要將某些腳本作為系統服務來運行。比如,在我使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM