在 raspbian 上使用 crontab 自动启动 Python 脚本
Autostarting Python scripts on boot using crontab on rasbian
我是一个相当新的 python 程序员并且对 crontab 有点熟悉。我尝试做的可能不是最佳实践,但这是我最熟悉的。
我有一个 raspberry pi 和几个 python 脚本,我想 运行 启动并在后台保持 运行ning。它们是无限循环程序。它们经过测试并在 cmd 终端中工作,并且已经运行了几个星期。只是厌倦了手动启动它们。当 pi 经历电源循环时。
所以我做了一个 sudo crontab -e
并将这一行添加为我唯一的条目
@reboot /usr/bin/python3 /usr/bin/script.py &
如果我完全复制粘贴这个(减去@reboot)它会运行在命令行中成功。
我正在使用命令:
pgrep -af python
查看是否为运行ning。我通常会在那里看到两个脚本 运行ning,但不是我要添加的脚本。
我不确定哪里出了问题,也不确定解决问题的最佳方法。从我一直在做的研究来看,它似乎应该有效。
感谢您的帮助
凯文
您可能会发现,为 Raspberry Pi 启动时要启动的每个程序创建一个 systemd 服务文件会更容易。 systemd 附带了一些工具来帮助您调试配置。
这是一个示例 systemd 服务文件(位于 /etc/systemd/system/myscript.service
)的样子:
[Unit]
Description=My service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /usr/bin/script.py
WorkingDirectory=/home/pi/myscript
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
然后您可以使用以下命令在启动时启用该程序 运行:
sudo systemctl enable myscript.service
这些例子来自Raspberry Pi's documentation about systemd。但是因为 systemd 在 Linux 世界中被广泛使用,所以您还可以按照其他 Linux 发行版的文档和 Whosebug 答案进行操作。
我是一个相当新的 python 程序员并且对 crontab 有点熟悉。我尝试做的可能不是最佳实践,但这是我最熟悉的。
我有一个 raspberry pi 和几个 python 脚本,我想 运行 启动并在后台保持 运行ning。它们是无限循环程序。它们经过测试并在 cmd 终端中工作,并且已经运行了几个星期。只是厌倦了手动启动它们。当 pi 经历电源循环时。
所以我做了一个 sudo crontab -e
并将这一行添加为我唯一的条目
@reboot /usr/bin/python3 /usr/bin/script.py &
如果我完全复制粘贴这个(减去@reboot)它会运行在命令行中成功。
我正在使用命令:
pgrep -af python
查看是否为运行ning。我通常会在那里看到两个脚本 运行ning,但不是我要添加的脚本。
我不确定哪里出了问题,也不确定解决问题的最佳方法。从我一直在做的研究来看,它似乎应该有效。
感谢您的帮助 凯文
您可能会发现,为 Raspberry Pi 启动时要启动的每个程序创建一个 systemd 服务文件会更容易。 systemd 附带了一些工具来帮助您调试配置。
这是一个示例 systemd 服务文件(位于 /etc/systemd/system/myscript.service
)的样子:
[Unit]
Description=My service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /usr/bin/script.py
WorkingDirectory=/home/pi/myscript
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
然后您可以使用以下命令在启动时启用该程序 运行:
sudo systemctl enable myscript.service
这些例子来自Raspberry Pi's documentation about systemd。但是因为 systemd 在 Linux 世界中被广泛使用,所以您还可以按照其他 Linux 发行版的文档和 Whosebug 答案进行操作。