我有一个 Ubuntu 14.04 系统,整天都在运行 Firefox。现在我想每天自动重启一次 Firefox,因此我创建了以下 shell 脚本:
#!/bin/sh
killall firefox
sleep 5
killall -9 firefox
sleep 2
/usr/bin/firefox -URL <...>
并设置 da cronjob 来调用脚本。但是它不起作用,我得到:
Error: no display specified
当我插入时
export DISPLAY=:0
我明白了
No protocol specified
No protocol specified
Error: cannot open display: :0
正确的做法是什么?
答案1
要通过另一个用户执行命令xserver
需要导出两个变量:
XAUTHORITY
和DISPLAY
。
首先,是DISPLAY
通过输入以下内容连接到用户:
w
假设用户“username”使用显示“1”,并且脚本应该在23:30运行,请升级你的crontab,如下所示:
30 23 *** export XAUTHORITY=/home/username/.Xauthority && export DISPLAY=:1 && /path/to/script 2> /tmp/error_cron.log
该行的最后一部分是保存所有错误/tmp/error_cron.log
答案2
首先确保使用 来编辑 crontabcrontab -e
而不是 /etc 下的某个文件(如/etc/cron.hourly
)。
然后你需要声明展示cronjob 本身的变量:
DISPLAY=:0 /path/to/your/script