Cron 可以工作,但在 chrome 中打开网页的计划任务却不行

Cron 可以工作,但在 chrome 中打开网页的计划任务却不行

更新开始

  1. 我的一个朋友刚刚回答了这个问题。我需要等export DISPLAY=:0 && <my GUI dependent command here>他在这里发布答案。
  2. 我也尝试过/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &不使用这个&。仍然失败。直接在命令行上成功。
  3. 我的机器上没有/var/log/cron文件。附加问题:我该如何获取它?

更新结束

我有一份 Google Doc,需要每天多次定期更新。无法通过编程预测或确定特定更新的内容。因此,我最好的解决方案是让特定的 Google Doc 页面以固定间隔自动打开,然后我手动将数据添加到其中。

现在,问题是直接在命令行上运行的方法在 crontab 中使用时不起作用。以下是我尝试过的方法(仅使用 2 分钟间隔进行测试)-

*/2 * * * * date >> /tmp/crontest
*/2 * * * * /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &
  1. 如果我cat /tmp/crontest,我会看到每隔 2 分钟添加一次时间戳
  2. 如果我只是/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL在 shell 上尝试,它会按预期工作
  3. 但是它并PARTICULAR_GOOGLE_DOC_URL没有像应该的那样每隔 2 分钟在我的 chrome 中打开一次。(再次说明:我使用 2 分钟间隔只是为了测试)

我做错了什么?我该如何解决这个问题?还有其他方法可以实现我需要的功能吗?

提前致谢。

答案1

使用包装器编辑 crontab export DISPLAY

2 * * * * export DISPLAY=:0 && firefox %u

这将打开一个空的 Firefox 标签,您可以使用您最喜欢的 URL。

答案2

cron用于命令行作业,并使用环境变量非常有限-只是HOME,,,和。LOGNAMEPATHSHELL

至少chrome需要DISPLAY设置。如果没有其他变量(例如DBUS相关变量),它也可能会不高兴。env在终端中运行以查看当前环境。

答案3

cronjob 所获得的环境非常有限。例如,您无法获得打开 chrome 所需的 DISPLAY 变量。

将命令包装在脚本中

#!/bin/sh
export DISPLAY=:0
/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL

不确定是否需要更多变量才能使其工作。我制作了一个类似的脚本,该konsole脚本在 cron 中启动(KDE 中的终端)。

答案4

您可以简单地像这样添加设置。

2 * * * * export DISPLAY=:0 && ,<do what ever you want.>

如果这不起作用,并且您没有找到 google-chrome 或 firefox,只需在您的 shell BASH、FISH、ZSH 等中运行以下命令即可获取 PATH。

echo $PATH

无论上述命令的结果是什么,只需将其复制并粘贴到你的 cronjob 上面,就像这样,

PATH=<result from cmd>

这样做的原因是,您可能从 snapd 等安装相应的内容,这就是为什么路径未定义的原因,因为您是从单独的资源下载的。

相关内容