crontab 文件的位置

Jar*_*und 69 cron filenames

和许多(大多数?)其他人一样,我通过 编辑我的 crontab crontab -e,在那里我保留所有常规操作,例如增量备份、ntpdate、各种 rsync 操作,以及每年一次使我的桌面背景圣诞节主题。据我所知,在全新安装或新用户上,如果文件不存在,这也会自动创建文件。但是,我想将此文件复制给另一个用户,那么我正在编辑的实际文件在哪里?

如果发行版之间有所不同,我使用的是 Centos5 和 Mint 17

hee*_*ayl 80

cron个人用户的文件位置是/var/spool/cron/crontabs/.
来自man crontab:

每个用户都可以拥有自己的 crontab,虽然这些是/var/spool/cron/crontabs.

  • 那里的关键词是“它们不打算直接编辑”,所以如果没有下面的 Celada 命令,这个答案是不完整的,它为问题的“复制给另一个用户”部分提供了一个更安全的答案。如果人们养成了直接编辑 crontab 而不通过 crontab 命令提交它们的习惯,他们就会放弃对命令提供的大量完整性检查。 (11认同)

Cel*_*ada 41

heemayl关于 Linux 上 crontab 文件的位置是正确的,但在其他操作系统上可能会有所不同,“理论上”也可能在 Linux 上的不同位置。本质上,当提供了一个特殊的接口来访问文件时,您应该使用它。这将确保cron在安装文件之前检查文件,确保文件具有所需的权限,等等...

因此,您应该使用该界面将 crontab 从一个用户复制到另一个用户,就像这样,而不是直接访问文件。

crontab -u <user1> -l | crontab -u <user2>
Run Code Online (Sandbox Code Playgroud)

  • “当提供了一个特殊的界面来访问文件时,你应该使用它。” 想象一下,每个应用程序都提供了一个特殊的界面来编辑配置文件,而不是仅仅通过 fs 公开它们。这将是非常烦人的跟踪。 (6认同)
  • crontab 文件不应该被操作系统本身以外的任何东西直接操作的原因有很多。这是一个更好的解决方案。我真的认为它需要纳入官方答案。 (3认同)
  • 作为最初的提问者,我想我也许应该权衡这一点:接受的答案是根据我的问题的字面意义选择的;文件的位置。我对该文件的意图无关紧要。我不认为编辑附加信息会改变答案,但它可能被认为是多余的。 (3认同)
  • 这个答案的必然结果是,应该将 `crontab -l` 的输出重定向到一个文件,将该文件移动到另一个系统,并将其通过管道传输到 `crontab`。或者甚至可以直接执行(`crontab -l | ssh $remote_host crontab`)。 (2认同)