دستور pstree فرایندهای در حال اجرا را بهصورت درخت نمایش میدهد. ریشه درخت یا با pid و یا با init (در صورتی که pid حذف شده باشد) شروع میشود. تمام فرایندها از فرایند init متولد میشوند و هر فرایند میتواند دارای فرزند یا فرزندان خود باشد که این عمل به کمک خطوط انشعاب نمایش داده میشود.
شکل کلی خروجی این دستور:
init-+-getty |-getty |-getty `-getty
یا
init---4*[getty]
نکته: هر دو خروجی فوق یکسان هستند خروجی نوع اول بهصورت غیرفشرده است و خروجی نوع دوم بهصورت فشرده (Compaction) نمایش داده شده است و بهصورت پیشفرض در استفاده از دستور pstree از نوع دوم استفاده میشود.
عدد ۴ در نمایش دوم به این معنی است که ۴ فرایند یکسان (۴ زیر شاخه یکسان) از یک فرایند در حال اجرا هستن و احتمالا به منظور نمایش خلاصهتر در ترمینال این دستور از این فشردهسازی استفاده میکند.
نکته: در حالت پیشفرض از حالت فشرده یا (Compaction) برای نمایش خروجی استفاده میشود.
شکل کلی دستور:
$ pstree [options]
پارامترها:a-
: نمایش آرگومانهای خط فرمانA-
: ترسیم درخت با استفاده از کارکترهای اسکیc-
: غیر فعال کردن فشرگی زیردرختهای همانند
نکته: درصورت استفاده از این آپشن زیرشاخههای یکسان از یک فرایند از حالت فشرده خارج و به حالت غیرفشرده تبدیل میشود.G-
: استفاده از کارکترهای ترسیم خط VT100 برای ترسیم درختh-
: برجسته کردن فرایند جاری و اجدادش. درصورتی که ترمینال عمل برجستهسازی را حمایت نکند هیچ عملی اتفاق نمیافتد.H-
: همانند آپشن قبلی ولی برای یک فرایند خاص استفاده میشود، یعنی pid فرایند را بدانیم.l-
: نمایش خطوط طولانیn-
: مرتبسازی فرایندها بهکمک pid بهجای مرتب سازی بهکمک نام فرایندp-
: نمایش pidها. pidها بهصورت اعداد دهدهی بعد از هر فرایند در یک پرانتز نمایش داده خواهند شد.
نکته: این آپشن بهخاطر اینکه pid هر فرایند پدر و فرزند را نمایش میدهد لذا مجبور است از حالت غیرفشرده (پیادهسازی آپشن c
) استفاده کند.u-
: نمایش فرایندها براساس uidها. هر زمانی که uid فرایند با uid ریشه متفاوت باشد uid جدید بعد از فرایند در پرانتز نمایش داده میشود.U-
: استفاده از کاراکترهای ترسیم خط یونیکد UTF-8 برای ترسیم درختV-
: نمایش نسخه
نکته: در بعضی از نسخههای دستور pstree ممکن است آپشنهای جدید اضافه یا حذف شوند.
پس از آشنایی با دستور pstree با ذکر یک مثال به بیان Compaction میپردازیم.
dotnet@dotnet-V:~$ pstree 1552 upowerd───2*[{upowerd}]
خروجی این دستور بهصورت فشرده یا compaction میباشد (بهصورت پیشفرض).
dotnet@dotnet-V:~$ pstree -c 1552 upowerd─┬─{upowerd} └─{upowerd}
خروجی دستور فوق (بهکمک آپشن c-
) بهصورت غیر فشرده نمایش داده می شود.
مثال: خروجی برای یک pid
dotnet@dotnet-V:~$ pstree 1552 upowerd───2*[{upowerd}]
همانطور که مشخص است خروجی از نوع فشرده میباشد.
مثال: خروجی برای یک کاربر
dotnet@dotnet-V:~$ pstree dotnet VBoxClient───{VBoxClient} VBoxClient───{VBoxClient} VBoxClient───{VBoxClient} bamfdaemon───2*[{bamfdaemon}] dconf-service───2*[{dconf-service}] gedit───2*[{gedit}] geoclue-master gnome-keyring-d───5*[{gnome-keyring-d}] gnome-terminal─┬─bash───pstree ├─gnome-pty-helpe └─3*[{gnome-terminal}] goa-daemon───{goa-daemon} gvfs-afc-volume───{gvfs-afc-volume}
مثال:
dotnet@dotnet-V:~$ pstree -p init(1)─┬─L2tpIPsecVpnCon(1017)───echo(1020) ├─NetworkManager(467)─┬─dhclient(537) │ ├─dnsmasq(871) │ ├─{NetworkManager}(483) │ └─{NetworkManager}(545) ├─VBoxClient(1797)───{VBoxClient}(1811) ├─VBoxClient(1805)───{VBoxClient}(1817) ├─VBoxClient(1808)───{VBoxClient}(1809) ├─VBoxService(1242)─┬─{VBoxService}(1243) │ ├─{VBoxService}(1244) │ ├─{VBoxService}(1245) │ ├─{VBoxService}(1246) │ ├─{VBoxService}(1247) │ ├─{VBoxService}(1248) │ └─{VBoxService}(1249) ├─_plutorun(928)─┬─_plutoload(933) │ └─_plutorun(932)───pluto(940)─┬─_pluto_adns(1111) │ └─pluto(948)
خروجی دستور فوق سبب میشود که علاوه بر اینکه فرایندهای جاری بهصورت درختی نمایش داده شوند شماره هر فرایند (pid) آن نیز در یک پرانتز جلوی فرایند مربوطه نمایش داده شود. لذا به کمک مثال اول میتوان بهطور جداگانه برای هر فرایند بهخصوص نیز از این دستور استفاده کرد.