在测试我的脚本时。
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
环境知道活动显示. 使cron
GUI 感知,即告诉它程序应该使用什么显示(: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 作业并且您没有坐在桌面显示器前,那么后一种解决方案更有意义。
==
如果问题仍然存在,请告知我们。