آموزش دستور pstree لینوکس
هنگامی که روی یک دستگاه لینوکسی کار میکنید، ممکن است لازم باشد بدانید که چه پراسسهایی در حال اجرا هستند. دستورات متعددی مانند ps و top برای اینکار وجود دارند اما در این مقاله ما دستور pstree را آموزش خواهیم داد.
دستور pstree بسیار مشابه دستور ps است اما به جای اینکه آنها را فقط لیست کند، آنها را به شکل درختی نشان میدهد. فرمت درختی روشی راحت تر برای نمایش سلسله مراتب پراسسها است و خروجی را از نظر بصری جذاب تر می کند.
دوره پیشنهادی: دوره آموزش لینوکس(linux)
# دستور pstree چطور کار میکند؟
سینتکس کلی دستور pstree به شکل زیر است:
pstree [OPTIONS] [USER or PID]
در سادهترین حالت میتوانید دستور pstree را بدون هیچ آپشن یا آرگومانی اجرا کنید، که در اینصورت تمام پراسسها را به شکل درختی نمایش میدهد:
$ pstree
systemd─┬─VBoxService───7*[{VBoxService}]
├─accounts-daemon───2*[{accounts-daemon}]
├─2*[agetty]
├─atd
├─cron
├─dbus-daemon
├─irqbalance───{irqbalance}
├─2*[iscsid]
├─lvmetad
├─lxcfs───2*[{lxcfs}]
├─networkd-dispat───{networkd-dispat}
├─nginx───2*[nginx]
...
بالاترین آیتم، پدر تمام پراسسهای سیستم است که در این مثال systemd است. systemd اولین پراسسی است که در زمان بوت شدن سیستم شروع به کار میکند.
دستور pstree شاخههای مشابه را در یک براکت قرار داده و با یک عدد تعداد پراسسهای آن مجموعه را نشان میدهد. این باعث میشود خروجی خواناتر و جذابتر باشد.
در پایین یک نمونه از این مجموعهها را آوردهایم:
├─2*[agetty]
مثال بالا مشابه کد زیر است:
├─agetty
├─agetty
برای غیرفعال کردن ترکیب شاخهها میتوانید از آپشن c- استفاده کنید:
pstree -c
دستور pstree تمام thread های یک پراسس را نیز نشان می دهد. thread ها در یک آکولاد، در زیر مجموعه پراسس والد قرار دارند:
├─lxcfs───2*[{lxcfs}]
برای نشان دادن نام کامل thread ها میتوانید از آپشن t- استفاده کنید. اگر میخواهید نام thread ها را پنهان کنید و فقط نام پراسسها نمایش داده شوند، از آپشن T- استفاده کنید.
معمولا، pstree تمام خطوط خروجی را به یکباره نشان می دهد اما این خروجی به طور کامل در صفحه نمایش جا نمیشود. برای مشاهده خروجی به شکل صفحه صفحه میتوانید از دستور less کمک بگیرید:
pstree | less
اگر نام کاربر را به دستور pstree به عنوان آرگومان ارسال کنید، فقط پراسسهایی را نشان میدهد که متعلق به آن کاربر هستند. مثلا دستور پایین فقط پراسسهایی را نشان میدهد که متعلق به کاربر amir باشند:
pstree amir
اگر شماره پراسس(PID) را به عنوان آرگومان ارسال کنید دستور pstree فقط اطلاعات مربوط به آن پراسس را نمایش میدهد:
$ pstree 1943
sshd───bash───pstree
برای نمایش پراسس والد هر پراسس میتوانید از آپشن s- به همراه PID استفاده کنید:
$ pstree -s 1943
systemd───sshd───sshd───bash───pstree
# نمایش PID و GPID
معمولا در زمان کار با دستور pstree، مهمترین دادهای که کاربر به دنبال آن است، شماره پراسس یا PID است. مثلا، با استفاده از PID میتوانید یک پراسس را خاموش کنید.
با آپشن p- دستور pstree شماره پراسسها را نیز نمایش میدهد. PID به ازای هر thread یا پراسس در پرانتز قرار دارد:
$ pstree -p
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956)
│ ├─{VBoxService}(957)
│ ├─{VBoxService}(958)
│ ├─{VBoxService}(959)
│ ├─{VBoxService}(960)
│ ├─{VBoxService}(961)
│ └─{VBoxService}(962)
...
به طور پیشفرض، دستور pstree پراسسها را براساس نام مرتب میکند اما با آپشن n- میتوانید اینکار را به شکل عدد انجام دهید، مثلا براساس شماره PID خروجی را نمایش دهید:
pstree -pn
شماره گروه پراسس یا GPID، شماره اولین عضو از آن گروه است. برای نمایش GPID میتوانید از آپشن g- استفاده کنید:
pstree -g
# نمایش آرگومانهای کامندلاین
برخی از برنامه ها را می توان با گزینه های پیکربندی که به عنوان آرگومان های خط فرمان مشخص شده اند فراخوانی کرد. به طور پیش فرض، pstree آرگومان های خط فرمان را برای فرآیندهای در حال اجرا به شما نشان نمی دهد. برای مشاهده نحوه شروع پراسس، از دستور pstree همراه با گزینه -a استفاده کنید:
$ pstree -a
...
├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220
├─agetty -o -p -- \\u --noclear tty1 linux
...
# نتیجه گیری
دستور pstree پراسسهای در حال اجرا را در قالب یک ساختار درختی نمایش می دهد. برای کسب اطلاعات در مورد همه گزینه های pstree موجود، man pstree را در ترمینال خود تایپ کنید.