Crontab 查询-不会执行程序

Crontab 查询-不会执行程序

菜鸟问题。

我在这里保存了一个可执行文件:

/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,并将可执行文件的路径放在那里。

相关内容