我在 EC2 上运行 Debian 服务器,几天前我的 crontab 定义突然消失了。毫无征兆地消失了!
有什么想法可以导致这种情况吗?我不怀疑对服务器有任何未经授权的访问。
答案1
不幸的是,丢失用户 crontab 极其容易(当该用户是 root 时几乎同样容易)。
以下是清空方法的几个示例:
crontab ''
echo $emptyvar | crontab -
crontab emptyfile
crontab -l | oops | crontab -
其中oops
表示一些命令,这些命令应该在crontab -l
使用 替换之前操纵 输出的内容crontab
。由于某种原因(“oops”),内容无法通过管道传递。
您应该检查您的脚本和 crontab 中是否有任何试图操纵 root 的 crontab 的行,并确保它们没有做错什么。
此外,对于用户 crontab,当您自己编辑时请始终使用crontab -e
。
答案2
可能是 /var 所在的分区已满。
如果发生这种情况并且 /tmp 位于另一个分区,您可以使用 crontab -e 编辑临时文件,但是当您完成编辑时,新版本无法复制到 /var/spool/cron/,因此您会得到一个空文件。
我知道这是一个奇怪的情况,但 crontab 没有返回任何错误。
答案3
在 forums.aws.amazon.com 上阅读有关 EC2 的问题。不是专门针对这个问题,而是静态数据在重启后消失。您可能想加入那里的一些讨论或联系 aws 支持。同时,我会编写一些脚本来将我的 crontabs 备份到 S3 或其他地方。
答案4
在尝试编辑 crontab 文件之前,先查看它是否确实存在于 /var/spool/cron/crontab/ 中。它是空的还是正在创建?
你的 EC2 实例已重启吗?
grep -r crontab /etc/*
看看是否有东西触碰它们。