如何在Raspberry PI上启动时始终运行Python3脚本,并带有链接的influxdb数据库



我有一个在 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(

  1. 打开 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文件。

  1. 创建单元文件

使用以下命令打开新的示例单元文件:

sudo nano /lib/systemd/system/sample.service
  1. 将以下文本添加到新文件中。记得更改 文件的 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"时

  1. 将文件的权限设置为 644 :
sudo chmod 644 /lib/systemd/system/sample.service
  1. 告诉 systemd 在引导序列期间使用以下方法启动它:
sudo systemctl daemon-reload
sudo systemctl enable sample.service
  1. 使用 重新启动 Pi
sudo reboot now

源: https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/#systemd

最新更新