我的 crontabs 将在以下哪种情况下运行,什么时候不会运行?

Pet*_*ahn 5 unix macos cron cron-task

初学者在这里。我有一些关于 mac / osx 上的 crontabs 的问题(如果有影响的话)。我想了解我的 crontab 在什么情况下会运行,什么时候不会运行。

确实知道这是真的:

  • 当我关闭计算机时,cronjob 将不会执行。

这是最容易的部分。但这些情况又如何呢:

  1. 终端未打开,但我已登录
  2. 机器正在运行,但我尚未登录
  3. cronjob 设置为上午 9 点,但我的计算机当时已关闭,我在上午 10 点打开并登录

什么时候有效,什么时候无效?

Gor*_*son 12

cron 作业在计算机开启且未睡眠时运行,因此它将在情况 1 和 2 中运行。如果计算机在作业的计划时间关闭或睡眠,则稍后当计算机启动时,它不会执行任何类型的追赶运行重新启动/唤醒;因此,在情况3下它不会运行

我还要澄清一下情况 1 和 2:cron 作业独立于任何用户登录会话及其正在运行的任何程序运行。它们无法从终端输入中读取,它们打印的任何内容都不会显示在屏幕上,并且由于它们不是登录会话的一部分,因此它们与常规图形用户界面和运行程序交互的能力有限。它们生活在与您交互运行的程序(包括终端命令)半独立的世界中。

请注意,macOS 上通常不推荐使用 crontab;自动运行程序的首选方法是使用launchd。但相当于用户 crontab 的 launchd 称为启动代理,它确实作为登录用户会话的一部分运行(而且大多数情况下,当用户未登录时会被跳过)。此外,如果由于计算机关闭/睡眠而错过了计划的运行,启动的作业也会运行。所以它们与 cron 作业有很大不同。