![Cron 执行旧版本的脚本](https://linux22.com/image/1051567/Cron%20%E6%89%A7%E8%A1%8C%E6%97%A7%E7%89%88%E6%9C%AC%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我通过以下方式定义 crontab 作业:
sudo crontab -e
正如我所看到的,当我输入时它会被列出:
sudo crontab -l
当我输入时它也会列出:
run-parts --test /etc/cron.monthly
然后我修改了脚本(只有脚本内容,没有脚本名称)。我的脚本发送了一封电子邮件,我修改了电子邮件内容。
不幸的是,由于某种原因,我的脚本的先前版本被执行了(我收到了一封旧电子邮件)。我甚至重新启动了 cron:
sudo service cron restart
但这没用。我尝试删除并再次将提到的脚本添加到 cron,但这也没什么用。
我使用 Ubuntu 12.04.4 LTS
答案1
我在 Ubuntu 18.4 LTS 上遇到了同样的问题。
Cron 保留了我的脚本的旧版本,似乎没有看到脚本已更新。
sudo service cron stop
通过执行然后解决这个问题sudo service cron start
。
sudo service cron restart
没有起到作用。
答案2
似乎奇怪的是,该脚本与命令一起列出run-parts
,/etc/cron.monthly
这表明该脚本以某种方式位于该目录中。
也许您在目录中有旧版本的副本/etc/cron.monthly
?
可能值得删除 crontab 条目,并检查其中没有任何内容/etc/cron.monthly
,然后尝试重命名脚本并将其放回 crontab 中以查看它是否正确执行。
如果一切正常,您可以尝试稍后将名称改回来。
答案3
以“root”身份进行文件搜索并找到脚本的所有实例。删除所有不需要的实例。当您只拥有要通过 cron 运行的脚本版本时,请重新启动 cron。