菜鸟问题。
我在这里保存了一个可执行文件:
/home/pi/auroramon-1.07/src/auroramon
当我/home/pi/auroramon-1.07/src/auroramon
在命令行中输入时,程序就会运行。
我创建了一个 crontab,通过执行以下操作在启动时执行该程序:
crontab -e
并补充道:
@reboot /home/pi/auroramon-1.07/src/auroramon
重启后程序无法启动
当我跑步时:
$ sudo systemctl status cron.service
我得到:
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-09-16 16:24:59 BST; 4min 41s ago
Docs: man:cron(8)
Main PID: 351 (cron)
Tasks: 1 (limit: 3720)
CPU: 260ms
CGroup: /system.slice/cron.service
└─351 /usr/sbin/cron -f
Sep 16 16:24:59 raspberrypi systemd[1]: Started Regular background program processing daemon.
Sep 16 16:24:59 raspberrypi cron[351]: (CRON) INFO (pidfile fd = 3)
Sep 16 16:24:59 raspberrypi cron[351]: (CRON) INFO (Running @reboot jobs)
Sep 16 16:24:59 raspberrypi CRON[353]: pam_unix(cron:session): session opened for user ajandco(uid=1000) by (uid=0)
Sep 16 16:24:59 raspberrypi CRON[381]: (ajandco) CMD (/home/pi/auroramon-1.07/src/auroramon)
Sep 16 16:25:01 raspberrypi CRON[353]: pam_unix(cron:session): session closed for user ajandco
我想这是在告诉我 cron 服务正在运行,它执行了启动程序所需的命令,然后关闭了 cron 会话。
知道我做错了什么/为什么程序在重启时无法启动吗?
答案1
执行cron
了,但可能需要一些环境变量、PATH 等。您可以做的是创建如下 shell 脚本:
source /home/pi/.bash_profile
/home/pi/auroramon-1.07/src/auroramon
并改变cron
记录以指向该shell脚本。
答案2
谢谢 Romeo,我不得不换个方向。显然,cron @reboot 不能用于需要桌面 GUI 的应用程序,因为这些应用程序会在启动过程中过早地尝试启动您的程序。我改用 sudo nano /etc/xdg/lxsession/LXDE-pi/autostart,并将可执行文件的路径放在那里。