centos7.8 开机自动启动python 程序的方法

12 篇文章 0 订阅
5 篇文章 0 订阅

写了一个python 的服务程序,放在服务器上,如果服务器重启动那么就要人上去重新开程序,从运维解度来说太麻烦,于是想要做一个自动启动的程序,有两种方法,启动python应用时有个小坑,一定要全路径写上python.

我的py代码叫 start_server.py 放在/opt/pic/centos_readhead_detection/release/ 大家可以根据自己情况改写

方法一:

打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容

注/etc/rc.local是/etc/rc.d/rc.local的软链接,有的机器可能没有,就直接编辑/etc/rc.d/rc.local即可
iptables -I INPUT -p TCP --dport 5000 -j ACCEPT
nohup /root/anaconda3/bin/python /opt/pic/centos_readhead_detection/release/start_server.py >  start_server_log.txt &

保存后

在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.local

切记一定要加上python 的全路径,不然没有任何反应。

或者自己写一个.sh文件 

linux_run_server.sh
iptables -I INPUT -p TCP --dport 5000 -j ACCEPT
nohup /root/anaconda3/bin/python /opt/pic/centos_readhead_detection/release/start_server.py > log.txt &

赋予脚本可执行权限(/opt/pic/centos_readhead_detection/release/start_server.py 是你的脚本路径)
chmod +x /opt/pic/centos_readhead_detection/release/start_server.py

打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容

/opt/pic/centos_readhead_detection/release/linux_run_server.sh

切记一定要加上python 的全路径,不然没有任何反应。

切记一定要加上python 的全路径,不然没有任何反应。

切记一定要加上python 的全路径,不然没有任何反应。

注:该方法

1)rc.local脚本在操作系统启动时只执行一次。

2)环境变量的问题。

在rc.local脚本中执行程序时是没有环境变量的,如果您执行的程序需要环境变量,可以在脚本中设置环境变量,比如我们需要用到gpu的库,这时如果没加环境变量就会出错,还要加入gpu库的环境变量。

export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:/usr/local/cuda-10.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-10.0
export PATH=$CUDA_HOME/bin:$PATH
nohup /root/anaconda3/bin/python /opt/image_class_install/centos_readhead_detection/release/start_server.py >  /opt/image_class_install/centos_readhead_detection/release/start_server_log.txt &

方法二:

以服务启动python程序

用文本编辑器生成 centos_image_classification.servics文件

并放入/etc/systemd/system/目录下

[Unit]
Description=imageclassification
After=multi-user.target

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/root/anaconda3/bin/python /opt/pic/centos_readhead_detection/release/start_server.py
WorkingDirectory=/opt/pic/centos_readhead_detection/release/
Restart=always

[Install]
WantedBy=multi-user.target 

需要注意的是,ExecStart后的python和程序所在路径必须是绝对路径

切记一定要加上python 的全路径,不然没有任何反应。

centos_image_classification.servics放到指定位置后,需要更改该文件权限,

使用命令chmod 644 centos_image_classification.servics完成。
命令行输入systemctl daemon-reload完成服务重载。
输入命令systemctl start centos_image_classification.servics和systemctl stop centos_image_classification.servics,查看程序是否正常启停。
根据实际需要,输入systemctl enable centos_image_classification.servics,将服务设为开机自启动

输入systemctl disable centos_image_classification.servics,将服务设为开机自启动

切记一定要加上python 的全路径,不然没有任何反应。

切记一定要加上python 的全路径,不然没有任何反应。

切记一定要加上python 的全路径,不然没有任何反应。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值