Gibt in den GNU-Utils ps auxf
die Prozessliste mit Gesamtstruktur (Baum) an. Gibt es auf BSD / OS X-Systemen eine Entsprechung für diesen Befehl?
Gibt in den GNU-Utils ps auxf
die Prozessliste mit Gesamtstruktur (Baum) an. Gibt es auf BSD / OS X-Systemen eine Entsprechung für diesen Befehl?
Antworten:
pstree ist in der Regel Teil der Standardinstallation oder kann problemlos auf BSD-Systemen installiert werden. Das ist was ich benutze. Beispielsweise können Sie es über Macports auf einem Mac installieren .
ps
diese Fähigkeit nicht vorhanden ist, aber ich werde mich damit zurechtfinden pstree
. Danke, dass du es erwähnt hast!
Bisher glaube ich nicht, dass OSX einen eingebauten hat, der dies bewirkt.
Aber hier ist eine Antwort, die ich auch auf stackexchange gepostet habe. Ein kleines Perl-Skript, das die Prozesshierarchie bestimmt und sie unter Verwendung der Ausgabe von OSXs integriertem ps (1) in eingerückter Form ausgibt.
Getestet unter OSX 10.6 und 10.9 und sollte auch unter Linux funktionieren (Sci Linux 6).
#!/usr/bin/perl
# treeps -- show ps(1) as process hierarchy -- v1.0 erco@seriss.com 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
Dies funktioniert nicht unter OSX, aber für FreeBSD ist es der Befehl ps (1) mit der Option -d. Sieht aus wie das:
% ps auxwwwd
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 0 0,0 0,0 0 304 - DLs 15:23 0:05,12 [kernel]
root 11 400,0 0,0 0 64 - RL 15:23 712:54,09 - [idle]
root 1 0,0 0,0 10004 140 - ILs 15:23 0:00,02 - /sbin/init --
root 309 0,0 0,0 11392 1372 - Is 15:23 0:00,08 |-- dhclient: em0 [priv] (dhclient)
_dhcp 355 0,0 0,0 11556 1444 - Is 15:23 0:00,06 |-- dhclient: em0 (dhclient)
root 404 0,0 0,0 14236 664 - Ss 15:23 0:01,57 |-- /sbin/devd
root 546 0,0 0,0 11360 1320 - Ss 15:23 0:00,63 |-- /usr/sbin/syslogd -s
root 678 0,0 0,0 17908 1252 - Is 15:24 0:00,00 |-- /usr/sbin/sshd
root 751 0,0 0,0 18312 1312 - Is 15:25 0:00,04 | `-- sshd: trasz [priv] (sshd)
trasz 753 0,0 0,0 18948 2012 - S 15:25 0:01,83 | `-- sshd: trasz@pts/0 (sshd)
trasz 754 0,0 0,0 13948 0 0 IWs - 0:00,00 | `-- -zsh (zsh)
trasz 765 0,0 0,0 15164 1456 0 I+ 15:25 0:00,01 | `-- tmux: client (/tmp/tmux-1001/default) (tmux)
root 681 0,0 0,0 15744 1740 - Ss 15:24 0:00,39 |-- sendmail: accepting connections (sendmail)
smmsp 684 0,0 0,0 15588 804 - Is 15:24 0:00,01 |-- sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail)
root 688 0,0 0,0 11384 640 - Is 15:24 0:00,10 |-- /usr/sbin/cron -s
root 733 0,0 0,0 12428 484 - Is 15:24 0:00,04 |-- /usr/sbin/autounmountd
root 738 0,0 0,0 10860 1112 - Is 15:24 0:00,00 |-- /usr/sbin/automountd
trasz 767 0,0 0,4 30036 17168 - Ss 15:25 0:01,97 |-- tmux: server (/tmp/tmux-1001/default) (tmux)
trasz 768 0,0 0,1 13888 2592 1 Is+ 15:25 0:00,05 | |-- -zsh (zsh)
trasz 11313 0,0 0,1 13952 3984 2 Is+ 21:05 0:00,07 | |-- -zsh (zsh)
trasz 11531 0,0 0,1 13952 3980 3 Is+ 21:55 0:00,05 | |-- -zsh (zsh)
trasz 37987 0,0 0,1 13920 4260 5 Ss 22:06 0:00,04 | |-- -zsh (zsh)
trasz 37998 0,0 0,1 11796 2512 5 R+ 22:07 0:00,00 | | `-- ps auxwwwd
trasz 25549 0,0 0,1 13952 3980 4 Is+ 21:57 0:00,08 | `-- -zsh (zsh)
root 743 0,0 0,0 10900 1100 v0 Is+ 15:24 0:00,00 |-- /usr/libexec/getty Pc ttyv0
root 744 0,0 0,0 10900 1100 v1 Is+ 15:24 0:00,01 |-- /usr/libexec/getty Pc ttyv1
root 745 0,0 0,0 10900 1100 v2 Is+ 15:24 0:00,00 |-- /usr/libexec/getty Pc ttyv2
root 746 0,0 0,0 10900 1100 v3 Is+ 15:24 0:00,01 |-- /usr/libexec/getty Pc ttyv3
root 747 0,0 0,0 10900 1100 v4 Is+ 15:24 0:00,00 |-- /usr/libexec/getty Pc ttyv4
root 748 0,0 0,0 10900 1100 v5 Is+ 15:24 0:00,00 |-- /usr/libexec/getty Pc ttyv5
root 749 0,0 0,0 10900 1100 v6 Is+ 15:24 0:00,00 |-- /usr/libexec/getty Pc ttyv6
root 750 0,0 0,0 10900 1100 v7 Is+ 15:24 0:00,01 `-- /usr/libexec/getty Pc ttyv7
root 2 0,0 0,0 0 16 - DL 15:23 0:00,00 - [crypto]
root 3 0,0 0,0 0 16 - DL 15:23 0:00,00 - [crypto returns]
root 4 0,0 0,0 0 32 - DL 15:23 2:16,26 - [cam]
root 5 0,0 0,0 0 16 - DL 15:23 0:00,00 - [mpt_recovery0]
root 6 0,0 0,0 0 16 - DL 15:23 0:00,01 - [soaiod1]
root 7 0,0 0,0 0 16 - DL 15:23 0:00,01 - [soaiod2]
root 8 0,0 0,0 0 16 - DL 15:23 0:00,01 - [soaiod3]
root 9 0,0 0,0 0 16 - DL 15:23 0:00,01 - [soaiod4]
root 10 0,0 0,0 0 16 - DL 15:23 0:00,00 - [audit]
root 12 0,0 0,0 0 800 - WL 15:23 2:21,06 - [intr]
root 13 0,0 0,0 0 48 - DL 15:23 0:00,03 - [geom]
root 14 0,0 0,0 0 240 - DL 15:23 0:10,36 - [usb]
root 15 0,0 0,0 0 16 - DL 15:23 0:00,00 - [sctp_iterator]
root 16 0,0 0,0 0 16 - DL 15:23 0:23,43 - [rand_harvestq]
root 17 0,0 0,0 0 48 - DL 15:23 0:35,10 - [pagedaemon]
root 18 0,0 0,0 0 16 - DL 15:23 0:05,36 - [vmdaemon]
root 19 0,0 0,0 0 32 - DL 15:23 1:10,04 - [bufdaemon]
root 20 0,0 0,0 0 16 - DL 15:23 0:06,68 - [bufspacedaemon]
root 21 0,0 0,0 0 16 - DL 15:23 0:35,66 - [syncer]
root 22 0,0 0,0 0 16 - DL 15:23 0:00,86 - [vnlru]
root 23 0,0 0,0 0 16 - DL 15:23 0:04,96 - [racctd]
Wenn Sie GNU ps wirklich lieben, können Sie es über eines der drei großen Paketsysteme auf OSX installieren:
pkgsrc (NetBSD) - mein Favorit, da es unter den beliebtesten Unixen funktioniert
MacPorts (OSX)
Fink (Debian, teilt aber nicht das Paketset und natürlich nicht die Builds)