উত্তর:
আপনি হোমব্রেইউ (আমার ব্যক্তিগত প্রিয়), ম্যাকপোর্টস বা ফিংকpstree
ব্যবহার করে কমান্ডটি ইনস্টল করতে পারেন এবং আপনার ম্যাকের প্রক্রিয়াগুলির জন্য একটি কমান্ড-লাইন, ট্রি ভিউ পাবেন।
হোমব্রু ইনস্টল হয়ে, কেবল চালান:
brew install pstree
pstree
কমান্ড লাইন থেকে এটি ব্যবহার করুন ।
নীচের ছোট্ট পার্ল স্ক্রিপ্টটি আমি 'ট্রিপস' বলেছি যা ঠিক এটি করা উচিত; লিনাক্সে কাজ করে (সায়েন্স লিনাক্স 6) + ওএসএক্স (10.6, 10.9)
উদাহরণ আউটপুট:
$ ./treeps
|_ 1 /sbin/launchd
|_ 10 /usr/libexec/kextd
|_ 11 /usr/sbin/DirectoryService
|_ 12 /usr/sbin/notifyd
|_ 118 /usr/sbin/coreaudiod
|_ 123 /sbin/launchd
[..]
|_ 157 /Library/Printers/hp/hpio/HP Device [..]
|_ 172 /Applications/Utilities/Terminal.app [..]
|_ 174 login -pf acct
|_ 175 -tcsh
|_ 38571 su - erco
|_ 38574 -tcsh
এখানে কোড ..
#!/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} = (); <- this line is not needed and can cause incorrect output
push(@{ $p{$ppid}{kids} }, $pid); # Add our pid to parent's kid
}
PrintLineage(($ARGV[0]) ? $ARGV[0] : 1, ""); # recurse to print lineage starting with specified PID or PID 1.
treeps | cut -c 1-$COLUMNS
আপনার বর্তমান টার্মিনাল উইন্ডোর প্রস্থে দীর্ঘ লাইনগুলি কেটে দেবে। (অথবা ভেরিয়েবলের 100
পরিবর্তে একটি সাধারণ সংখ্যা $COLUMNS
)
brew
নিজেই - আপডেট করার জন্য একটি দীর্ঘ সময় গ্রহণ, এবং আমাকে টার্মিনাল যেখানে এটি চলমান কিছু বলার; সুতরাং, আমার জন্য, এই উত্তর একটি রত্ন!
আমি গ্রেগ এরকোলানোর পার্ল স্ক্রিপ্টটি পাইথন স্ক্রিপ্টে রূপান্তরিত করেছি।
#!/usr/bin/env python2.7
import subprocess as subp
import os.path
import sys
import re
from collections import defaultdict
def psaxo():
cmd = ['ps', 'axo', 'ppid,pid,comm']
proc = subp.Popen(cmd, stdout=subp.PIPE)
proc.stdout.readline()
for line in proc.stdout:
yield line.rstrip().split(None,2)
def hieraPrint(pidpool, pid, prefix=''):
if os.path.exists(pidpool[pid]['cmd']):
pname = os.path.basename(pidpool[pid]['cmd'])
else:
pname = pidpool[pid]['cmd']
ppid = pidpool[pid]['ppid']
pppid = pidpool[ppid]['ppid']
try:
if pidpool[pppid]['children'][-1] == ppid:
prefix = re.sub(r'^(\s+\|.+)[\|`](\s+\|- )$', '\g<1> \g<2>', prefix)
except IndexError:
pass
try:
if pidpool[ppid]['children'][-1] == pid:
prefix = re.sub(r'\|- $', '`- ', prefix)
except IndexError:
pass
sys.stdout.write('{0}{1}({2}){3}'.format(prefix,pname,pid, os.linesep))
if len(pidpool[pid]['children']):
prefix = prefix.replace('-', ' ')
for idx,spid in enumerate(pidpool[pid]['children']):
hieraPrint(pidpool, spid, prefix+' |- ')
if __name__ == '__main__':
pidpool = defaultdict(lambda:{"cmd":"", "children":[], 'ppid':None})
for ppid,pid,command in psaxo():
ppid = int(ppid)
pid = int(pid)
pidpool[pid]["cmd"] = command
pidpool[pid]['ppid'] = ppid
pidpool[ppid]['children'].append(pid)
hieraPrint(pidpool, 1, '')
উদাহরণ আউটপুট:
launchd(1)
|- syslogd(38)
|- UserEventAgent(39)
|- kextd(41)
|- fseventsd(42)
|- thermald(44)
|- appleeventsd(46)
...
|- iTerm(2879)
| |- login(2883)
| | `- -bash(2884)
| | `- Python(17781)
| | `- ps(17782)
| |- login(7091)
| | `- -bash(7092)
| | `- ssh(7107)
| `- login(7448)
| `- -bash(7449)
| `- bash(9040)
| `- python(9041)
|- installd(2909)
|- DataDetectorsDynamicData(3867)
|- netbiosd(3990)
|- firefox(5026)
...
আরেকটি বিকল্প হ'ল htop
, যা গাছের বিন্যাসে প্রদর্শন করার বিকল্প রয়েছে। আপনি হয় F5
ইন্টারেক্টিভভাবে টিপতে পারেন , বা htop -t
এটি চালু করার সময় ব্যবহার করতে পারেন। স্থাপন করা:brew install htop
সূত্র: সার্ভারফল্ট
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew ইনস্টল করতে আপনার টার্মিনালে এটি আটকান যা আপনাকে pstree ইনস্টল করতে দেয়।
তারপরে এই কমান্ডটি ব্যবহার করে pstree ইনস্টল করুন
brew install pstree
এখন আপনি pstree
আপনার টার্মিনালে কমান্ডটি ব্যবহার করতে পারেন
যদি ইনস্টল কমান্ড ব্যর্থ হয়, যেমন আপনার ওএসের সংস্করণে এক্সকোড একা যথেষ্ট না, pstree ইনস্টল করার আগে এই কমান্ডটি চালিয়ে কমান্ড লাইন বিকাশকারী সরঞ্জাম ইনস্টল করুন।
xcode-select --install