W systemie Mac OS X jak mogę zalogować się do Console.app z terminala?

8

Widziałem użycie /dev/consolekilku skryptów w systemie Mac OSX, ale nie jestem pewien, w jaki sposób jest używany. Sprawdziłem Console.app i nie zobaczyłem wyników mojego polecenia testowego:

test echa> / dev / console

drukowane tam, więc dokąd to zmierza lub jak byś go użył?

cwd
źródło
@Qosmo. To pytanie jest w 100% ważne dla superużytkownika i nie ma potrzeby ani powodu, aby je migrować.
BinaryMisfit,
Utrzymanie ważności nie oznacza, że ​​lepiej byłoby tam służyć? Dlaczego został stworzony? W każdym razie to tylko sugestia ...
Odważny nowicjusz

Odpowiedzi:

7

/dev/consoleUrządzenie nie jest szczególnie związany z konsoli aplikacji.

W systemie Mac OS X 10.6 aplikacja konsolowa ma dwa rodzaje źródeł danych, które czyta: normalne pliki dziennika (np. Pliki w /var/log/) i wiadomości logowane za pomocą (syslog rozszerzonego Apple).

Jeśli masz plik dziennika, który chcesz monitorować, możesz użyć pozycji menu Plik > Otwórz… (⌘O), aby wyświetlić plik w konsoli .
Uwaga: wydaje się, że jedynym sposobem na usunięcie pliku z listy plików konsoli jest skorzystanie z menu Plik > Przenieś do Kosza (⌘⌫); przygotuj się na wyciągnięcie pliku z Kosza, jeśli chcesz przestać go oglądać w konsoli .

Za pomocą programu wiersza polecenia syslog można wysyłać wiadomości do narzędzia syslog.

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

Jednak w domyślnej konfiguracji ten komunikat nigdy nie pojawi się w żadnym z widoków konsoli, ponieważ jego „poziom” jest zbyt niski, aby był ważny. To wstępne filtrowanie jest spowodowane przez syslogd . Jest konfigurowany przez pliki asl.confi syslog.conf. Domyślna konfiguracja nie przechowuje większości wiadomości, jeśli ich poziom jest zbyt niski (i syslog -sdomyślnie najniższy poziom). Konsola może wyświetlać tylko wiadomości zapisane przez syslogd .

Możesz zmienić wartość pola Poziom, korzystając z -lopcji:

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

noticePoziom jest (domyślnie) najniższy poziom, dla którego syslogd będzie przechowywać większość wiadomości.

Komunikat generowany w ten sposób pojawi się w konsoli „s wbudowaną«Wszystkie Komunikat ten»przeszukiwanie bazy danych
(plik All Messages.aslqueryw /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/technicznie ogranicza go do wiadomości, gdzie pole Instrument«zawiera»pusty łańcuch, ale warunek ten jest trywialnie spełnione przez każdego instrumentu wartość).

Jeśli chcesz, aby Twoja wiadomość pojawi się w konsoli „s wbudowaną«Konsola»Komunikaty wyszukiwania bazy danych, to musi być nieco bardziej szczegółowe. Pokazuje tylko (zapisane) wiadomości, które mają pole Facility równe com.apple.console(patrz plik Console Messages.aslqueryw /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/). Możesz generować takie wiadomości za pomocą syslog poprzez -kopcję ustawienia pola Facility.

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

Podczas używania -kwszystkie opcje i sama wiadomość muszą być określone zestawami -k key valueargumentów (nie możemy użyć -ldo ustawienia poziomu). Oznacza to, że musimy umieścić wiadomość w jednym argumencie, aby mogła to być wartość pola Wiadomość.

Chris Johnsen
źródło
Więc do czego służy polecenie „logger”? Czy to część syslog?
cwd
@cwd: Korzysta również z narzędzia syslog. Syslog Apple ma dwa główne interfejsy: syslog (3) i asl (3) . Te pierwsze są obecnie dość standardowe w większości systemów uniksowych; logger go używa. Ten ostatni jest rozszerzeniem specyficznym dla Apple; syslog Polecenie używa. Konsola widzi wiadomości od obu, ale wyszukiwanie „Wiadomości konsoli” wymaga wartości rozszerzonej przez Apple (której rejestrator nie może wykonać).
Chris Johnsen
7

używam:

logger Hello World

zawsze dla mnie działa. zrzuca „hello world” do syslog, który powinien pojawić się w pliku console.app

peelman
źródło
0

Nie jestem pewien, ale może to być urządzenie wywoływane, gdy> nazwa konsoli jest wpisana w polu nazwy użytkownika w oknie logowania. Kiedy wpiszesz powyższe, zrzuci ci CLI.

iklier
źródło
0

Możesz napisać do wybranego pliku, który możesz następnie wyświetlić w aplikacji konsoli.

Jeśli chcesz zalogować się na poziomie użytkownika, użyj:

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

lub dla czegoś, co jest ładowane dla wszystkich użytkowników:

echo "test" > /Library/Logs/your_script.log
ridogi
źródło