Gor*_*son 12
cron 作业在计算机开启且未睡眠时运行,因此它将在情况 1 和 2 中运行。如果计算机在作业的计划时间关闭或睡眠,则稍后当计算机启动时,它不会执行任何类型的追赶运行重新启动/唤醒;因此,在情况3下它不会运行。
我还要澄清一下情况 1 和 2:cron 作业独立于任何用户登录会话及其正在运行的任何程序运行。它们无法从终端输入中读取,它们打印的任何内容都不会显示在屏幕上,并且由于它们不是登录会话的一部分,因此它们与常规图形用户界面和运行程序交互的能力有限。它们生活在与您交互运行的程序(包括终端命令)半独立的世界中。
请注意,macOS 上通常不推荐使用 crontab;自动运行程序的首选方法是使用launchd。但相当于用户 crontab 的 launchd 称为启动代理,它确实作为登录用户会话的一部分运行(而且大多数情况下,当用户未登录时会被跳过)。此外,如果由于计算机关闭/睡眠而错过了计划的运行,启动的作业也会运行。所以它们与 cron 作业有很大不同。