Jak mogę przekierować dane wyjściowe systemu OS X podczas pracy z sudo?


9

Korzystam z dtrusssystemu Mac OS X 10.9. Prostym przykładem jest:

sudo -c ls

Ale chciałbym uchwycić dane dtrusswyjściowe w pliku. Widziałem coś, co sugeruje, że mogę zrobić coś takiego:

sudo bash -c 'dtruss -c ls >x'

ale kiedy to robię, dane wyjściowe dtrussnadal trafiają do terminala, a lista plików z lszostaje przekierowana do pliku.

Jak mogę przekierować wyjście dtrussdo pliku?


1
dtruss prawdopodobnie pisze stderrzamiast stdoutwiedźmy >x. To pytanie wyjaśnia, co robić: Linux mniej zachowań i stderr
Nifle

Odpowiedzi:


9

Uruchomiłem to w ten sposób:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f mówi, aby śledzić procesy potomne.
  • -p określa identyfikator procesu do śledzenia.
  • 12345jest symbolem zastępczym dla identyfikatora procesu. Możesz to uzyskać, patrząc na toplub ps -A.
  • 2>wstawia standardowy błąd do pliku wyjściowego. Z jakiegoś powodu dtruss wyświetla wszystko na stderr.

Czy możesz rozszerzyć swoją odpowiedź, aby wyjaśnić, co to robi? Dzięki.
fixer1234

„-f” mówi następujące procesy potomne, „-p” określa identyfikator procesu do śledzenia, „2>” wstawia standardowy błąd do pliku wyjściowego. Z jakiegoś powodu dtruss wyświetla wszystko na stderr.
Luke Quinane

Czy 12345 jest symbolem zastępczym dla identyfikatora procesu (i skąd miałby on pochodzić)?
fixer1234

Jest to symbol zastępczy dla identyfikatora procesu. Możesz to uzyskać, patrząc na toplub ps -A.
Luke Quinane
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.