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.