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

In which of these scenarios will my crontabs run, when won't they?

这里是初学者。我有几个关于 crontabs 的问题,关于 mac / osx(如果它有所不同)。我想了解我的 crontab 在什么情况下会 运行,什么时候不会。

知道这是真的:

这是最简单的部分。但是这些情况呢:

  1. 终端未打开,但我已登录
  2. mac在线运行宁,但我没有登录
  3. cronjob 设置为上午 9 点,但我的计算机当时处于关闭状态,我在上午 10 点打开并登录

什么时候可以,什么时候不行?

cron jobs 运行 while the computer is on & not sleep, 所以它会 运行 在情况 1 和 2 中。如果计算机在作业的预定时间关闭或休眠,它会在计算机restarts/wakes启动时进行任何形式的追赶运行;因此,它会 而不是 运行 在情况 3.

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

请注意,在 macOS 上通常不推荐使用 crontab;自动 运行 程序的首选方法是使用 launchd。但是相当于用户 crontab 的 launchd,称为 Launch Agent,运行 作为登录用户会话的一部分(并且——大部分——在用户未登录)。而且,如果由于计算机 off/sleeping 而错过计划的 运行,启动的作业 do 会得到 运行。所以它们与 cron 作业有很大不同。