从crontab执行sh脚本问题

从crontab执行sh脚本问题

我使用用户“pi”配置 crontab,每 30 分钟执行一次 sh 脚本。

在终端中:crontab -u pi -e我添加了这一行:*/30 * * * * /bin/sh /home/pi/test.sh

在脚本 test.sh 中有三行:

#!/bin/sh
/usr/bin/transmission-gtk
echo "done" > /home/pi/startup/result.txt

结果,每 30 分钟 result.txt 就会更新一次,无论如何,transmission-gtk 永远不会出现。也就是说,test.sh 中只有 1 个(共 2 个)命令有效。

但是当我在终端中手动执行 /home/pi/test.sh 时,一切正常。 test.txt 已更新并且 Transmission-gtk 显示。

我知道 crontab 中的所有内容都应该用绝对路径编写,并且我很确定 Transmission-gtk 位于 /usr/bin 中。当然,从上面我们知道用户“pi”有执行test.sh和transmission-gtk的权限。

有人能说出为什么会发生这种情况吗?

答案1

显然, Transmission-gtk 是您想要启动的图形程序?在这种情况下,您需要告诉 cron 在哪个显示器上启动它。在 crontab 中的行之前尝试此操作(假设您使用的是 display 0):

export DISPLAY=:0

您的邮件中也应该有错误消息(可能是 /var/mail/username)。这会告诉我们更多关于这个问题的信息。

相关内容