一个用户可以有多个 crontab 文件吗?

SKM*_*SKM 5 linux cron not-root-user

假设我正在创建两个 crontab 文件。

  1. /tmp/my-crontab
  2. /root/my-alternate-crontab

每个 crontab 文件都被调度以运行不同的脚本。

当我开始 cronjob 时,第一个被替换为旧的。

crontab -u smarak /tmp/my-crontab
crontab -u smarak /root/my-alternate-crontab
Run Code Online (Sandbox Code Playgroud)

以上是否适用于单个用户?

ilk*_*chu 7

解决单个 crontab 的两种方法。

将您的 crontab 条目放在某个目录中的文件中,例如~/crontab.d/thisandthat.cron,然后使用以下命令将这些更改提交到系统 crontab:

cat ~/crontab.d/*.cron | crontab -
Run Code Online (Sandbox Code Playgroud)

扩展.cron是为了避免意外包含来自编辑器的备份文件。请注意,由于所有文件都连接在一起,因此文件中设置的任何变量也将适用于稍后出现的文件。

你也可以做一些类似于如何/etc/cron.hourly和朋友在 Debian 中实现的事情。主要/etc/crontab包含这样的规则:

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
Run Code Online (Sandbox Code Playgroud)

您可以安排单个 crontab 条目来运行多个程序。Debianrun-parts dir与Debian类似,for f in dir/* ; do "$f" ; done只是它跳过奇数文件名,再次避免运行由编辑器等创建的备份文件。

  • @Tian,这是告诉程序读取标准输入而不是命名文件的常见符号: [_"此命令的第一种形式用于从某些命名文件或标准输入安装新的 crontab,如果伪文件名 `- ` 被给出。"_](https://manpages.debian.org/stretch/cron/crontab.1.en.html)。 (2认同)

Kus*_*nda 3

不。每个用户都有一个 crontab。为什么?因为 crontab 是与单个用户关联的所有 cron 作业的“表”(“选项卡”)。

如果您想使用 运行多个任务cron,只需在 crontab 中添加多行即可。

如果您有多个包含 cron 作业规范的文件,只需将它们连接起来即可:

cat crontab1 crontab2 crontab3 >my-crontab
crontab my-crontab
Run Code Online (Sandbox Code Playgroud)