通过 crontab 启动 X11 应用程序 (Firefox)

通过 crontab 启动 X11 应用程序 (Firefox)

我想写一个每分钟打开Firefox的crontab(只是为了测试它,我知道它没有任何意义)。我的问题是,即使 crontab 处于活动状态,也没有任何反应。这就是我的 crontab 的样子:

SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

知道为什么它不起作用吗?

答案1

export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

只要看看上面的 cron 命令,我就明白为什么它不起作用了。该命令的用法export

export name[=word]...

在 POSIX shell 中,后面的其余单词export DISPLAY=:0.0将被视为应导出到环境的其他 shell 变量,而不是要运行的命令。 POSIX(2018 年版第 7 期)还规定姓名应该

仅由可移植字符集中的下划线、数字和字母组成的单词。

这意味着 shell 变量名称不能包含诸如 之类的字符,/因此尝试将其包含/usr/bin/firefox在要导出的变量名称列表中将引发错误,并显示诸如not a valid identifier或 之类的消息bad variable name


另外,该xhost命令的使用不正确。自行运行xhost以查看是否需要将您的用户帐户添加为允许的用户。这应该只需要运行一次,并且不应该由 cron 安排。


除非有其他机制阻止程序连接到 X 显示服务器,否则上面的行可以简单地替换为:

DISPLAY=:0.0
* * * * * /usr/bin/firefox

这应该每分钟启动一个新的 Firefox 窗口。也无需指定SHELL环境变量 - 并且由于您指定了可执行文件的完整路径firefox,因此也无需设置该PATH变量。


也可以看看:POSIX 规范export

相关内容