将python程序做成一个服务

在linxu下会发现有很多的程序都是用service 管理,如nginx,mysql等等
由于项目部署在服务器上,然后每次pull之后,都需要重启(杀进程,再启动),才能生效,就想做成一个服务,方便每次重启,比如service XXX restart。

通过查资料,service都是通过写成shell脚本放在/etc/init.d/ 目录下进行管理的,同时能在目录下找到一些常用的服务。大概看了下,通过查资料写出了如下脚本

  • 代码如下:

    #!/bin/bash
    case "$1" in
    start)
        echo "start test-service
        cd /home/work/python-script
        nohup python /home/tanxu/work/python-script/start.py > /home/tanxu/log.txt 2>&1 &
    ;;
    restart)
        echo "kill test-service"
        ps -ef |grep python |grep /work/python-script/start.py |awk '{printf $2}'|xargs kill -9
        echo "start test-service"
        cd /home/work/python-script
        nohup python /home/work/python-script/start.py > /home/tanxu/log.txt 2>&1 &
    ;;
    stop)
        echo "kill test-service"
        ps -ef |grep python |grep /work/python-script/start.py |awk '{printf $2}'|xargs kill -9        
    ;;
    esac    
    

仅仅写完脚本放在 /etc/init.d/ 目录下是不够的
后面查资料发现可以通过chkconfig 来管理系统服务,但是我用的ubuntu,在centos下是可以的,在ubuntu下google上提到一个替代品sysv-rc-conf, apt-get install下就可以直接用了

添加一个服务: sudo update-rc.d ServiceName defaults

删除一个服务: sudo update-rc.d ServiceName remove

启动: sudo sysv-rc-conf 它可心配置各服务在各级别上的启动情况.

随时想启动某个服务, 可以这样: sudo /etc/init.d/ServiceName start

你可能感兴趣的:(将python程序做成一个服务)