2016-09-20 79 views
2

我有一个TP链接射手C7与15.05混沌Calmer在家里。wget没有通过cronjob执行,但直接在控制台

我想让cronjob工作。它看起来像这样:

* * * * * /usr/bin/wget --spider \"https://subdomain.domain.net/update.php\" >/dev/null 2>&1

不幸的是这并没有得到执行。我也试过做* * * * wget -O - https://subdomain.domain.net/update.php同样的结果。 如果通过控制台直接输入,则两个版本都会正确执行。

最后的logread

Tue Sep 20 11:55:00 2016 cron.info crond[10317]: USER xxx pid 16697 cmd /usr/bin/wget --spider \"https://subdomain.domain.net/update.php\" >/dev/null 2>&1

线看起来是正确的?任何想法为什么它不通过cronjob执行?

+0

除去引号前的讨厌反斜杠怎么样?或者也许整个\“一共? – gsl

回答

2

您的cron作业确实运行,但是wget会遇到错误。

也获取日志,i.s.o.重定向到/ dev/null,你不能使用/out.txt,因为cron将不会对/有写访问权限,/tmp/wget.txt会做的很好。

wget命令也一样,输出存储在哪里?您应该使用-p <directory prefix>选项。

其次,如果数据已经在该目录中,则可能需要使用-N,并且只下载较新的文件并覆盖旧的文件。

第三,当所有工作都安静地关闭wget输出时,使用-q选项。

第四无法运行该脚本每分钟* * * * *,因为此前的跑步可能还没有说完呢,见格式:

# ┌───────────── min (0 - 59) 
# │ ┌────────────── hour (0 - 23) 
# │ │ ┌─────────────── day of month (1 - 31) 
# │ │ │ ┌──────────────── month (1 - 12) 
# │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to 
# │ │ │ │ │     Saturday, or use names; 7 is also Sunday) 
# │ │ │ │ │ 
# │ │ │ │ │ 
# * * * * * command to execute 

对于测试的缘故,让我们每天晚上运行它在1过了午夜。

备注:要真正使正确的,你应该使用一个脚本文件来执行,并在那里把wget命令,那里的脚本文件可以使一个锁定的情况下,要经常执行此,请参阅here因为这超出了这个问题/答案的范围。

而5号:不需要逃避"\",即使这样不需要",因此将其删除。

结论,首先创建一个可以存储数据的目录,例如, /wget_data

mkdir /wget_data 
chmod 777 /wget_data 

然后调整自己的cron行中,添加-p <directory prefix>-N和调整执行格式:

1 0 * * * /usr/bin/wget -N -p /wget_data --spider https://subdomain.domain.net/update.php >/tmp/wget.txt 2>&1 

并重新启动cron的,可以对不建议,不知道是什么尚未使用。

也是明智将是在命令行第一个测试你的命令:

/usr/bin/wget -N -p /wget_data --spider https://subdomain.domain.net/update.php >/tmp/wget.txt 2>&1 

,然后cat /tmp/wget.txt,看看命令的工作,并ls /wget_data,看看wget的那样收集数据。

0

主要的事情,你需要检查:

  1. 如果crond的启动和运行(顶部,PS-A)
  2. 如果crond的有足够的权限来执行的wget(ls -l命令在/ usr/bin中)
  3. 如果wget没有产生任何错误(不要丢弃输出到/ dev/null,将它存储在某个文件中,然后首先检查 - 如果文件完全创建,如果不是 - 则检查事物1和2,文件被创建并且有一些信息 - 这可能会有帮助)
  4. 与项目1和2相关。检查用户runnin g crond并尝试使用此用户执行命令。
  5. 尝试执行不是wget,但一些命令,将写入一些字符串到一些文件,并检查它是否会工作。
+0

1.是的,2.它是(crontab),3.将输出更改为/out.txt,但该文件未创建,4. OpenWRT只有根用户,5.你有一个应该工作的例子吗? – PrimuS

+0

试试这个: 'echo“crontab工作”>> /tmp/out.txt' 文件/tmp/out.txt应该增加每分钟增加“crontab工作“在那里。 –