OSX El Capitan 上的 crontab 坏了吗?

is crontab broken on OSX El Capitan?

问题。 cron 应该在 OSX El Capitan 工作吗?

背景。 我在 OSX 上使用 crontab 多年,但在 El Capitan 上它似乎不起作用。我将我的用户名添加到 /usr/lib/cron/cron.allow,甚至重新启动了机器,但我的 cron 作业仍然没有做任何事情,也没有给我发错误邮件。联机帮助页表明 Apple 不希望人们使用 cron,但他们并没有说它不起作用(还)。

根据 Apple 的说法,cron 不久前就被弃用了。他们一定是终于拔掉了 El Capitan 的 GM。 Apple 建议使用 launchd 而不是 cron。这是一个教程: launchd

这似乎对我有用,但我认为你需要指定编辑器:

env EDITOR=nano crontab -e

添加您的 cron,然后使用给定的名称和位置保存文件。在我的例子中,它是 /tmp/crontab.xxxx.

中的一个文件

然后如果你这样做 crontab -l 你应该看到你的 crons。

这是给通过 Google 找到的任何人的另一个答案。结果不多。

对我来说,/usr/lib/cron 以某种方式链接到 /var/at(我什至从未听说过……),并且 /var/at 有一个 cron.allow 文件,它我的用户名不在,所以 运行 sudo vi /var/at/cron.allow 并添加我的用户名(以某种方式将 echo 重定向到该文件不起作用......)修复了它。

在 MacBook 上,使用 El Capitan (10.11.5),"cron" 仍然可以正常工作。

"/usr/lib/cron.deny" 是默认值(仅列出 "Guest"),没有 "cron.allow"。不记得做了任何定制来让它工作(没有 init/config 文件 mod,没有 chmod,没有 file/dir creates/deletes,等等)。

(一直使用 10.6.* 直到 MacBook 在 4 月死机。5 月中旬开始使用 10.11,在 10.11.5 更新后(?5 月底?)恢复了我的 crontab。所以不知道 cron 是否是在 10.11 下工作,或通过 10.11.5 更新重新启用。)

试试这个简单的测试:"crontab -e",然后是“*/5 * * * * date >> /tmp/z.date”。应该每五分钟看到一个新日期。

如果可行,请尝试“*/5 * * * * env >> /tmp/z.date.1”,并检查您的环境。例如,默认的 PATH 很短。

顺便说一句,"at" 是批处理作业队列。 "at"、"batch" 和 "cron" 通常组合在一起,因为它们对同一事物进行变体。

cron 将在机器休眠时完全跳过任何作业。尝试检查您的节能设置(见下文)。

launchd(Apple 推荐的替代方案)在机器休眠时也不会 运行,但不会跳过作业。取而代之的是机器唤醒时的作业 运行。

如果你输入 cd /usr/lib/cron 然后 ls 你会看到你有 at.denycron.deny,但没有 at.allowcron.allow .

运行 sudo nano cron.allow 然后每行输入一个用户名。

at.allow 创建副本 sudo cp cron.allow at.allow

我创建了这两个文件并启动了 运行。

对于 Mojave,完全磁盘访问 可防止您更改系统文件(包括与隐私相关的数据以及 crontab 等系统配置)。

要启用访问权限:

  • 转到系统偏好设置 > 安全和隐私 > 隐私 > 全盘访问
  • 按 + 按钮
  • 添加您的终端应用程序(例如 /Applications/Utilities/Terminal.app 或 /Applications/iTerm.app)
  • 重新启动您的终端应用程序
  • 配置定时任务
  • 可选,但强烈推荐:完成后从全磁盘访问中删除您的终端应用程序