Czy rozpaczliwie ważne jest, aby użyć jego wersji wiersza poleceń? Jeśli chcesz tylko zobaczyć drzewo, skorzystaj z „Monitora aktywności” i wybierz „Wszystkie procesy, hierarchicznie”?
AlanGBaker
Odpowiedzi:
9
pstree jest zazwyczaj częścią domyślnej instalacji lub można ją łatwo zainstalować w systemach bsd. Tego używam. Na przykład możesz zainstalować go za pośrednictwem Macports na Macu .
Aby zainstalować w OSX z Homebrew, użyj brew install htop.
jesears
3
Jak dotąd nie wierzę, że OSX ma wbudowaną funkcję, która to robi.
Ale oto odpowiedź, którą zamieściłem również na stackexchange ; mały skrypt perla, który określa hierarchię procesów i drukuje ją w wciętej formie, używając danych wyjściowych wbudowanego ps (1) systemu OSX.
Testowany na OSX 10.6 i 10.9, i powinien również działać na systemie Linux (Sci Linux 6).
#!/usr/bin/perl
# treeps -- show ps(1) as process hierarchy -- v1.0 [email protected] 07/08/14
my %p; # Global array of pid info
sub PrintLineage($$) { # Print proc lineage
my ($pid, $indent) = @_;
printf("%s |_ %-8d %s\n", $indent, $pid, $p{$pid}{cmd}); # print
foreach my $kpid (sort {$a<=>$b} @{ $p{$pid}{kids} } ) { # loop thru kids
PrintLineage($kpid, " $indent"); # Recurse into kids
}
}
# MAIN
open(FD, "ps axo ppid,pid,command|");
while ( <FD> ) { # Read lines of output
my ($ppid,$pid,$cmd) = ( $_ =~ m/(\S+)\s+(\S+)\s(.*)/ ); # parse ps(1) lines
$p{$pid}{cmd} = $cmd;
$p{$pid}{kids} = ();
push(@{ $p{$ppid}{kids} }, $pid); # Add our pid to parent's kid
}
PrintLineage(1, ""); # recurse to print lineage starting with pid 1
Jak nazywa się ten pakiet? MacPorts jest tym, czego szukam, ale byłoby pomocne, gdyby inni znali wszystkie trzy.
Jim Stewart,
2
-1 - wydaje się nieco niepoprawny. jeśli to prawda, poprzyj swoją odpowiedź, podając więcej szczegółów na temat instalacji przy użyciu tych systemów pakietów, a nie tylko wspominając o systemach zarządzania pakietami (zwłaszcza MacPorts)
Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
Odpowiedzi:
pstree jest zazwyczaj częścią domyślnej instalacji lub można ją łatwo zainstalować w systemach bsd. Tego używam. Na przykład możesz zainstalować go za pośrednictwem Macports na Macu .
źródło
ps
nie ma tej umiejętności, ale sobie poradzępstree
. Dzięki, że o tym wspomniałeś!brew install pstree
z hombrewHtop jest również bardzo dobrą przeglądarką procesów i ma widok „drzewa” jako jedną z głównych opcji na dolnym pasku stanu (F5).
źródło
brew install htop
.Jak dotąd nie wierzę, że OSX ma wbudowaną funkcję, która to robi.
Ale oto odpowiedź, którą zamieściłem również na stackexchange ; mały skrypt perla, który określa hierarchię procesów i drukuje ją w wciętej formie, używając danych wyjściowych wbudowanego ps (1) systemu OSX.
Testowany na OSX 10.6 i 10.9, i powinien również działać na systemie Linux (Sci Linux 6).
źródło
To nie działa w OSX, ale dla FreeBSD jest to polecenie ps (1) z opcją -d. Wygląda tak:
źródło
Jeśli naprawdę kochasz GNU ps, możesz zainstalować go na OSX za pomocą jednego z 3 dużych systemów pakietów:
pkgsrc (NetBSD) - mój ulubiony, ponieważ działa na najpopularniejszych Uniksach
MacPorts (OSX)
Fink (Debian, ale nie współużytkuje zestawu pakietów i oczywiście nie udostępnia kompilacji)
źródło
Oto link do odpowiedzi, którą zamieściłem na stackexchange: /apple//a/383505/364338
Link do mojej wersji (otoki) „ps”: https://github.com/jhthorsen/snippets/blob/master/bin/ps
--- Aktualizacja ---
Zrobiłem inny skrypt, który bierze (powinien wziąć?) Wszystkie argumenty, które normalnie możesz podać „ps” w OSX:
https://github.com/jhthorsen/snippets/blob/master/bin/ps
Przykładowe dane wyjściowe:
źródło