无法从 cron 运行 GUI 应用程序

eva*_*ine 7 xorg cron

在 Ubuntu 12.04 笔记本上执行“sudo su -”后,我执行了“crontab -e”,并添加了以下内容:

* * * * * env DISPLAY=:0.0 /usr/bin/gnome-calculator
Run Code Online (Sandbox Code Playgroud)

等了几分钟。什么都没有发生。我没有任何外部监视器,如果我在终端中运行此命令“env DISPLAY=:0.0 /usr/bin/gnome-calculator”,它就可以正常工作。但不是来自 cron。为什么?

系统日志仅包含以下内容:

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 )
Run Code Online (Sandbox Code Playgroud)

我已经尝试过“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] 
Run Code Online (Sandbox Code Playgroud)

因此,askubunut 上另一个类似问题的解决方案没有奏效。

Wil*_*ilf 5

我认为这是问题:

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

将其设置为此似乎有效:

* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
Run Code Online (Sandbox Code Playgroud)

env DISPLAY=:0告诉它出口到显示器:0-你可以找到你下TTY在输出w

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

* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
Run Code Online (Sandbox Code Playgroud)

如果您不想crontab -e使用 编辑它vim,请事先运行它以使用nano

export EDITOR=nano ; export VISUAL=nano
Run Code Online (Sandbox Code Playgroud)

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

如果它仍然不起作用,请尝试运行以下命令:

sudo bash -c "echo $(whoami) > /etc/cron.allow"
Run Code Online (Sandbox Code Playgroud)

而且,如果您不想处理文本文件,则可以gnome-schedule改用。

参考:


fkr*_*iem 5

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

首先将它放在根 crontab 中可能不是一个好主意。你有没有试过把它放在你的用户 crontab 上?