GNU utils、ps auxf
は、フォレスト(ツリー)を含むプロセスリストを提供します。 BSD/OS Xシステムでこのコマンドに相当するものはありますか?
pstreeは通常、デフォルトのインストールの一部であるか、またはbsdシステムに簡単にインストールできます。それが私が使うものです。たとえば、Macでは macports を使用してインストールできます。
Htopも非常に優れたプロセスビューアーであり、下部のステータスバー(F5)のメインオプションの1つとして「ツリー」ビューがあります。
これまでのところ、OSXにこれを行う組み込み機能があるとは思わない。
しかし、私が stackexchange に投稿した答えもここにあります。プロセス階層を決定し、OSXの組み込みps(1)の出力を使用してインデントされた形式で出力する小さなPerlスクリプト。
OSX 10.6および10.9でテストされ、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
これはOSXでは機能しませんが、FreeBSDでは-dオプションを指定したps(1)コマンドです。このように見えます:
% 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]
GNU psが本当に好きな場合は、大きな3つのパッケージシステムのいずれかを介してOSXにインストールできます。
pkgsrc(NetBSD)-最も人気のあるUnixで動作するため、私のお気に入り
MacPorts(OSX)
Fink(Debian、ただしパッケージセットを共有せず、もちろんビルドを共有しません)
私がstackexchangeに投稿した回答へのリンクは次のとおりです: https://Apple.stackexchange.com/a/383505/364338
「ps」の私のバージョン(ラッパー)へのリンク: https://github.com/jhthorsen/snippets/blob/master/bin/ps
---更新---
OSXで "ps"に通常与えることができるすべての引数を取る(取る必要がありますか?)別のスクリプトを作成しました。
https://github.com/jhthorsen/snippets/blob/master/bin/ps
出力例:
$ ps Af
PID TTY STAT TIME COMMAND
1 ?? Ss 198:44.08 /sbin/launchd
141 ?? Ss 2:40.76 \_ /usr/sbin/syslogd
142 ?? Ss 6:54.11 \_ /usr/libexec/UserEventAgent (System)
145 ?? Ss 0:32.48 \_ /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
146 ?? Ss 1:12.84 \_ /usr/libexec/kextd
147 ?? Ss 18:51.47 \_ /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.f
148 ?? Ss 0:14.31 \_ /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
151 ?? Ss 59:43.39 \_ /usr/sbin/systemstats --daemon
441 ?? S 0:05.39 \_ /usr/sbin/systemstats --logger-helper /private/var/db/systemstats
...
> ps Af -o ppid,pid,cpu,command
PPID PID CPU COMMAND
0 1 0 /sbin/launchd
1 141 0 \_ /usr/sbin/syslogd
1 142 0 \_ /usr/libexec/UserEventAgent (System)
1 145 0 \_ /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
1 146 0 \_ /usr/libexec/kextd
1 147 0 \_ /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versi
1 148 0 \_ /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted
1 151 0 \_ /usr/sbin/systemstats --daemon
151 441 0 \_ /usr/sbin/systemstats --logger-helper /private/var/db/systemstats