我希望每天两次从服务器上的 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>