将shell脚本转为python_shell脚本将python脚本加入Linux系统服务

用shell脚本将Python脚本做成系统服务随着系统的启动而启动,同时又可以通过“service”命令进行管理(start|stop|restart)

新建 FuzzyMatching.sh 脚本文件,写入以下代码:

#!/bin/bash

### BEGIN INIT INFO

# Provides: PythonFuzzyMatching

# Required-Start: $local_fs $network

# Required-Stop: $local_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: PythonFuzzyMatching service

# Description: PythonFuzzyMatching service

### END INIT INFO

filepath="/home/ldh/work_space/PythonFuzzyMatching/PythonFuzzyMatching.py"

start(){

nohup python3 $filepath>/dev/null 2>&1 &

echo 'FuzzyMatching service OK'

}

stop(){

serverpid=`ps -aux|grep "$filepath"|grep -v grep|awk '{print $2}'`

kill -9 $serverpid

echo 'FuzzyMatching stop OK'

}

restart(){

stop

echo 'FuzzyMatching stop OK'

start

echo 'FuzzyMatching service OK'

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

*)

start

esac

注:& 的意思是在后台运行,什么意思呢?意思是说,当你在执行 ./xxx.sh & 的时候,即使你用ctrl C,那么xxx.sh照样运行(因为对SIGINT信号免疫)。但是要注意,如果你直接关掉shell后,那么,xxx.sh进程同样消失。可见,&的后台并不硬(因为对SIGHUP信号不免疫)。

nohup的意思是忽略SIGHUP信号,所以当运行nohup ./xxx.sh的时候,关闭shell,那么xxx.sh进程还是存在的(对SIGHUP信号免疫)。但是,要注意,如果你直接在shell中用Ctrl C,那么,xxx.sh进程也是会消失的(因为对SIGINT信号不免疫)。

所以,&和nohup没有半毛钱的关系,要让进程真正不受shell中Ctrl C和shell关闭的影响,那该怎么办呢?那就用nohup ./xxx.sh &吧,两全其美。

(1)舍弃标准输出,将错误输出到log文件中

nohup ./xxx.sh >/dev/null 2>log &

(2)如果错误信息也不想要的话:

nohup ./xxx.sh >/dev/null 2>&1 &

以上代码文件建立之后,运行以下命令给脚本添加可执行权限:

sudo chmod +x FuzzyMatching.sh

脚本启动命令:

./FuzzyMatching.sh start # 启动脚本

./FuzzyMatching.sh stop # 停止脚本

./FuzzyMatching.sh restart # 重启脚本

将脚本复制到init.d文件夹下,这个目录里放系统服务脚本文件:

cp FuzzyMatching.sh /etc/init.d

将FuzzyMatching.sh添加到系统服务清单内:

cd /etc/init.d/

sudo update-rc.d FuzzyMatching.sh defaults 90 # 这里90表明一个优先级,越高表示执行的越晚

验证是否添加成功:

sudo service --status-all

输入以上命令查看FuzzyMatching.sh是否在系统服务清单内。

最后重启验证Python脚本是否随系统启动而启动!

若是想删除该服务,命令如下:

sudo update-rc.d FuzzyMatching.sh remove

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值