我很想了解为什么从终端命令行启动脚本时脚本可以正常运行,但当使用“at”命令安排脚本时,脚本中的某些命令似乎不会运行(以及如何在安排时使其正确运行的建议)。该脚本(名为“open_browser.sh”)旨在按以下方式在预定时间打开浏览器:
#!bin/bash
#script filename: "~/Desktop/open_browser.sh"
#write to log file to verify script is running
echo "Starting open_browser.sh"
#set URL for browser
STRING = "https://news.google.com/"
#open browser - try with Firefox and Chromium
#firefox $STRING
chromium-browser $STRING
#write to log file to verify script finishes
echo "Ending open_browser.sh"
#end of script
当我使用“./~/Desktop/open_browser.sh > log_file”从终端命令行运行脚本时,脚本会在可见(前台)窗口中打开所选浏览器并将 echo 语句写入日志文件。当我使用“at”命令安排脚本时,它会打开日志文件并写入所有 echo 消息,但不会打开任何可见的浏览器窗口。我使用“at”安排脚本如下:
$ at now + 1 min
at> ./~/Desktop/open_browser.sh > log_file
我将非常感激任何关于为什么该脚本在从命令行执行时会打开浏览器但在使用“at”命令执行时似乎不会打开的见解。
有关更多信息,我的安装有默认的“at”拒绝文件(/etc/at.deny
)。我没有看到任何 at.allow 文件。
提前致谢。
答案1
Jos 的回答是正确的解决方案。“您的命令 chromium-browser 在 shell 中运行,但需要图形显示。您没有指定一个,但您可能有很多。您的默认显示称为 :0。您还需要指定每个可执行文件的完整路径。尝试用 DISPLAY=:0 /usr/bin/chromium-browser $string 替换命令。”