crontab文件的位置


52

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

如果发行版之间有所不同,那么我正在使用Centos5和Mint 17


15
+1仅用于使您的桌面背景圣诞节每年一次主题
Celada 2015年

5
@Celada可能并不常见,但这仍然是例行任务。
Jarmund

Answers:


53

cron单个用户的文件位置为/var/spool/cron/crontabs/
来自man crontab

每个用户都可以拥有自己的crontab,尽管这些文件是中的文件/var/spool/cron/crontabs,但不能直接对其进行编辑。


7
这里的关键字是“它们不希望直接编辑”,因此,如果没有下面的Celada命令,此答案将是不完整的,这为问题的“复制到另一个用户”部分提供了更安全的答案。如果人们习惯了直接编辑crontab而不通过crontab命令提交的习惯,那么他们就放弃了该命令提供的很多理智检查。
Monty Harder

@MontyHarder我同意“它们不能直接编辑”,但是如果有需要的话该怎么办,例如需要通过bash脚本在crontab中进行输入。您必须使用确切的文件,在这种情况下,我认为没有任何外部接口会有所帮助,如果我错了,请更正我。
Prabhat Kumar Singh,

@PrabhatKumarSingh您仍然不应该直接编辑文件。如果您阅读下面的Celada命令,您将看到一个示例,该示例说明了脚本如何在不直接编辑crontab文件的情况下对其进行操作。 man crontab解释了它是如何工作的。
蒙迪·哈德

34

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

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

crontab -u <user1> -l | crontab -u <user2>

3
有很多很好的理由说明为什么crontab文件不应该被操作系统本身以外的任何东西直接操纵。这是一个更好的解决方案。我真的认为需要将其纳入官方答案。
蒙迪·哈德2015年

@MontyHarder确实没有一个“官方”答案。请求者选择的对他/她个人有用的答案(带有复选标记的答案)和社区选择的答案(最多支持者)。简而言之,您有15名代表,可以通过投票建议是正确的答案。另外,如果您想提出对其他答案的改进建议,则需要对此答案发表评论,否则,不会将其评论告知作者。
derobert

2
这个答案的必然结果是,一个人应该将输出重定向crontab -l到一个文件,将该文件移至另一个系统,然后将其通过管道传输到crontab。甚至可以直接执行(crontab -l | ssh $remote_host crontab)。
Blacklight Shining

6
“当提供特殊接口来访问文件时,应使用它。” 试想一下,尽管每个应用程序都提供了一个用于编辑配置文件的特殊接口,而不是仅仅通过fs公开它们。那就很烦人了。
Witiko

1
作为最初的提问者,我认为我应该对此深思熟虑:接受的答案是根据我的字面意义上的问题选择的;文件的位置。我对该文件的意图无关紧要。我认为编辑附加信息不会改变答案,但是可能认为多余。
Jarmund
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.