我正在尝试使用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”将无法正确执行启动图形程序的脚本?我怎样才能使它发挥作用?
答案 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
(默认显示)