自从升级以来,我的用户的 crontab 就被清除了。这不是今年第一次发生这种情况,每次恢复它都很麻烦。
我希望能够为我的用户备份 crontab,但为此我需要知道它存储在哪里。
答案1
实际上,不建议手动处理这些文件。每个crontab
手册页:
每个用户都可以拥有自己的 crontab,虽然
这些是中的文件/var/spool/cron/crontabs
,但它们并不
打算直接编辑。
下面的文件/var/spool
被视为临时/工作文件,这就是为什么它们可能会在升级期间被删除,但仔细查看软件包cron
的升级脚本可能会对此有所了解。
无论如何,备份你的 cron 条目或将它们保存在你的主目录中的文件中始终是一个好的做法。
我假设您正在使用crontab -e
来动态创建 crontab 文件。如果是这样,您可以通过执行以下操作获取 crontab 文件的“副本” crontab -l
。将其通过管道传输到文件以获取“备份”:
crontab -l > my-crontab
然后,您可以编辑该 my-crontab 文件来添加或修改条目,然后通过将其提供给 crontab 来“安装”它:
crontab my-crontab
它执行与 相同的语法检查crontab -e
。
答案2
它存储在/var/spool/cron/crontabs
用户名下的文件夹内。
答案3
我终于发现为什么我的 crontabs 和 Postfix 安装在启动后不断中断。这是一个非常愚蠢的原因,但是...
我已将/var/spool
其安装为tmpfs
RAM 驱动器。
听起来很愚蠢,事实也确实如此,但我遵循了旧的 SSD 调整方法之一来延长 SSD 的使用寿命。在这样做时,我盲目地安装了 和/tmp
,/var/tmp
而/var/spool
没有tmpfs
考虑后果。我以为/var/spool
和 一样/proc/
或/run/
,并且它仅在会话期间有用。我显然错了。
答案4
列出系统中所有用户的所有 cron 作业:
for user in $(cut -f1 -d: /etc/passwd)
do
echo $user
crontab -u $user -l
done
解决您的问题的另一种方法是将它们放在 cron.d 文件夹中,并为每个 cron 指定适当的用户,如下例所示:
00 01 * * * user /home/user/user-script.sh