我已经使用crontab -r
命令删除了我的crontab
(r
和e
在键盘上非常接近,没有问题Are you sure? [Y/n]
。
有趣的是,您必须使用-i
选项来启用此问题 - 默认情况下应该启用:-)
我的crontab
记录肯定丢失了,或者有一些备份文件,我该如何恢复它?
谢谢。
我遇到了同样的问题,但是在按crontab -r之前,我已经多次编辑了crontab文件,因此我可以在tmp目录中找到以前的版本。因此,试试运气,查看一次您的tmp目录。
如果你很幸运,这是最近发生的,你可能会在
/tmp/crontab.<unique_identifier>/crontab
这是您以前的 crontab 的副本。您只需复制并粘贴它即可恢复您的 cronjobs
不幸的是,crontab 机制不提供恢复已删除或早期版本的 crontab 文件的方法。话虽如此,始终值得跟踪以下步骤:
-
检查挥之不去的临时:当您编辑 crontab 文件时,您会使用编辑器。默认情况下,这是
vi
,但它也可能是由变量EDITOR
或VISUAL
定义的变量。根据这些编辑器的设置和您的处理方式,您可能会有挥之不去的备份文件。这些可以是filename~
或#filename
或其他任何形式。检查可能表示_PATH_TMP/crontab.XXXXXXX
备份的文件。_PATH_TMP
的值在/usr/include/paths.h
中定义。如果该文件不存在,则默认为/tmp
。请注意,每次重新启动系统时都会擦除/tmp
。 -
检查文件系统快照或克隆:Crontab 将用户 crontab 文件存储在依赖于实现的位置。默认情况下,这是
/var/cron/tabs/$USER
,但也可以是/var/spool/cron/$USER
或其他任何内容。检查man crontab
以显示位置。那里永远不会有备份文件。但是,您的系统可能具有配置了快照或克隆的文件系统。这些是在某个时刻获取的文件系统的只读副本。将其视为文件系统本身的备份。 从更经典的文件系统(ext4,...)BTRFS、OCFS2 和 ZFS 支持快照。 - 检查实际备份:也许您很幸运,您的系统管理员为您进行了备份。
除了这 3 种可能性之外,我看不出您可以恢复 crontab 的方法。
您应该做的最重要的事情是让 cron 备份您的 crontab 文件。您可以使用以下方法每小时执行此操作:
# Example of job definition:
# .----------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
0 * * * * crontab -l > tmp/crontab.bck
显然,您可以使用脚本使其更加智能,但这已经可以满足您的基本需求。