用户 crontab 存储在哪里?

Oli*_*Oli 298 cron

由于升级我的用户的 crontab 已被清除。这不是今年第一次发生这种情况,每次恢复它都很痛苦。

我希望能够为我的用户备份 crontab,但为此我需要知道它的存储位置。

roa*_*dmr 394

实际上,不建议手动处理这些文件。每个crontab手册页:

每个用户都可以有自己的crontab,虽然
这些都是文件/var/spool/cron/crontabs,他们不
打算直接编辑。

下面的文件/var/spool被认为是临时/工作的,这就是它们可能在升级过程中被删除的原因,尽管仔细查看cron包的升级脚本可能会对此有所了解。

无论如何,备份您的 cron 条目或将它们保存在您的主目录中的文件中始终是一个好习惯。

我假设您正在使用动态crontab -e创建 crontab 文件。如果是这样,您可以通过执行crontab -l. 通过管道将其传输到文件以获取“备份”:

crontab -l > my-crontab
Run Code Online (Sandbox Code Playgroud)

然后您可以编辑该 my-crontab 文件以添加或修改条目,然后通过将其提供给 crontab 来“安装”它:

crontab my-crontab
Run Code Online (Sandbox Code Playgroud)

这与crontab -e.

  • `crontab -l` 比通过 `/var/spool/cron/crontabs/$USER` 更容易,主要是因为该文件的奇怪权限。 (13认同)
  • 也许我们应该放一个 crontab 来自动备份 >:)? (7认同)
  • 当您想要管理或检查来自多个用户的 crontabs 时,查看 `/var/spool/cron/crontabs` 会很方便。 (4认同)
  • 当调查您不熟悉的服务器上的谜团时,通常会使用`sudo grep -rHin "$string" /etc/cron*`(其中字符串可能是`docker`、`lftp`、`iptables 等命令) ` 等。检查用户 crontab 也是个好主意。这就是我进行此问答的原因。 `sudo grep -rHin "$string" /etc/cron* /var/spool/cron*` (3认同)
  • cron 的“iptables-save”。好的... (2认同)

Man*_*tha 62

它存储/var/spool/cron/crontabs在用户名下的文件夹中。


Oli*_*Oli 34

我终于找到了为什么我的 crontabs 和 Postfix 安装在启动后一直中断。这是一个非常愚蠢的理由,但...

我已/var/spool安装为tmpfsRAM 驱动器。

听起来很愚蠢,确实如此,但我遵循了一项旧的 SSD 调整来延长 SSD 的使用寿命。这样做,我盲目地安装/tmp/var/tmp/var/spooltmpfs没有反响的思考。我认为/var/spool就像/proc/or/run/并且它只在会话期间有用。我显然错了。

  • 将`/tmp` 挂载为tmpfs 应该是安全的,但不是`/var/tmp` 或`/var/spool`。`/tmp` 用于临时存储,重启后可能会丢失。`/var/tmp` 用于临时存储,重新启动后将保留。正如您所发现的,`/var/spool` 用于处理数据,这些数据在重启后也会保留。 (11认同)
  • 见 http://www.pathname.com/fhs/2.2/fhs-5.15.html (2认同)
  • 另请注意,写入计数不再是现代 SSD 的问题。 (2认同)

pl1*_*1nk 18

要列出系统中所有用户的所有 cron 作业:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done
Run Code Online (Sandbox Code Playgroud)

您的问题的替代方法是将它们放在 cron.d 文件夹中,并为每个 cron 指定适当的用户,例如:

00 01 * * * user /home/user/user-script.sh
Run Code Online (Sandbox Code Playgroud)