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.deny
和 cron.deny
,但没有 at.allow
或 cron.allow
.
运行 sudo nano cron.allow
然后每行输入一个用户名。
为 at.allow
创建副本 sudo cp cron.allow at.allow
。
我创建了这两个文件并启动了 运行。
对于 Mojave,完全磁盘访问 可防止您更改系统文件(包括与隐私相关的数据以及 crontab 等系统配置)。
要启用访问权限:
- 转到系统偏好设置 > 安全和隐私 > 隐私 > 全盘访问
- 按 + 按钮
- 添加您的终端应用程序(例如 /Applications/Utilities/Terminal.app 或 /Applications/iTerm.app)
- 重新启动您的终端应用程序
- 配置定时任务
- 可选,但强烈推荐:完成后从全磁盘访问中删除您的终端应用程序
问题。 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.deny
和 cron.deny
,但没有 at.allow
或 cron.allow
.
运行 sudo nano cron.allow
然后每行输入一个用户名。
为 at.allow
创建副本 sudo cp cron.allow at.allow
。
我创建了这两个文件并启动了 运行。
对于 Mojave,完全磁盘访问 可防止您更改系统文件(包括与隐私相关的数据以及 crontab 等系统配置)。
要启用访问权限:
- 转到系统偏好设置 > 安全和隐私 > 隐私 > 全盘访问
- 按 + 按钮
- 添加您的终端应用程序(例如 /Applications/Utilities/Terminal.app 或 /Applications/iTerm.app)
- 重新启动您的终端应用程序
- 配置定时任务
- 可选,但强烈推荐:完成后从全磁盘访问中删除您的终端应用程序