用户特定作业与作为特定用户运行的系统作业

用户特定作业与作为特定用户运行的系统作业

对于Debian及其衍生产品,我们该如何理解以下看似矛盾的事实:

  • /etc/crontab并且/etc/cron.d/*有一个用户字段,这意味着作业正在以用户身份运行(root 或非根)。

  • 中的作业/etc/crontab/etc/cron.d/*系统作业不是特定于用户的作业吗?

如果您想以 root 或非 root 用户身份运行作业,您将在哪里添加作业:/etc/crontab/etc/cron.d/*/var/spool/cron/crontab/<user>

斯蒂芬的评论/etc/cron.d下的文件是如何使用的?澄清了很多,但我还是不明白

系统作业是适用于整个系统的作业。用户特定作业是代表特定用户运行的作业;通常,用户在登录时手动执行但他/她希望定期自动执行的任务 - 例如特定文件的备份,或远程开发存储库的刷新,或邮件处理,或镜像网站

谢谢。

答案1

我倾向于使用各种 cron 配置文件,如下所示:

  • /var/spool/cron/crontab由“真实”用户使用(IE用户对应于使用系统的人类),使用 进行编辑crontab -e
  • /etc/cron.d用于包提供的 cron 作业,它可以作为“系统”用户运行(例如 logcheck对于logcheck的 cron 作业);正如在回答有关该主题的其他一些问题时提到的,/etc/cron.d旨在供软件包使用,至少在基于 Debian 的系统上;
  • /etc/crontab将用于本地定义的系统作业,以 root 身份运行,但我发现/etc/cron.{hourly,daily,weekly,monthly}这些作业更方便。

在我的评论中,“用户”是指“人类支持的用户”(如果您允许我这样表达的话)。在我看来,以“系统用户”(root 用户或其他用户)身份运行的作业都是系统作业。

从 Debian 打包的角度来看,Debian 政策描述了推荐的做法关于 cron 作业:总之,/etc/cron.{hourly,daily,weekly,monthly}如果合适就使用,/etc/cron.d否则使用。因此,在所有五个目录中看到包提供的作业是正常的。

答案2

下面的 crontab/etc只能由 root 手动编辑(或在安装某些软件包时由 root 隐式编辑)。这些 crontab 通常用于安排与系统上的服务相关的作业。因此,这些都是“系统工作”。其中一些服务很可能以 root 以外的用户身份运行。

中的假脱机 crontab/var是用户特定的 crontab。用户应该用来crontab -e编辑他们自己的个人 crontab(对于 root 来说这可能也是合理的事情)。未绑定到系统上任何特定服务的用户(即人类)不应需要在 下的 crontab 中以自己的名义运行 cron 作业/etc

相关内容