我有一个在 Debian 10 Buster 上的 Raspberry Pi 上运行的 python3 脚本,我可以在终端窗口中运行,但不能在启动时运行?
我在/etc/profile 中的文件末尾使用以下代码行
nohup python3 statlogger.py -db=stat_logger_db -sn=test
虽然当我手动运行代码时,代码行在终端窗口中工作,但它在启动 pi 时不起作用
我也试过
nohup python3 statlogger.py & -db=stat_logger_db -sn=test
python代码需要在启动时运行,然后在pi通电时连续运行,任何想法
我花了大约 1 天的时间,针对 Linux/raspberry 启动运行脚本问题测试 4 个解决方案。那么这是解决方案(我选择 crontab(
- 打开 crontab (使用 linux@crontab -e -> 不使用 sudo crontab -e ...将来可能会错误地访问脚本等(
pi@ crontab -e
然后选择纳米并像这样编辑...这很棘手,测试后发现的ı可能超过10倍:
@reboot cd /home/pi/beetool && /usr/bin/python3 run.py &
我的代码在/home/pi/beetool 下等着我。如果不更改发生错误的目录。
我的代码使用无限循环,所以我必须以"&"结束,如上所示。
所以我希望这也对某人有所帮助...
我分享了: 在树莓启动时运行终端命令
我发现在启动时在Raspberry Pi上运行程序的最佳方法是使用systemd文件。
- 创建单元文件
使用以下命令打开新的示例单元文件:
sudo nano /lib/systemd/system/sample.service
- 将以下文本添加到新文件中。记得更改 文件的 python 文件路径(:
[Unit]
Description=My Sample Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python /home/pi/sample.py
[Install]
WantedBy=multi-user.target
使用"CTRL+E"保存并退出,然后在要求保存"Y"和"Enter"时
- 将文件的权限设置为 644 :
sudo chmod 644 /lib/systemd/system/sample.service
- 告诉 systemd 在引导序列期间使用以下方法启动它:
sudo systemctl daemon-reload
sudo systemctl enable sample.service
- 使用 重新启动 Pi
sudo reboot now
源: https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/#systemd