有什么东西占满了我的系统日志文件,以至于 console.app 只能显示每个文件的最后半小时。看起来好像有什么东西在试图逃离它的沙箱,但我不确定是什么……我收到了许多重复的消息,如下所示:
Feb 3 00:29:57 Brians-mini sandboxd[16]: syslogd(15) deny file-read-data /private/var/log/asl/StoreData
Feb 3 00:29:57 Brians-mini sandboxd[16]: syslogd(15) deny mach-task-name
Feb 3 00:29:57 Brians-mini sandboxd[16]: syslogd(15) deny file-read-data /private/var/log/asl/StoreData
Feb 3 00:29:57 Brians-mini sandboxd[16]: syslogd(15) deny mach-task-name
Feb 3 00:29:59: --- last message repeated 1 time ---
Feb 3 00:29:57 Brians-mini sandboxd[16]: *** process 16 exceeded 500 log message per second limit - remaining messages this second discarded ***
Feb 3 00:29:57 Brians-mini sandboxd[16]: syslogd(15) deny mach-task-name
Feb 3 00:30:00: --- last message repeated 499 times ---
Feb 3 00:29:58 Brians-mini sandboxd[16]: *** process 16 exceeded 500 log message per second limit - remaining messages this second discarded ***
Feb 3 00:29:58 Brians-mini sandboxd[16]: syslogd(15) deny mach-task-name
编辑以添加:
活动监视器显示 sandboxd 占用了 60% 的 CPU,而 syslogd 占用了 120%。现在,我假设这是每个处理器(我使用的是 core 2 duo)但对于这两个进程来说,这仍然是一个可怕的 CPU 占用...
编辑:var/log/asl 根据要求:
drwxr-xr-x 25 root wheel 850 Jan 6 06:41 ./
drwxr-xr-x 47 root wheel 1598 Feb 4 15:16 ../
-rw-r----- 1 root admin 11414 Jan 4 11:49 2010.01.04.U0.G80.asl
-rw------- 1 root wheel 874 Jan 4 09:41 2010.01.04.U0.asl
-rw------- 1 acordex wheel 43862 Jan 4 17:53 2010.01.04.U501.asl
-rw-r--r-- 1 root wheel 44614 Jan 4 23:42 2010.01.04.asl
-rw-r----- 1 root admin 10241494 Jan 5 16:53 2010.01.05.U0.G80.asl
-rw------- 1 acordex wheel 669585 Jan 5 18:11 2010.01.05.U501.asl
-rw-r--r-- 1 root wheel 772889 Jan 5 23:42 2010.01.05.asl
-rw-r----- 1 root admin 9731 Jan 6 18:54 2010.01.06.U0.G80.asl
-rw------- 1 acordex wheel 404532 Jan 6 18:50 2010.01.06.U501.asl
-rw-r--r-- 1 root wheel 838013 Jan 6 18:53 2010.01.06.asl
-rw-r----- 1 root admin 52896 Sep 24 18:20 BB.2010.09.30.U0.G80.asl
-rw-r--r-- 1 root wheel 50908 Sep 29 10:30 BB.2010.09.30.asl
-rw-r----- 1 root admin 58875 Oct 30 11:18 BB.2010.10.31.U0.G80.asl
-rw-r--r-- 1 root wheel 46188 Oct 30 17:41 BB.2010.10.31.asl
-rw-r----- 1 root admin 10322 Nov 5 18:21 BB.2010.11.29.U0.G80.asl
-rw-r--r-- 1 root wheel 2159 Nov 4 17:21 BB.2010.11.29.asl
-rw-r----- 1 root admin 6586 Nov 9 14:06 BB.2010.11.30.U0.G80.asl
-rw-r--r-- 1 root wheel 23147 Nov 25 16:36 BB.2010.11.30.asl
-rw-r----- 1 root admin 21686 Dec 16 19:06 BB.2010.12.31.U0.G80.asl
-rw-r--r-- 1 root wheel 36951 Dec 23 18:32 BB.2010.12.31.asl
-rw-r--r-- 1 root wheel 2584 Jan 6 16:49 BB.2011.01.31.asl
-rw-r--r-- 1 root wheel 12 Jan 6 18:54 StoreData
-rw-r--r-- 1 root wheel 8 Jan 6 16:59 SweepStore
答案1
在我看来,它syslogd
本身就导致了问题 —— 它被沙盒化,远离其数据文件,因此当它试图访问它们时,它会生成一个沙盒错误,该错误会被传递给syslogd
,这会触发它再次尝试获取其文件……并且这会以最快的速度重复syslogd
进行sandboxd
。
/System/Library/LaunchDaemons/com.apple.syslogd.plist
检查(控制 syslogd 如何启动的 launchd 项)的内容。它应该有一个类似这样的部分:
<key>ProgramArguments</key>
<array>
<!--
Un-comment the following lines to run syslogd with a sandbox profile.
Sandbox profiles restrict processes from performing unauthorized
operations; so it may be necessary to update the profile
(/usr/share/sandbox/syslogd.sb) if any changes are made to the syslog
configuration (/etc/syslog.conf).
-->
<!--
<string>/usr/bin/sandbox-exec</string>
<string>-f</string>
<string>/usr/share/sandbox/syslogd.sb</string>
-->
<string>/usr/sbin/syslogd</string>
</array>
请注意,在上面的示例中(取自我的 Mac),syslogd 周围的沙盒包装器已被注释掉。您的 Mac 上是否也一样?如果不是,请重新添加注释标记,然后重新启动syslogd
(您可以使用 执行此操作launchctl
,但我只会重新启动机器)。
另一点需要注意的是:我查看了沙盒配置文件,/usr/share/sandbox/syslogd.sb
并且(在我这个外行看来)它确实拒绝mach-task-name
访问/private/var/log/asl/StoreData
——显然,Apple 尚未调试(/更新)配置文件以匹配syslogd
实际需要...
答案2
嗯,填充内容的进程是 sandboxd(进程 16)。
至于为什么它会记录这么多,我们需要查看更多消息才能了解问题所在。(从这个小片段来看,好像某个程序正在尝试做一些未经授权的事情——访问指定的文件——但这里没有太多信息。)
答案3
两种不同的想法:
尝试确定是否有由 sandboxd 生成的特定进程导致了这些错误。运行活动监视器应用并从窗口顶部的选择列表中选择“所有进程,按层次结构”。在列表中找到 sandboxd 并查看其下是否有任何子进程 - 子进程将被缩进。
日志消息提到了 /private/var/log/asl。查看手册页
aslmanager
和asl.conf
(aslmanager 的配置文件)。配置文件中有一个日志记录级别的设置。也许这个级别被提升到了更详细的级别。
答案4
当您启动到安全模式时会发生这种情况吗?
其他用户也发生这种情况吗?
console.log 中有什么线索吗?
你能粘贴结果吗ls -la /private/var/log/asl/
——也许那里有些不对劲。
您是否修改过/System/Library/LaunchDaemons/com.apple.aslmanager.plist
或/private/etc/asl.conf
您应该能够使用 syslog 查看 10.6 中过去 7 天的条目,syslog | grep -v sandboxd | grep -v "last message repeated" | tail -n 100
这将向您显示 ASL 中的最后 100 个非沙盒条目。也许这会为您提供有关正在发生的其他事情的线索。
如果 ASL 的容量很快达到上限,你可以尝试使用 max_store_size 临时增加 ASL 数据库的大小,
/private/etc/asl.conf
更多信息请参见手册页。执行此操作然后运行上面的 syslog 命令可能会产生一些有用的日志信息。