فرمان ps در لینوکس برای بررسی پردازشهای در حال اجرا کاربرد دارد. میتوانید درصد استفاده از رم،درصد استفاده از CPU، شناسهی پردازش و نام دستور مربوط به پردازش و اطلاعات جزئیتر مثل نام کنسولی که کاربر لاگین کرده را به کمک فرمان ps پیدا کنید و در ادامه پردازشها را مدیریت کنید.
در ادامه به معرفی دستور ps و آپشنهای آن و شیوهی کاربرد آن میپردازیم.
مدیریت پردازشها در لینوکس با دستور ps
کرنل یا هسته، قلب تپندهی سیستم عاملهای شبیه Unix و تمام توزیعات لینوکس است. یکی از وظایف اصلی کرنل، استفاده از حافظه یا RAM و زمان پردازنده است. میبایست در هر لحظه این موارد بررسی و مدیریت شود و به پردازشهای مختلف به شکل بهینهای تخصیص پیدا کند. برخی پردازشها اولویت بیشتری دارند و برخی کماهمیتتر هستند و در هر لحظه نیز ممکن است اولویتها تغییر کند.
فرآیندی که به دلیلی اجرای آن طولانی شده یا به دلایل مختلف نرمافزاری، گیر کرده و نرمافزار پاسخگو نیست، ممکن است بخش زیادی از زمان پردازنده را بگیرد و مقدار زیادی از حافظهی رم سیستم را اشغال کند که مطلوب نیست. در این مواقع کاربر حرفهای تصمیم میگیرد که نرمافزار مربوطه را ببندد و نهایتاً پردازش را به اجبار متوقف کند.
شناسایی پردازشی که مشکلساز شده یکی از نیازهای کاربران لینوکس است، درست مثل هر سیستم عامل دیگری و خوشبختانه برای این مهم، ابزارهای مختلفی در لینوکس پیشبینی شده است. دستور ps یکی از دستورات مفید در این زمینه است چرا که هم مشخصات پردازشها شامل نام و شناسه و ارتباط با دیگر پردازشها را نمایش میدهد و هم میزان استفاده از پردازنده توسط هر پردازش را ذکر میکند. این دستور چندین آپشن کاربردی نیز دارد.
لیست کردن پردازشها در Linux با ps
سادهترین حالت کاربرد دستور ps، اجرا کردن آن در اپلیکیشن ترمینال است، بدون هیچ آپشنی!
خروجی دستور فوق یک لیست از پردازشها است:
چهار ستون لیست موارد زیر است:
- PID: شناسه یا شمارهای که به هر پردازش اختصاص داده میشود.
- TTY: نام کنسولی که کاربرد در آن لاگین کرده است.
- TIME: مدت زمان پردازنده که به پردازش اختصاص پیدا کرده است که در واقع میزان استفاده از CPU است.
- CMD: نام دستوری که پردازش را اجرا کرده است.
لیست کردن پردازشهای همهی کاربران
برای چک کردن تمام پردازشها، میتوانید از دستور ps به همراه آپشن -e استفاده کنید که در این صورت پردازشهای همهی حسابهای کاربری نیز لیست میشود. البته لیست پردازشها در این صورت بسیار طولانی میشود چرا که در توزیعات مختلف لینوکس، تعداد زیادی حساب کاربری به صورت پیشفرض وجود دارد که صرفاً برای اجرا کردن پردازشهای خاصی کاربرد دارند.
بد نیست پس از دستور ps -e از دستور less استفاده کنید تا چک کردن لیست سادهتر شود:
و این هم یک صفحه از لیست طولانی پردازشها:
همانطور که مشاهده میکنید در ستون TTY، علامت ? ذکر شده که به این معنی است که برخی پردازشها از طریق اجرای یک دستور در Terminal آغاز به کار نکردهاند.
نمایش نمودار درختی پردازشها
میتوانید از آپشن دیگری که مخفف hierarchy یا ساختار درختی است، برای نمایش پردازشها به شکل درختی استفاده کنید. در واقع آپشن -H مشخص میکند که هر پردازش توسط کدام پردازش دیگری اجرا شده است.
ممکن است یک پردازش که از طریق ترمینال اجرا نشده و در واقع TTY آن علامت سوال است، چند پردازش دیگر را اجرا کند. در این صورت نام اجرا کننده عبارتی مثل tty1 خواهد بود.
برای بهتر شدن ظاهر لیست، میتوانید از آپشن --forest استفاده کنید که خطوطی را به نمودار اضافه میکند:
آندرلاین یا ـ و بکاسلش یا علامت \ درک کردن نمودار را سادهتر میکند:
لیست کردن پردازشها با جستجوی نام توسط دستور ps و grep
میتوانید دستور ps را در ترکیب با دستور grep استفاده کنید و با این روش نام یک پردازش را سرچ کنید. به عنوان مثال با اجرا کردن دستور زیر، هر پردازشی که در نام آن firefox موجود باشد لیست میشود:
ممکن است یک پردازش یا چند پردازش مربوط به Firefox موجود باشد.
دستور ps و ستونهای متنوع اطلاعات پردازشها
برای نمایش اطلاعات کاملتر میتوانید ستونهای اطلاعات پردازشها را با آپشن -f یا full-format کامل کنید:
خروجی دستور فوق به این صورت است:
ستونهای اطلاعات شامل موارد زیر است:
- UID: شناسهی کاربری که مالک پردازش است.
- PID: شناسهی پردازش
- PPID: شناسهی پردازش بالادست و در واقع پردازش اجراکنندهی یک پردازش دیگر است.
- C: تعداد فرزندان و به عبارتی تعداد پردازشهای اجرا شده توسط یک پردازش
- STIME: زمان شروع یا Start Time پردازش
- TTY: نام کنسول کاربری که کاربر لاگین کرده است.
- TIME: زمان پردازنده که به پردازش اختصاص پیدا کرده است.
- CMD: دستوری که موجب اجرای پردازش شده است.
دقت کنید که آپشن -F با -f متفاوت است و به معنی extra full-format یا فرمت کاملتر است.
این بار لیست عریضتر و ستونها بیشتر میشود و احتمالاً به اسکرول کردن افقی برای رویت کردن همهی ستونها کامل نیاز است!
البته نیازی به استفاده از موس نیست، میتوانید کلید → یا در واقع فلش راست را فشار دهید و بخش چپ لیست را مشاهده کنید.
و این بار ستونهای زیر اضافه میشود:
- SZ: یا سایز و اندازهی صفحات تصویر پردازش در RAM
- RSS: یا Resident set size که حافظهی فیزیکی سوپ نشدهای است که پردازش استفاده میکند.
- PSR: یا پردازندهای که پردازش به آن محول شده است.
جستجوی پردازشها با ID یا شناسهی پردازش
میتوانید پس از دستور ps از آپشن -p استفاده کنید و سپس شناسهی پردازش را تایپ کنید تا اطلاعات مربوط به همان پردازش خاص لیست شود.
و خروجی دستور فوق ذکر مشخصات پردازشی با شناسه یا ID موردنظر است:
به عبارت دیگر با آپشن -p میتوانید در لیست پردازشها یک شناسهی خاص را جستجو کنید.
اگر منظور شما جستجو کردن چند پردازش باشد هم میتوانید شناسهها را به ترتیب و با زدن اسپیس یا فاصله بینشان، پس از ps -p تایپ کنید.
لیست کردن پردازشها با دستور اجرای پردازش
برای سرچ کردن پردازشهایی که با دستور خاصی اجرا شدهاند، میتوانید از آپشن -C که مخفف Command است استفاده کنید. پس از این آپشن نام دستور مربوطه را تایپ کنید.
لیست پردازشهای مربوط به کاربر خاص
آپشن بعدی -u یا user list است که پردازشهای مربوط به یک حساب کاربری خاص را لیست میکند.
دستور فوق پردازشهای حساب کاربری به اسم mary را لیست میکند.
لیست پردازشهای ترمینالهای مختلف
با آپشن -t میتوانید پردازشهایی که به یک TTY را بررسی کنید. اگر پس از این دستور عددی تایپ نکنید، پردازشهای مربوط به ترمینال فعلی لیست میشود.
و در صورت ذکر عدد نیز نتیجه به صورت زیر است:
انتخاب ستونهای لیست خروجی دستور ps
با استفاده از آپشن -o میتوانید ستونهای لیستی که با استفاده از دستور ps چاپ میشود را به صورت دلخواه انتخاب کنید. به عنوان مثال اگر فقط به دو ستون درصد استفاده از پردازنده یا pcpu و آرگومانهای دستور یا args در خروجی نیاز داشته باشید، میتوانید از دستور زیر استفاده کنید که در واقع بین نام این دو ستون، از ویرگول استفاده شده است:
و لیست به شکل زیر کوتاه و ساده میشود:
مرتبسازی خروجی دستور ps و دیدن سنگینترین پردازشها
میتوانید پردازشها را به ترتیب اطلاعاتشان مرتب کنید. برای این موضوع از آپشن --sort استفاده کنید و پس از آن برای مرتبسازی از زیاد به کم، از خط فاصله و سپس نام ستون موردنظر را تایپ کنید. به عنوان مثال برای مرتبسازی بر حسب درصد استفاده از پردازنده، از --sort -pcpu استفاده کنید:
همانطور که میبینید استفاده از - موجب شده که پردازشهای سنگینتر در ابتدای لیست قرار بگیرند:
اگر بخواهید تنها چند پردازش صدر لیست که به عنوان مثال بیشتر از پردازنده استفاده میکنند را مشاهده کنید، میتوانید دستور ps را با دستور head ترکیب کنید. به عنوان مثال با اجرای فرمان زیر، ۱۰ پردازشی که بیشتری درصد استفاده از پردازنده را به خود اختصاص دادهاند، لیست میشوند:
و خروجی یک لیست کوتاه و ساده خواهد بود:
ستون مفید دیگر در لیست پردازشها، ستون pmem یا Percent of Memory به معنی درصد استفاده از حافظه است. زمانی که سیستم لینوکسی کند شده است، ممکن است با کمبود رم یا پردازنده مواجه باشید و لذا این ستون نیز بسیار مفید و کاربردی است. با اجرا کردن فرمان زیر، ۱۰ پردازش که بیشتر از پردازنده استفاده کردهاند و در درجهی بعدی بر حسب کمترین درصد استفاده از حافظه مرتب شدهاند، ذکر میشود:
و خروجی دستور فوق که در آن ترتیب بر اساس درصد استفاده از پردازنده و سپس کمترین استفاده از رم است:
برای شناسایی سادهتر پردازشها در لینوکس، بهتر است همواره ستون شناسهی پردازش را نیز چک کنید. لذا با اضافه کردن یک , و نام ستون شناسه که pid است، یک ستون دیگر به لیست اضافه میکنیم:
اکنون شناسایی پردازشها سادهتر است:
برای بستن پردازشها به صورت تکی یا گروهی، دستورات مختلف و جالبی وجود دارد که قبلاً در مقالهای به صورت کامل بررسی کردیم:
howtogeekسیارهی آیتی