假设我设置了几个同时运行的 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) 语法。
显然,各个作业的执行顺序取决于您为它们设置的时间表。