Linux Crontab列表无故被清空原因分析

一 问题排查

问题描述:生产环境一台服务器重启后,发现应用模块没有自动启动,检查发现crontab列表为空。

1.1 通过关键字REPLACE、DELETE搜索crontab运行日志,查看crontab列表被清空时间:

egrep ‘REPLACE|DELETE’ /var/log/cron

1.2 通过history命令查看历史操作,确认有无执行编辑crontab –e、删除crontab –r等操作。

二 问题复现

2.1 可能原因分析:

使用ssh命令执行能卡住crontab的命令,如crontab 或 crontab –等,然后直接关闭crt窗口会触发crontab的REPLACE动作(按ctrl+d也会触发REPLACE动作),导致crontab列表被清空。

具体原理不明,可能是crontab的设计使然,在后续的版本中也可能修复这个问题。

2.2 模拟环境复现:

操作系统版本:Red Hat Enterprise Linux Server release 7.6 (Maipo)

再连接并执行crontab -l检查crontab列表,发现被清空;crontab运行日志中有关键字REPLACE,问题复现成功。

三 总结

3.1 定期备份crontab列表,列表被清空时可从备份恢复。

3.2 不要误操作(如输入crontab命令不加参数、crontab -r等);发现没有反应后,不要误退出(如按ctrl+d)、误断开(如直接关闭crt窗口),正确的方法应该是按ctrl+c退出。