用户crontab存储在哪里?
由于升级我的用户的crontab已被删除。 这不是今年第一次发生这种情况,每次恢复它都会很痛苦。
我希望能够为我的用户备份crontab,但为此我需要知道它的存储位置。
实际上,不建议手动处理这些文件。 每个crontab
手册页:
但是每个用户都可以拥有自己的crontab
这些是/var/spool/cron/crontabs
,它们不是
打算直接编辑。
/var/spool
下的文件被认为是临时/工作的,这就是为什么它们可能在升级过程中被删除的原因,尽管仔细查看cron
软件包的升级脚本可能会对此有所了解。
无论如何,备份cron条目或将它们保存在主目录中的文件中始终是一个好习惯。
我假设你正在使用crontab -e
来动态创建crontab文件。 如果是这样,您可以通过执行crontab -l
获取crontab文件的“副本”。 管道到文件以获得“备份”:
crontab -l > my-crontab
然后,您可以编辑my-crontab文件以添加或修改条目,然后通过将其提供给crontab来“安装”它:
crontab my-crontab
这与crontab -e
执行相同的语法检查。
它存储在用户名下的/var/spool/cron/crontabs
文件夹中。
我终于找到了为什么我的crontabs和Postfix安装在启动后不断破坏。 这是一个非常愚蠢的原因,但……
我将/var/spool
安装为tmpfs
RAM驱动器。
这听起来很愚蠢,但是我曾经按照旧的SSD调整之一来延长SSD的使用寿命。 在这样做时,我盲目地将/tmp
, /var/tmp
和/var/spool
作为tmpfs
挂载而不考虑其影响。 我认为/var/spool
就像/proc/
或/run/
并且只在会话期间有用。 我显然是错的。
要列出系统中所有用户的所有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