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

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

假设我正在创建两个 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

以上对于单个用户来说可能吗?

答案1

解决单个 crontab 问题的两种方法。

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

cat ~/crontab.d/*.cron | crontab -

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

您还可以执行类似于/etc/cron.hourlyDebian 中实现和朋友的操作。主要/etc/crontab包含这样的规则:

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

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

答案2

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

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

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

cat crontab1 crontab2 crontab3 >my-crontab
crontab my-crontab

答案3

您可以只阅读实际条目并在后面添加新条目。
一旦你运行了这个:

crontab -u smarak /tmp/my-crontab

理想情况下你可以这样做:

crontab -u smarak <(cat /root/my-alternate-crontab) <(crontab -l)

但 crontab 似乎不接受上面的形式,所以这里有解决方法:

cat /root/my-alternate-crontab <(crontab -l)| crontab -u smarak -

这对我有用。希望有帮助。

相关内容