无法从atd运行X11(图形)程序

时间:2014-11-05 21:30:08

标签: linux shell

我正在尝试使用Linux工具“at”安排执行shell脚本。 shell脚本(video.sh)如下所示:

#!/bin/sh
/usr/bin/vlc /home/x/video.mkv

“at”命令:

at -f /home/x/video.sh -t 201411052225

当时间到来时,没有任何反应。

我可以通过控制台或右键单击执行来执行shell脚本 - 执行。 VLC就像它应该的那样开始。如果我将脚本更改为例如像

这样简单的东西
#!/bin/sh
touch something.txt

它运作得很好。

任何想法,为什么“at”将无法正确执行启动图形程序的脚本?我怎样才能使它发挥作用?

2 个答案:

答案 0 :(得分:2)

您正在尝试在预定时间运行X命令(图形程序)。这将非常困难,而且非常脆弱,因为脚本无法访问X服务器。

至少,您需要将DISPLAY设置为正确的值,但即便如此,我怀疑您在使用X屏幕时会遇到授权问题。

尝试将其设置为:0.0并查看是否有效。但是,如果您已退出登录,或屏幕保护程序已开启,或其他任何事情......

(另外,将vlc&#st; sdout和stderr重定向到一个文件,这样你就可以看到出了什么问题。)

您最好的选择可能是尝试类似xuserrun的内容。

答案 1 :(得分:0)

我怀疑atd没有运行。你必须先启动atd守护进程(并设置像chiastic-security所说的DISPLAY变量);)

您可以使用

测试atd是否正在运行
pidof atd &>/dev/null && echo 'ATD started' || echo >&2 'ATD not started

你的vlc命令应该是:

DISPLAY=:0 /usr/bin/vlc /home/x/video.mkv

(默认显示)