我尝试在所需的时间运行指定的命令。我找到了at
这个,如果我运行它,它似乎可以正常工作:
echo "ls -al / > /home/florin/test.txt" | at 4:21am
但我想运行不同的东西:/usr/bin/firefox -new-tab http://google.ro
我尝试用我的操作调整第一行(在终端中运行它会打开一个新的 Firefox 选项卡http://google.ro,因此命令是正确的),但是使用at
,它不起作用:
echo "firefox -new-tab http://google.ro" | at 4:23am
该任务似乎已安排,但并未运行。运行上一行时,我收到来自的默认回复at
:
warning: commands will be executed using /bin/sh
我的 Firefox 命令是否应该以不同的方式运行sh
?有没有办法用 执行我的操作at
,或者其他方法?
答案1
问题在于 Firefox 是一个面向显示的程序,需要访问您的 X11 显示器。此信息通常在环境变量 DISPLAY 中可用,但当您从 at 运行 FF 时,情况并非如此。因此 FF 不知道将其图形输出放在哪里,因此立即退出。
如果您非常确定自己知道显示器的位置(没有双关语的意思,您可以运行任意数量的 X11 服务器),那么您只需将 DISPLAY 和适当的内容放在您要提供给 at 的命令的开头即可。例如,DISPLAY=0:0 firefox -new-tab http://google.ro
将在计算机上第一个本地 X11 显示器上运行的 FF 进程上打开一个新选项卡。