问题:
- 偶尔,我的 Macbook 从睡眠状态唤醒后会变得非常慢
- 我打开活动监视器,发现一些进程
makewhatis
占用了 100% 的 CPU - 我终止了该进程然后一切又恢复正常
问题:
- 我猜测这些进程是 cron 作业。对吗?
- 杀了他们可以吗?
- 有没有什么办法可以让这个问题不再发生呢?
- 这在 Snow Leopard 上修复了吗?
我在 MacBook5,1 上使用 Leopard (10.5.8)
答案1
launchd
您几乎肯定会看到启动periodic daily
、periodic weekly
和常规系统维护作业的效果periodic monthly
,这些作业会执行诸如滚动日志和删除未使用的临时文件等操作。这些作业通常在凌晨 3 点运行,但如果您的计算机当时处于睡眠状态,launchd
则会在下次计算机唤醒时启动它们。
运行时间最长、磁盘 I/O 最多的作业可能是每周(周六凌晨 3 点)的makewhatis
作业,该作业更新传统 Unix 命令使用的文件名数据库locate
(有点像老式的 mds/Spotlight)。您可以/etc/defaults/periodic.conf
通过更改以下行来禁用此功能
weekly_whatis_enable="YES"
到
weekly_whatis_enable="NO"
如果您在系统中添加或修改了大量文件,下次makewhatis
运行时可能需要很长时间。如果您每次都终止它并且它永远无法完成,那么下周它将不得不重新开始。我通常不会受到困扰makewhatis
,即使我的系统并不快,尤其是我的磁盘。我真正注意到它的唯一一次是当我向系统添加了大量文件时,例如在检查 NetBSD 操作系统的整个源代码树之后。
如果makewhatis
其他periodic
作业并不是您的全部问题,请注意,为使用该键的launchd
任何作业提供延迟到下一次唤醒服务。以下是快速查看系统上哪些启动的作业使用该键的方法:launchd
StartCalendarInterval
grep -r StartCalendarInterval {/System,,~}/Library/Launch{Daemons,Agents}/
(注意:我认为该语句中的花括号可能是一种bash
“主义”)
答案2
要查看它们是否是 cron 作业...请执行以下操作
crontab -l
在终端
你很可能会得到
crontab: no crontab for (user)
在 10.5 及更高版本中,大多数计划作业均由 launchd 处理。
要检查由 launchd 控制的计划作业,请执行以下操作
sudo launchctl list
如果您看到任何作业返回“1
那表明它存在问题”。