¿Es desesperadamente importante que uses una versión de línea de comando? Si solo desea ver el árbol, ¿por qué no usar "Monitor de actividad" y elegir "Todos los procesos, jerárquicamente"?
AlanGBaker
Respuestas:
9
pstree es generalmente parte de la instalación predeterminada o fácilmente instalable en sistemas bsd. Eso es lo que yo uso. Por ejemplo, puede instalarlo a través de macports en una mac.
Htop también es un visor de procesos realmente bueno, y tiene una vista de "árbol" como una de sus principales opciones en la barra de estado inferior (F5).
Para instalar en OSX con homebrew, use brew install htop.
jsears
3
Hasta ahora no creo que OSX tenga una función integrada que haga esto.
Pero aquí hay una respuesta que publiqué en stackexchange también; un pequeño script en perl que determina la jerarquía del proceso y lo imprime en forma de sangría usando la salida del ps (1) incorporado de OSX.
Probado en OSX 10.6 y 10.9, y debería funcionar también en 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
¿Cómo se llama el paquete? MacPorts es lo que estoy buscando, pero sería útil que otros conocieran los tres.
Jim Stewart el
2
-1 - parece algo incorrecto. si es correcto, respalde su respuesta con más detalles sobre cómo instalar utilizando estos sistemas de paquetes en lugar de solo mencionar los sistemas de administración de paquetes (especialmente MacPorts)
Respuestas:
pstree es generalmente parte de la instalación predeterminada o fácilmente instalable en sistemas bsd. Eso es lo que yo uso. Por ejemplo, puede instalarlo a través de macports en una mac.
fuente
ps
no tenga esta habilidad, pero me las arreglarépstree
. Gracias por mencionarlo!brew install pstree
con hombrewHtop también es un visor de procesos realmente bueno, y tiene una vista de "árbol" como una de sus principales opciones en la barra de estado inferior (F5).
fuente
brew install htop
.Hasta ahora no creo que OSX tenga una función integrada que haga esto.
Pero aquí hay una respuesta que publiqué en stackexchange también; un pequeño script en perl que determina la jerarquía del proceso y lo imprime en forma de sangría usando la salida del ps (1) incorporado de OSX.
Probado en OSX 10.6 y 10.9, y debería funcionar también en Linux (Sci Linux 6).
fuente
Esto no funciona en OSX, pero para FreeBSD es el comando ps (1) con la opción -d. Se ve como esto:
fuente
Si realmente te gusta GNU ps, puedes instalarlo en OSX a través de uno de los 3 grandes sistemas de paquetes:
pkgsrc (NetBSD): mi favorito ya que funciona en los Unix más populares
MacPorts (OSX)
Fink (Debian, pero no comparte el paquete y, por supuesto, no comparte las compilaciones)
fuente