我无法通过谷歌找到这个问题的答案:
ubuntu 中的 CRON 如何精确地执行作业?
它是否在其自身的进程中产生每个新工作?
假设我有两个 cron 作业:
@reboot /some/really/slow/job
* * * * * /some/quick/job
这些作业会并行运行吗,或者第一个作业会阻止第二个作业直到其完成?
其次,Cron 会影响重定向吗?假设我有一个脚本,其中包含类似
rsync --verbose /from /to &>>rsynclog.log
从 CRON 调用时会写入日志文件吗?还是最终会写入其他地方?
答案1
此答案适用于 ubuntu。其他 linux / unix 操作系统可能略有不同。
守护进程每分钟cron
读取所有crontab
文件并将它们加载到内存中。对于每个cron
要运行的条目(由 crontab 时间字段确定),cron
都会分叉自身的副本。
然后,分叉的 cron 子进程将执行新的 shell(通常是 /bin/sh,但可以覆盖)来执行 crontab 命令。cron 本身只分叉管理作业的子进程。因此,cron 条目是并发运行的 - 例如,如果一项作业需要一个小时,它不会影响任何其他 cron 作业的执行。
重定向应该正常工作,输出文件将写入拥有 crontab 的用户的 $HOME 目录。在某些情况下,值得提供命令和重定向文件的完整路径,以避免出现 PATH 和 HOME 设置问题。