无法从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作业