为什么我的 crontab 中只有一个 wget 命令有效?

为什么我的 crontab 中只有一个 wget 命令有效?

我希望每天两次从服务器上的 PHP 脚本获取内容,更改查询变量lang以设置我们想要的语言,并将此内容保存在两个特定于语言的文件中。这是我的 crontab:

*/15 * * * * ~root/apache.sh > /var/log/checkapache.log
10 0 * * * wget -O /path/to/file-sv.sql "http://mydomain.com/path/?lang=sv"
11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"

问题是,只有第一个 wget 命令行正在执行(或者更准确地说:正在写入的唯一文件是/path/to/file-sv.sql)。如果我切换第二行和第三行,/path/to/file-en.sql则会改为写入。无论第一行在哪里,它始终按预期运行。

然后我尝试使用lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sql但无济于事;仍然只有第一条 lynx 线成功执行。即使混合 wget 和 lynx 也没有改变这一点!

有点绝望!我是不是漏掉了什么?关于 crontab(与 wget 或 lynx 结合使用)的文章有数千篇,但似乎都涵盖了基本设置和语法。有人知道我做错了什么吗?

谢谢,
亚历山大

答案1

尝试在 crontab 末尾添加换行符。

答案2

我刚刚花了一些时间在运行的系统上尝试上述答案(添加换行符、删除换行符等)密友。最后发现有一个错误cronie 1.5.3仅为每个用户执行第一个 cron 作业。它固定在1.5.4

https://github.com/cronie-crond/cronie/issues/30

希望这可以为某些人节省一些时间...

答案3

文本有些错误。在 vim 中编辑 crontab,然后显示不可见字符。

:set invlist

您应该能够看到并改正它。

答案4

我今天也遇到了同样的问题。我发现这是因为我的服务器使用的时区与我所在的时区不同。

我通过使用以下命令更改服务器(CentOS 7)上的时区来修复此问题:

timedatectl list-timezones
timedatectl set-timezone <My timezone>

相关内容