В Mac OS X как я могу войти в Console.app из терминала?

8

Я видел использование /dev/consoleв нескольких скриптах для Mac OSX, но я не уверен, как это используется. Я проверил Console.app и не увидел результатов моей тестовой команды:

эхо-тест> / dev / console

там печатается, так куда же он денется или как вы будете его использовать?

УХО
источник
@Qosmo. Этот вопрос на 100% действителен для Суперпользователя, и нет необходимости или причины для его миграции.
BinaryMisfit
Быть действительным не значит, что там лучше обслужат? Почему это было создано? В любом случае, это всего лишь предложение ...
Храбрый Новичок

Ответы:

7

/dev/consoleУстройство не особенно связано с консоли приложения.

В Mac OS X 10.6 консольное приложение имеет два вида источников данных, которые оно читает: обычные файлы журналов (например, файлы в /var/log/) и сообщения, записываемые с помощью (расширенного Apple) средства системного журнала .

Если у вас есть файл журнала, который вы хотите отслеживать, вы можете использовать пункт меню Файл > Открыть… (⌘O), чтобы просмотреть файл в консоли .
Примечание. Единственный способ удалить файл из списка файлов консоли , по-видимому, - использовать пункт меню « Файл» > « Переместить в корзину» (⌘⌫); будьте готовы вытащить файл из корзины, если вы просто хотите прекратить его просмотр в консоли .

Вы можете использовать программу командной строки syslog для отправки сообщений в средство syslog.

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

Однако в конфигурации по умолчанию это сообщение никогда не будет отображаться ни в одном из представлений консоли, поскольку его «уровень» слишком низок, чтобы быть важным. Эта начальная фильтрация вызвана syslogd . Он конфигурируется asl.confи syslog.confфайлов. Конфигурация по умолчанию не хранит большинство сообщений, если их уровень слишком низок (и по syslog -sумолчанию имеет самый низкий уровень). Консоль может показывать только те сообщения, которые были сохранены syslogd .

Вы можете изменить значение поля Уровень, используя -lопцию:

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

noticeУровень является ( по умолчанию) низкий уровень , для которого SyslogD будет хранить большинство сообщений.

Сообщение генерируется , как это будет отображаться в консоли «s встроенный„Все Messsages“поиск в базе данных
(файл All Messages.aslqueryв /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/технически ограничивает его сообщения , где поле Facility„содержит“пустую строку, но это условие заведомо выполнено любым Facility значение).

Если вы хотите , чтобы ваше сообщение появится в консоли «s встроенной„консольных сообщений“поиск в базе данных, то вы должны быть немного более конкретными. Он показывает только (сохраненные) сообщения, которые имеют поле Facility, равное com.apple.console(см. Файл Console Messages.aslqueryв /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/). Вы можете генерировать такие сообщения с помощью системного журнала, -kустановив поле Facility.

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"? Это часть системного журнала?
cwd
@cwd: он также использует функцию системного журнала. Системный журнал Apple имеет два основных интерфейса: syslog (3) и asl (3) . Первое довольно стандартно в большинстве Unix-систем в наши дни; регистратор использует это. Последнее является специфичным для Apple расширением; команда syslog использует его. Консоль видит сообщения от обоих, но для поиска «Консольные сообщения» требуется значение расширенного средства Apple (которое регистратор не может сделать).
Крис Джонсен,
7

я использую:

logger Hello World

у меня всегда работает выводит "привет мир" в системный журнал, который должен отображаться в console.app

PeelMan
источник
0

Я не уверен, но это может быть устройство, вызываемое, когда> console вводится в поле username окна входа в систему. Когда вы вводите выше, он сбрасывает вас CLI.

iklier
источник
0

Вы можете записать в файл по вашему выбору, который вы могли бы затем просмотреть в консольном приложении.

Если вы хотите войти для использования на уровне пользователя:

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

или для чего-то, что загружается для всех пользователей:

echo "test" > /Library/Logs/your_script.log
ridogi
источник