一 问题排查
问题描述:生产环境一台服务器重启后,发现应用模块没有自动启动,检查发现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退出。