在很多应用场景下,需要在Linux掉电重启的时候自动重启python脚本,还不能解锁屏幕。那么就只好将python程序当做服务去运行
步骤1
在指定位置创建文件
cd /etc/systemd/user/
sudo vim 服务名称.service
进入用户文件夹去创建,没有vim就用vi是一样的。之所以不在系统文件夹下创建是因为想让创建的服务是用户服务,这样我们可以通过进程监视进行运行控制。
步骤2
在.service中输入代码
ExecStart是脚本的执行路径,后面的&是后台运行脚本,避免出现python循环导致开机失败
/for example start//
[Unit]
Description=名称
After=network.target
[Service]
Type=forking
ExecStart=/bin/bash -c "脚本路径/run.sh &"
PrivateTmp=true
[Install]
WantedBy=default.target
/for example end//
步骤3
使能并开启服务
systemctl --user enable 服务名称.service
systemctl --user start 服务名称.service
步骤4
运行用户服务命令,保证用户不登录时也会运行服务
loginctl enable-linger $user(用户名)
注意
1有时候脚本文件写完不执行,报错,先看看脚本是不是bash
修改默认bash运行
执行ls -l /bin/sh命令,若得到结果/bin/sh -> dash,则说明Shell的解释器为dash。
执行sudo dpkg-reconfigure dash命令,然后选择no。
2服务的运行需要确保python这个程序在运行的时候是不会停止的,如果python运行结束了,那么服务也就结束啦。
比如
我一次运行7个python脚本,前六个我不看返回,让他后台运行,但是第七个我就要
让他获得执行后返回结果,那么因为程序一直运行他不能获得返回后结果
程序服务就可以一直运行,又是一个小细节
bash /路径/run.sh &
bash /路径/run.sh &
bash /路径/run.sh &
bash /路径/run.sh &
bash /路径/run.sh &
bash /路径run.sh &
bash /路径/run.sh