我正在开发一个关于在 Beaglebone Black Rev. C 上启动时自动运行 pythonscript 的项目,运行 BeagleBoard.org Debian Buster IoT Image 2020-04-06。
我正在尝试遵循本教程的第一部分(我将描述下面的步骤): https://www.engineersgarage.com/autorun-python-script-on-beaglebone-black-boot-part-14-15/
教程中建议的步骤是:
- 通过 PC SSH 进入机器
- 使用命令安装 crontab
sudo apt-get install crontab
- 打开 crontab 并使用进行编辑
crontab –e
- 添加行
@reboot sudo python /PATH/TO/SCRIPT/PYTHONSCRIPT.py &
从教程中的屏幕截图来看,crontab 似乎应该安装在与 python 脚本所在的同一文件夹中。
以下是我尝试按照以下步骤操作时所经历的情况:
安装crontab,返回错误:
debian@beaglebone:/media/card$ cd /media/card/Tests
debian@beaglebone:/media/card/Tests$ sudo apt-get install crontab
[sudo] password for debian:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package crontab
etc文件夹中有一个crontab文件。当使用 列出已安装的应用程序时apt list --installed
,我在列表中找到以下行:
cron/oldstable,now 3.0pl1-134+deb10u1 armhf [installed]
另外,也许我应该cron
从 etc 文件夹创建作业?这样做会有什么缺点吗?
我的项目位于 SD 卡上的一个文件夹中,尽管我已经对其进行了设置以便可以对其进行写入。这会使操作变得复杂吗?
(如果我需要提供更多信息,请告诉我 - 我当然很乐意这样做。)
答案1
首先,我看到您的用户需要密码,因此使用sudo
incron
将涉及输入密码,这不是示例。最好只运行:
sudo su -
进而
crontab -e
并在里面输入
@reboot python /PATH/TO/SCRIPT/PYTHONSCRIPT.py
您不需要安装,cron
因为我 99.99% 确定它已经安装。如果没有,请检查上面有关包名称的注释。
关于运行python
脚本,明智的做法是设置您的用户环境,然后运行脚本。只需创建示例脚本(/PATH/TO/SCRIPT/runp.sh
例如)并在以下位置运行它cron
:
. /home/debian/.bashrc #or whatever is the path to your user
python /PATH/TO/SCRIPT/PYTHONSCRIPT.py
使脚本可执行并添加cron
以下内容:
@reboot /PATH/TO/SCRIPT/runp.sh
顺便说一句,您不需要将其添加到后台,因为脚本将从 cron 执行到(脚本的)结束
还有一点:请勿使用 SD 卡进行操作存储,他们是不可靠的。