我应该将我的crontab文件保存在/ tmp中吗?


11

我ssh到服务器,并想添加一些日常工作(特别是即使我注销后仍要继续运行屏幕或tmux的程序来续订Kerberos票证)也要cron。所以我运行crontab -e,并添加以下内容,

00 00 * * * kinit -R
00 12 * * * kinit -R

保存时,编辑器会询问我:

File Name to Write: /tmp/crontab.HMpG7V 

/tmp操作系统可以删除其中的文件吗?特别是我注销服务器后?

我的crontab文件应该存储在哪里?我可以将crontab文件保存在$ HOME或更好的空间下吗?


我可以将crontab文件保存在$ HOME下吗?为什么需要符号链接?
蒂姆(Tim)

Answers:


15

crontab -e在/ tmp而不是实际的crontab中打开一个文件,以便它可以检查新的crontab中是否有错误,并防止您用这些错误覆盖实际的crontab。如果没有错误,那么您的实际crontab将被更新。如果crontab -e只是直接写到您的实际crontab,则由于新crontab中的语法错误,您将冒所有cronjobs无法运行的风险。

sudoeditvisudovipw,等操作原理相同。

不用担心,您的实际crontab位于磁盘上的非易失性位置。


我的crontab文件最终存储在哪里?如果我注销服务器,我的crontab文件将如何处理?(我不是管理员,并且没有对该服务器的root访问权)
Tim

1
您的实际crontab位于/var/spool(通常是)某处,但是您绝对不要触摸您的crontab,也永远不需要-使用crontab -e代替。无论如何,您可能没有正确的访问级别来编辑原始crontab文件。
jayhendren 2015年

如果您注销,则crontab不会发生任何事情。它不在/ tmp中。
jayhendren 2015年

(1)crontab文件适用于单个用户还是所有用户?(2)如何验证对crontab文件的编辑是否有效?
2015年

crontab是每个用户的。要验证您的cronjob是否运行,可以检查cron日志。通常在/var/log/cron.log中,但也可能在其他位置。
jayhendren 2015年

5

/tmp是将临时crontab文件写入的位置。保存并退出后,crontab将所做的更改提交到系统上其他更合适的目录(/var/spool/cron如果记得的话,通常在)。因此,不用担心,操作系统可能会删除您的/ tmp,但它永远不会删除您的crontab。


1

Crontab文件位于用户名或用户ID下的/ var / spool / cron / crontabs /中。由于可能会出现以下情况,即位于此处的crontab不再与登录帐户连接,因此建议您将副本保存到主目录(例如/home/userid/.crontab),以便在需要时可以轻松地还原它。至。这也使您可以根据需要将其置于修订控制之下。

如果您的主目录已重定位到另一个系统,则除非您的系统管理员考虑了这个问题,否则假脱机目录中的crontab通常不会伴随它。当需要重做系统时,也不总是备份或还原/ var / spool。

因此,再次建议您将crontab的副本保留在主目录下。

使用您喜欢的编辑器(pico,vi,emacs等)编辑〜/ .crontab,然后使用crontab将其应用于/ var / spool / crontabs。像这样:

% pico ~/.crontab; crontab ~/.crontab

如果您喜欢别名,则可以改用别名。


1
我是否需要做一些事情来使我家的crontab文件覆盖其他位置的crontab文件?
蒂姆(Tim)

只需运行“ crontab〜/ .crontab”,然后将其应用于/ var / spool / cron / crontabs中的那个即可。手动进行任何更改之前,请使用pico,emacs或vi编辑〜/ .crontab。
JonathanS

这实际上并不能回答问题。
没人

@AndrewMedico:主要问题似乎是“我的crontab文件应该存储在哪里?我可以将crontab文件保存在$ HOME或更合适的空间吗?” 还是在这里的评论中提到提姆的问题?
JonathanS
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.