bash脚本注册到系统服务实现开机自启动

提示:本文中介绍如何把一个文件通过bash脚本注册到系统服务,实现开机自启动


前言

脚本后台运行有很多方式,可以通过shell,也可以通过nohup,但是通过shell运行方便注册到系统服务,这样脚本会开机自启动。

本文中第一节描述如何用shell让脚本在后台运行并开机自启动,第二节描述了如何使用nohup使脚本在后台运行,不会因为会话的终止而结束运行。

1.python脚本后台运行并且开机自启动

  1. 准备需要开机运行的python文件test1.py、test2.py
# test1.py
if __name__ == "__main__":
	while(1):
		print("i am test1.py, i am running")
# test2.py
if __name__ == "__main__":
	while(1):
		print("i am test2.py, i am running")

准备HelloTest.sh脚本如下:

#!/bin/bash
cd /home/xxx
/home/xxx/anaconda/envs/xxx/bin/python test1.py & /home/xxx/anaconda/envs/xxx/bin/python test2.py
  1. 修改脚本权限:
sudo chmod +x /home/xxx/test1.py
sudo chmod +x /home/xxx/test2.py
sudo chmod +x /home/xxxx/HelloTest.sh

测试编写的脚本文件是否有bug:

/usr/bin/bash /home/xxx/HelloTest.sh
  1. 向系统注册服务,在目录/etc/systemd/system下添加HelloTest.service:sudo vim HelloTest.service ,内容如下:
[Unit]
Description=svc-test
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=no  //退出后不会重启,always表示退出后会一直重启
RestartSec=1
User=root
ExecStart=/usr/bin/bash /home/xxxx/HelloTest.sh  // 必须为绝对路径

[Install]
WantedBy=multi-user.target
  1. 重载系统服务
sudo systemctl daemon-reload
  1. 将服务注册为开机启动
sudo systemctl enable HelloTest.service
  1. 重启设备验证py文件是否在运行
sudo reboot
ps  -aux  |  grep  python #查看正在运行的python代码
  1. 如果更换了脚本内容,需要重启服务
sudo systemctl start HelloTest #启动服务
sudo systemctl stop HelloTest #停止服务
sudo systemctl restart HelloTest #重启服务
sudo systemctl status HelloTest #查看服务状态

2.python脚本输出日志文件

  1. 后台启动python脚本,并输出日志到p_log.log文件中
[xxx@single xxx]# nohup python p_test.py > p_log.log 2>&1 &
  1. 可以使用 >dev/null 2>error.log 只记录程序的异常日志
[xxx@single xxx]# nohup python p_test.py >/dev/null 2>p_error.log 2>&1 &
  1. nohup执行不打印日志
[xxx@single xxx]# nohup python p_test.py >dev/null 2>&1 & 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值