在Mac OS X上,如何从终端登录Console.app?


8

我已经看到在/dev/consoleMac OSX的几个脚本中使用,但我不确定它是如何使用的。我检查了Console.app并没有看到我的测试命令的结果:

echo test> / dev / console

被打印出去,那么它去哪里,或者你将如何使用它?


@Qosmo。此问题对超级用户100%有效,并且没有必要或没有理由进行迁移。
BinaryMisfit

有效并不意味着它会更好地服务吗?它为什么创建?无论如何,这只是一个建议......
勇敢的新手

Answers:


7

/dev/console设备与Console应用程序无关。

在Mac OS X 10.6中,控制台应用程序有两种数据源:正常日志文件(例如文件/var/log/)和通过(Apple扩展)syslog工具记录的消息。

如果您有要监视的日志文件,则可以使用“ 文件” >“ 打开...”菜单项(⌘O)在“ 控制台”中查看该文件。
注意:从Console的文件列表中删除文件的唯一方法似乎是使用其File > Move to Trash菜单项(⌘⌫); 如果您只是想在Console中停止观看,请准备好将文件从垃圾箱中取出。

您可以使用syslog命令行程序将消息发送到syslog工具。

syslog -s Your message goes here. \(quote special chars for the shell'!)'

但是,在默认配置下,此消息将永远不会显示在任何控制台视图中,因为它的“级别”太低而不重要。这个初始过滤是由syslogd引起的。它由asl.confsyslog.conf文件配置。如果其级别太低(syslog -s默认为最低级别),则默认配置不会存储大多数消息。控制台只能显示syslogd存储的消息。

您可以使用以下-l选项更改“级别”字段的值:

syslog -s -l notice This message should show up in \"All Messages\" \
  with a Facility of syslog.

notice水平是其(默认值)最低级的syslogd将存储的大多数消息。

这样生成的消息将显示在Console的内置“All Messsages”数据库搜索中
(该文件All Messages.aslquery/Applications/Utilities/Console.app/Contents/Resources/ASLQueries/技术上将其限制为消息,其中Facility字段“包含”空字符串,但任何Facility都可以轻松满足此条件值)。

如果您希望消息显示在Console的内置“控制台消息”数据库搜索中,那么您必须更具体一些。这只能说明(存储)具有该等于设施领域的消息com.apple.console(请参阅文件Console Messages.aslquery/Applications/Utilities/Console.app/Contents/Resources/ASLQueries/)。您可以通过选项设置“设施”字段,使用syslog生成此类消息-k

syslog -s -k Facility com.apple.console \
          -k Level notice \
          -k Message 'This will show up in "Console Messages"'

使用时-k,必须使用参数集指定所有选项和消息本身-k key value(我们不能用于-l设置级别)。这意味着我们必须将消息放在一个参数中,以便它可以是Message字段的值。


那么“logger”命令用于什么?它是syslog的一部分吗?
cwd

@cwd:它还使用syslog工具。Apple的syslog有两个主要接口:syslog(3)asl(3)。如今,前者在大多数Unix-y系统上都是相当标准的; 记录器使用它。后者是特定于Apple的扩展; 在系统日志命令使用它。控制台查看来自两者的消息,但“控制台消息”搜索需要Apple扩展的Facility值(记录器无法生成)。
克里斯约翰森

7

我用:

logger Hello World

总是适合我。将“hello world”转储到syslog,它应该出现在console.app中


0

我不是肯定的,但它可能是在登录窗口的用户名字段中输入> console时调用的设备。输入上面的内容后,它会转储CLI。


0

您可以写入您选择的文件,然后可以在控制台应用程序中查看。

如果您希望记录用户级别使用:

echo "test" > /Users/$USER/Library/Logs/your_script.log

或者为所有用户加载的东西:

echo "test" > /Library/Logs/your_script.log
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.