【问题标题】:cronjob entry in crontab -e vs /etc/crontab . Which one is better?crontab -e vs /etc/crontab 中的 cronjob 条目。哪一个更好?
【发布时间】:2014-04-07 19:52:00
【问题描述】:

将 crontab 条目放入 crontab -e(默认位置是:/var/spool/cron/username)和 /etc/crontab 有什么区别?我的意思是 crond 守护进程基本上会执行这两个 cron 作业。那么为什么有两种不同的方式来安排 cronjob 呢?哪一个比另一个更喜欢?

【问题讨论】:

  • 计划在 /etc/crontab 下运行的作业将以 root 身份运行,其他的不会?
  • 如果是 /var/spool/cron/root 怎么办?那么首选哪一个呢?
  • 这可能没有一个“正确”的答案 - 但我倾向于认为它是否特定于 root 用户的帐户(例如生成一些通过电子邮件发送到 root 的报告,它将它转发到任何地方)它应该进入/var/spool/cron/crontabs/root,但如果它只是一个系统范围的管理任务,比如清理/tmp或其他东西,那么它属于/etc/crontab//etc/cron.d/*(或/etc/cron.{hourly,daily,weekly,monthly}作为适当的)。不过,这只是我的看法......

标签: linux cron centos scheduled-tasks crontab


【解决方案1】:

不同的是crontab命令是系统提供给用户操作crontab的接口。 /etc/crontab 文件是一个特例文件,用于实现系统范围的 crontab。 /var/spool/cron/crontabs/$USER(或任何路径)是一个实现细节。

如果您可以使用crontab 命令安排作业,您应该这样做。

手动编辑/etc/crontab 的内容(a) 需要root 访问权限,(b) 更容易出错。你可以这样搞乱你的系统。

如果要在您自己的用户帐户下运行作业,则无需使用 root 访问权限。

即使作业以root 运行,使用从root 帐户调用的crontab 命令可能仍然更有意义。 (一方面,它应该检测文件中的语法错误。)

就我个人而言,我不使用crontab -e。相反,我有一个保存在源代码控制系统中的 crontab 文件,我使用命令的crontab filename 形式来安装它。这样,如果我搞砸了,很容易恢复到早期版本。

【讨论】:

  • 但是,如果使用crontab filename 进行安装,并且您确定代码没问题,据我所知,您覆盖这两个 crontab 中的哪一个并不重要。跨度>
  • @jessuppi 这当然很重要。 crontab filename 将始终更新您的个人 crontab(即使您以 root 运行它),永远不会更新 /etc/crontab。这两个 crontab 使用不同的语法。 /etc/crontab 有一个额外的列指定用户运行命令。
  • @KeithThompson 这两点很重要...也许您可以更新您的答案以提醒用户注意这一点?在我们的 SlickStack 项目 (FOSS) 中,我们使用 root 用户 crontab,因为似乎长期以来一直认为 /etc/crontab 是神圣且不可触碰的,并且有一天可能会被 Linux 发行版用于与系统相关的某些事情。虽然root用户crontab路径有点绕...
  • @jessuppi:你为什么关心root用户crontab的路径?你应该只通过crontab 命令来操作它。
  • @KeithThompson 我理解并愿意,但凌乱的道路永远不会有趣。
【解决方案2】:

区别:

$PATH

(在我的 Red Hat 7 系统上)

  • 通过 /etc/crontab 运行:$PATH 是 /sbin:/bin:/usr/sbin:/usr/bin
  • 通过 crontab -e 运行:$PATH 是 /usr/bin:/bin

访问

  • 只有 root 可以访问 /etc/crontab
  • 用户可以访问自己的 /var/spool/cron/user-name

格式

  • /etc/crontab 需要一个额外的参数,位于命令前面,用于指定用户。
  • crontab -e (/var/spool/cron/user-name) 显然不需要 crontab 条目中的用户名。

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 2016-09-24
    • 2021-03-14
    • 2011-03-12
    • 2017-08-31
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多