我不知道在哪里可以找到有关 crontab 的更多信息,所以我在这里询问。 crontab是多线程的吗?它是如何工作的?
答案1
可能不会。所有 cron 所要做的就是(简单地表达它)监视,直到运行一项或另一项作业的时间为止,如果是这样,则分叉一个运行该作业的进程,并定期检查该作业是否完成以便清理它。
MT 可以用于这种等待,但我认为这有点矫枉过正了。随着wait()
/waitpid()
家庭功能,可以一次查看所有孩子(对幼儿园老师有好处:-D)。而且你可以无阻塞地查看,这样你也可以继续寻找时间来执行下一个作业。和SIGCHLD
也存在。
答案2
Linux 有多种 cron 实现。我认为它们中的任何一个是否是多线程并不是一个真正相关的问题,除非您尝试编写自己的 cron 守护程序实现。
答案3
此类传统的 UNIX 命令不是多线程的。他们使用 fork-exec 模型。对于 cron,它会分出一个 shell 来运行 crontab 行中的命令。 cron 守护进程不会等待子进程完成执行,尽管 IIRC 它可以处理子进程发送的某些信号。