如何通过 WGET Cronjob 定期保存网页

如何通过 WGET Cronjob 定期保存网页

我有一台 Ubuntu 16.04.2 LTS 云服务器,24/7 全天候在线。这台服务器上有很多 cronjob 在运行。有一个新闻网站,我想每 20 分钟保存一次带有时间戳的封面版本。我创建了一个 WGET 语句,它可以从命令行完美运行。

wget --convert-links --output-document=/home/username/News-Headlines-$(date +%Y-%m-%d_%H:%M:%S).html news.tld

*/20 * * * * /usr/bin/wget --convert-links --output-document=/home/username/News-Headlines-$(date +%Y-%m-%d_%H:%M:%S).html news.tld

当从根 cronjob 运行此语句时,不会创建文件,并且 /var/log/syslog 中不会产生任何错误

如何使这个 WGET root cronjob 语句起作用?

跟进:

cron 开始发送邮件错误:/bin/sh:1:语法错误:文件结尾意外(预期“)”)

根 crontab 文件末尾确实有一个空行。这个错误指的是什么?

答案1

发现的问题 % 符号未被转义。

这篇文章中提出了以下建议: https://serverfault.com/questions/449651/why-is-my-crontab-not-working-and-how-can-i-troubleshoot-it

“在命令中使用百分号 (%) 时要非常小心。除非它们是转义的 \%,否则它们将被转换为换行符,并且第一个非转义的 % 之后的所有内容都将通过 stdin 传递给您的命令。”

一旦日期语句中的 % 被转义 \%,就会按预期创建带有时间戳的文件。

*/20 * * * * /usr/bin/wget --convert-links --output-document=/home/username/News-Headlines-$(date +\%Y-\%m-\%d_\%H:\%M:\%S).html news.tld

相关内容