我正在维护一些 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 中是否存在错误消息。