无法从cron运行GUI应用程序

在Ubuntu 12.04笔记本上做了“sudo su – ”后我做了一个“crontab -e”,补充说:

* * * * * env DISPLAY=:0.0 /usr/bin/gnome-calculator 

等了几分钟。 没啥事儿。 我没有任何外部显示器,如果我在终端中运行此命令“env DISPLAY =:0.0 / usr / bin / gnome-calculator”,它就可以了。 但不是来自cron。 为什么?

syslog只包含这个:

 May 24 14:37:01 localhost cron[1227]: (root) RELOAD (crontabs/root) May 24 14:37:01 localhost CRON[16432]: (root) CMD (env DISPLAY=:0.0 /usr/bin/gnome-calculator ) 

我已经尝试了“xhost + localhost”。

 [root@NOTEBOOK /var/log] xhost access control enabled, only authorized clients can connect INET:localhost.localdomain SI:localuser:USERNAME [root@NOTEBOOK /var/log] 

所以在askubunut上另一个问题的解决方案没有奏效。

根据OP的要求重写为答案。

将它放在root crontab中并不是一个好主意。 你试过把它放在你的用户crontab上吗?

我认为这是问题所在:

* * * * * env DISPLAY=:0.0 /usr/bin/gnome-calculator

设置为此似乎工作:

 * * * * * env DISPLAY=:0 /usr/bin/gnome-calculator 

env DISPLAY=:0告诉它要导出到显示:0 – 你可以在w的输出中在TTY下找到你的

然后以您希望运行应用程序的普通用户身份运行crontab -e ,并粘贴到以下行:

 * * * * * env DISPLAY=:0 /usr/bin/gnome-calculator 

如果你不想让crontab -e使用vim编辑它,请事先运行它以使用nano代替:

 export EDITOR=nano ; export VISUAL=nano 

请注意,星号表示它将每分钟,每小时和每天运行,因此除非您将其删除,否则它可能会非常烦人。

如果仍然无效,请尝试运行此命令:

 sudo bash -c "echo $(whoami) > /etc/cron.allow" 

而且,如果您不想使用文本文件,则可以使用gnome-schedule

参考文献:

如果当前x用户不是root用户,则在root下运行的Cron无权显示。

我们只需要将root用户添加到x,您可以在登录时使用启动脚本执行此操作

 xhost local:root 

出于测试目的,我们可以在当前用户下运行命令并重新启动根cron作业