执行时间相同的 cron 任务

执行时间相同的 cron 任务

假设我设置了几个同时运行的 cron 作业:它们是并行执行还是一个接一个地执行?

(我的情况是 Debian squeeze,cronjobs 放在 /etc/cron.d/mycronjobs 中)。

答案1

为了完整性,/etc/cron.{hourly,daily,weekly,monthly} 中的作业按顺序运行。run-parts 脚本循环遍历此目录中的所有文件。

02 4 * * * root run-parts /etc/cron.daily

因此,您可以将其与命名约定(例如类似于编号/etc/init.d/rc*.d)结合使用,以确保作业按顺序运行。

答案2

cron 中列出的任务将并行运行,就像进程通常所做的那样。没有办法确定哪个任务将首先启动,也没有办法在 cron 中确保任务 A 在任务 B 启动之前完成。

答案3

它们将并行运行。您可以使用以下方法按顺序运行这些进程。

# Use a semicolon to run command2 after command1 has completed
02 4 * * * /path/to/command1 ; /path/to/command2

# Use two ampersands to run command2 after command1 has completed successfully.
02 4 * * * /path/to/command1 && /path/to/command2

# Use two vertical rules to run command2 after command1 has completed unsuccessfully.
02 4 * * * /path/to/command1 || /path/to/command2

答案4

Cron 是一个持续运行的守护进程(服务);但是,它每分钟读取一次 crontab。

执行作业的具体顺序取决于系统 crond 的实现。

一些发行版放置在 /etc/cron.d/ 中的松散文件会被扫描以查找其 cron 计时器设置,因为这些文件遵循正常的 crontab(5) 语法。

显然,各个作业的执行顺序取决于您为它们设置的时间表。

相关内容