Dalam utils GNU, ps auxf
berikan daftar proses dengan hutan (pohon). Apakah ada persamaan untuk perintah ini di sistem BSD / OS X?
Dalam utils GNU, ps auxf
berikan daftar proses dengan hutan (pohon). Apakah ada persamaan untuk perintah ini di sistem BSD / OS X?
Jawaban:
pstree umumnya merupakan bagian dari instalasi default atau mudah diinstal pada sistem bsd. Itu yang saya gunakan. Misalnya, Anda dapat menginstalnya melalui macports di mac.
ps
tidak memiliki kemampuan ini, tapi aku akan mengatur sendiri pstree
. Terima kasih telah menyebutkannya!
Sejauh ini saya tidak percaya OSX memiliki built in yang melakukan ini.
Tapi inilah jawaban yang saya posting di stackexchange juga; skrip perl kecil yang menentukan hierarki proses dan mencetaknya dalam bentuk lekukan menggunakan output dari OSX built-in ps (1).
Diuji pada OSX 10.6 dan 10.9, dan harus bekerja di linux juga (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
Ini tidak berfungsi pada OSX, tetapi untuk FreeBSD itu adalah perintah ps (1) dengan opsi -d. Terlihat seperti ini:
% 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]
Jika Anda benar-benar menyukai GNU ps, Anda dapat menginstalnya ke OSX melalui salah satu dari 3 sistem paket besar:
pkgsrc (NetBSD) - favorit saya karena berfungsi pada Unix paling populer
MacPorts (OSX)
Fink (Debian, tetapi tidak membagikan paket, dan tentu saja tidak membagikan build)