在 OS X 10.10 上运行 Cron 守护进程

在 OS X 10.10 上运行 Cron 守护进程

我正在维护一些 OS X 10.10 机器,这些机器需要 cron 来执行各种任务(监视进程、/tmp 清理程序等)。其中一台机器神秘地停止了它的 cron 守护进程,我似乎无法将其恢复,除非/usr/sbin/cron以 root 身份手动运行命令。

ssh这实际上是不可维护的;我们对这些机器的稳定性非常不信任,因此我们在 crontab 中安排了一些交错重启,因此每次重启时都必须有人进入并重新启动 cron。

我尝试卸载并重新加载 launchd 的 cron plist:

launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist
launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist

我以为这样就可以启动它了,但是却没有。然后我尝试:

launchctl start /System/Library/LaunchDaemons/com.vix.cron.plist

但这也没有任何效果。进程列表中仍然没有cron,cron 作业未运行,并且launchctl list显示- 0 com.vix.cron

放弃 cron 转而使用纯 launchd 是解决这个问题的一种方法,但是这需要进一步分化我们的 linux 和 mac 代码,并且需要进行大量的测试,坦率地说,需要对 launchd 更加熟悉。

我对 OSX 还比较陌生,不知道下一步该怎么做。如何让 cron 在 OSX 10.10 上运行并在启动时启动?


更新:

/etc/crontab存在为空文件,但所有用户在 中都有各自的 crontab /usr/lib/cron/tabs。在 中搜索 cron/var/log/system.log不会出现除sudo cat在 crontab 文件上调用之外的任何结果。

如果我再次运行此命令:

launchctl load -w /System/Library/LaunchDaemons/com.vix.cron.plist

我收到错误Operation already in progress

答案1

如果有任何 cron 选项卡(/etc/crontab 中的全局 crontab 或 /usr/lib/cron/tabs/* 中的每用户选项卡),launchd 应该会自动启动 cron。请注意,它不支持 /etc/cron.d/,因此如果您将作业放在那里,它将不会执行任何操作。

如果相关位置至少有一个文件但仍未启动,请检查 /var/log/system.log 中是否存在错误消息。

相关内容