在 Ubuntu 12.04 笔记本上执行“sudo su -”后,我执行了“crontab -e”,添加了以下内容:
* * * * * env DISPLAY=:0.0 /usr/bin/gnome-calculator
然后等了几分钟。什么都没发生。我没有任何外接显示器,如果我在终端中运行此命令“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 )
我已经尝试过“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 上另一个类似问题的解决方案不起作用。
答案1
我认为问题是这样的:
* * * * * env
DISPLAY=:0.0
/usr/bin/gnome-calculator
将其设置为这个似乎有效:
* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
告诉env DISPLAY=:0
它导出到显示器:0
- 你可以TTY
在输出中找到w
然后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
反而。
参考:
答案2
根据 OP 的要求重写为答案。
首先,将其放入根 crontab 中可能不是一个好主意。您是否尝试过将其放入用户 crontab 中?
答案3
如果当前 x 用户不是 root,则在 root 下运行的 Cron 无权显示。
我们只需要将 root 用户添加到 x,您可以在登录时使用启动脚本执行此操作
xhost local:root
为了测试目的,我们可以在当前用户下运行该命令并重新启动 root cron 作业