cron - wget 不是通过 cronjob 执行而是直接在控制台中执行

标签 cron embedded-linux openwrt

我家里有一台带有 15.05 Chaos Calmer 的 TP Link Archer C7。

我正在尝试让 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 执行它吗?

最佳答案

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

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

wget 命令也是如此,输出存储在哪里?你应该使用 -p <directory prefix>选项。

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

第三次使用 -q选项,当一切都在努力使 wget 输出安静时。

第四,你不能每分钟运行一次脚本 * * * * * ,因为上次运行可能尚未完成,请参阅格式:

 # ┌───────────── 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 是否确实收集了数据。

关于cron - wget 不是通过 cronjob 执行而是直接在控制台中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591144/

相关文章:

python - 在 Raspbian 上自动启动程序 - Raspberry Pi 3

ubuntu - YOCTO:启动 menuconfig 打开一个空终端

c - 无法使用 SPI 将 beaglebonegreen 与 mcp3008 连接

openwrt - 如何通过 ssh 重置 luci 密码

python - "sh: sysctl Command not Found "对于运行 cron 作业的 Mac OS X

linux - 使用 crontab 运行带参数的脚本

dependencies - OpenWRT - 重新编译时包缺少依赖项

linux - 重定向对重启命令的影响

php - 每分钟运行的 Laravel cron 作业使 mysql 连接数翻倍

node.js - 通过 CRON 在设定的时间运行 Node JS 应用程序,还是本质上利用 CRON 运行 24/7 Node 应用程序,哪个效率更高?