手动编辑cron文件是否不好?


12

通常指示它通过命令行引入新的cron作业。但我发现手动编辑(在文本编辑器中)用户cron文件(如)更加容易(可以更好地控制当前cron任务)/var/spool/cron/crontabs/root

在文本编辑器中编辑文件是否有危险?

默认文件中的注释令人困惑。第一行说

# DO NOT EDIT THIS FILE - edit the master and reinstall.

但是第四行说

# Edit this file to introduce tasks to be run by cron.

2
为什么不将内容放在/etc/cron.d下呢?
Zoredache

这可能是一个好主意;但是我并不是说要编辑哪个文件,而是通过编辑器或运行crontab命令比较编辑文件。
Googlebot 2012年

@All我猜唯一的区别是crontab -e进行的语法检查。它只是带有语法检查的文本缓冲区。您也可以更改常规编辑器,然后将crontab-e加载到其中。xyntax的重要性在于,如果执行错误,所有文件都将被忽略。即使使用外部工具,也应使用crontab-e读取文件,并在完成后将其发送回crontab-e。这样一来,您就不必再担心语法了。最好将文件从用户和系统任务中分离出来,因此您应该对用户/测试任务使用更好的/etc/cron.d。
m3nda 2015年

Answers:


22

如果您在crontabs下修改了用户文件,则它应该可以工作。但是,有两个问题需要考虑:

  1. 如果您在文件中crontab -e键入了cron条目,将不会被警告,而不是使用command。
  2. 如果没有root用户登录或使用sudo,则无法直接在crontabs下编辑用户文件。您将收到权限被拒绝的错误。

编辑

还有一点要补充。直接编辑文件时,如果两次打开文件(两个用户访问同一文件),文本编辑器可能会警告您。但是,当crontab -e从同一用户的两个不同的Shell会话中使用时,cron列表将被覆盖。这是另一个区别。


很微妙的一点!我从来没有遇到(知道)第二个问题,因为我一直都是root。
Googlebot 2012年

4
另外,默认文件中的“请勿编辑”是因为升级/重新安装可能会覆盖该文件。
克里斯·S

您没有提及到,编辑crontab的用户直接丢失了crontab -e提供的santex检查。
亚当F

1
@AdamF:这就是第一个要点!
哈立德

8

如果我理解正确,那么您将使用文本编辑器手动编辑文件,因为您不想使用crontab -e。我猜这是因为它使用vi作为编辑器,而您对此并不熟悉。

您可以通过运行以下命令来更改crontab -e(以及其他需要编辑器的内容)以使用更熟悉的nano编辑器

export EDITOR=nano

之前

crontab -e

您可以通过编辑〜/ .bash_profile文件(包括export EDITOR=nano在末尾)来使nano成为永久的默认编辑器。

要回答您的问题,请勿直接编辑文件,因为您可能不知道该文件而将其覆盖。第四行说了它的意思,因为它来自crontab,应该由您手动编辑(它会作为第一行)。


感谢您的描述性答复。我完全熟悉crontab命令vi编辑器;但是我使用gedit(不在ssh终端中),因为我直接从Linux桌面连接到服务器。
Googlebot

我还建议将export EDITOR命令添加到您的bashrc文件中,以避免每次您登录ssh时都将其写入。
m3nda 2015年

1
export VISUAL=vi

这是更改crontab编辑器的正确方法。

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.