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退出。