8

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

echo test > /dev/console

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

4 ответа4

7

я использую:

logger Hello World

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

7

Устройство /dev/console не имеет особого отношения к консольному приложению.

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

Если у вас есть файл журнала, который вы хотите отслеживать, вы можете использовать пункт меню File > Open… (⌘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/). Вы можете создавать такие сообщения с помощью syslog с помощью опции -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.

0

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

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

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

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

echo "test" > /Library/Logs/your_script.log
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .