程序随系统开机自启动的方法有很多种, 这里介绍一种简单且常用的, 通过系统的systemd服务进行自启动。
第一步: 新建一个.service文件
sudo vim /etc/systemd/system/myservice.service
[Unit]
Description=My Service
#After=network.target
[Service]
Type=simple
ExecStart=you_path/run.sh
WorkingDirectory=you_path
User=leo038
Group=leo038
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
其中run.sh是你要运行的程序的入口脚本, 也可以是其他可执行的命令。
python3 -u my_test.py > test.log 2>&1
注意:systemd 只会跟踪脚本的主进程,脚本用 & 后主进程很快退出,systemd 认为服务已结束,后台进程变成“孤儿”,自启动就失效了
所以如果你的shell 脚本写成下面这样:
python3 -u my_test.py > test.log 2>&1 &
你会发现程序已启动就立马结束了, 没有按预期的一直在后台运行。 切记这一点。 如果要自启动, 就不要把程序放在后台。
第二步: 设置自启动
sudo systemctl daemon-reload
sudo systemctl enable myservice
执行完之后可以启动一下进行验证:
sudo systemctl start myservice
第三步:查看日志
如果你没有把日志存文件, 那么通过自启动运行后, 程序就静默了, 看不到输出, 很不方便定位。 别担心, systemctl 工具提供了日志工具可以查看:
journalctl -u my_test.service
505

被折叠的 条评论
为什么被折叠?



