Mac OSX 10.6 中的系统日志

Mac OSX 10.6 中的系统日志

有什么东西占满了我的系统日志文件,以至于 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

两种不同的想法:

  1. 尝试确定是否有由 sandboxd 生成的特定进程导致了这些错误。运行活动监视器应用并从窗口顶部的选择列表中选择“所有进程,按层次结构”。在列表中找到 sandboxd 并查看其下是否有任何子进程 - 子进程将被缩进。

  2. 日志消息提到了 /private/var/log/asl。查看手册页aslmanagerasl.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 命令可能会产生一些有用的日志信息。

相关内容