Cron 任务。每隔几分钟运行一次,但设置为其他时间时则不然

Cron 任务。每隔几分钟运行一次,但设置为其他时间时则不然

在测试我的脚本时。

cronjob 应该每 2 分钟通过浏览器运行一次脚本。因此,我有以下 cron:

*/2 * * * * wget -O http://192.10.10.1/mypage/myscript.php

在我将 cron 改为以下形式之前,它运行了几次:

0 1 * * * wget -O http://192.10.10.1/mypage/myscript.php

每天凌晨 1 点运行该脚本,但是它不起作用。

我有点困惑,为什么第一个成功运行了我的脚本,而第二个却没有。我做错了什么?或者,凌晨 1 点运行它不起作用的原因可能是什么?

答案1

正如上面的评论所指出的那样,最明显的 pbm 是您没有-O正确使用该选项。

在终端中查找 man wget。以下是摘录:

-O file
--output-document=file
文档不会写入相应的文件,但会全部连接在一起并写入“文件”。如果-用作文件,文档将打印到标准输出 (stdout),禁用链接转换。使用./-打印到名为的文件-

使用-O类似于 shell 重定向:
wget -O file http://foo旨在像 一样工作wget -O - http://foo > file;其中“文件”将立即被截断,所有下载的内容都将写入那里。

如果,作为非 root 用户,运行 GUI 命令或直接将输出发送到stdout 在已经运行的 X 会话中,确保年cron环境知道活动显示. 使cronGUI 感知,即告诉它程序应该使用什么显示(:0在桌面环境中是默认的)

0 1 * * * export DISPLAY=:0; XAUTHORITY=~/.Xauthority /usr/bin/wget -O - http://192.10.10.1/mypage/myscript.php

或者,如果你想设置 DISPLAY 环境变量仅有的对于特定的 cmd:

0 1 * * * DISPLAY=:0 XAUTHORITY=~/.Xauthority /usr/bin/wget -O - http://192.10.10.1/mypage/myscript.php

或者,如果将输出重定向到文件以供以后查看,则指定正确显示的需要就消失了,因为实际上没有任何内容转到stdout

0 1 * * *  /usr/bin/wget -O <filename> http://192.10.10.1/mypage/myscript.php

如果您在凌晨 1 点运行您的 cron 作业并且您没有坐在桌面显示器前,那么后一种解决方案更有意义。

==
如果问题仍然存在,请告知我们。

相关内容