فرمان ps در لینوکس برای بررسی پردازش‌های در حال اجرا کاربرد دارد. می‌توانید درصد استفاده از رم،درصد استفاده از CPU، شناسه‌ی پردازش و نام دستور مربوط به پردازش و اطلاعات جزئی‌تر مثل نام کنسولی که کاربر لاگین کرده را به کمک فرمان ps پیدا کنید و در ادامه پردازش‌ها را مدیریت کنید.

در ادامه به معرفی دستور ps و آپشن‌های آن و شیوه‌ی کاربرد آن می‌پردازیم.

مدیریت پردازش‌ها در لینوکس با دستور ps

کرنل یا هسته، قلب تپنده‌ی سیستم عامل‌های شبیه Unix و تمام توزیعات لینوکس است. یکی از وظایف اصلی کرنل، استفاده از حافظه یا RAM و زمان پردازنده است. می‌بایست در هر لحظه این موارد بررسی و مدیریت شود و به پردازش‌های مختلف به شکل بهینه‌ای تخصیص پیدا کند. برخی پردازش‌ها اولویت بیشتری دارند و برخی کم‌اهمیت‌تر هستند و در هر لحظه نیز ممکن است اولویت‌ها تغییر کند.

فرآیندی که به دلیلی اجرای آن طولانی شده یا به دلایل مختلف نرم‌افزاری، گیر کرده و نرم‌افزار پاسخگو نیست، ممکن است بخش زیادی از زمان پردازنده را بگیرد و مقدار زیادی از حافظه‌ی رم سیستم را اشغال کند که مطلوب نیست. در این مواقع کاربر حرفه‌ای تصمیم می‌گیرد که نرم‌افزار مربوطه را ببندد و نهایتاً پردازش را به اجبار متوقف کند.

شناسایی پردازشی که مشکل‌ساز شده یکی از نیازهای کاربران لینوکس است، درست مثل هر سیستم عامل دیگری و خوشبختانه برای این مهم، ابزارهای مختلفی در لینوکس پیش‌بینی شده است. دستور ps یکی از دستورات مفید در این زمینه است چرا که هم مشخصات پردازش‌ها شامل نام و شناسه و ارتباط با دیگر پردازش‌ها را نمایش می‌دهد و هم میزان استفاده از پردازنده توسط هر پردازش را ذکر می‌کند. این دستور چندین آپشن کاربردی نیز دارد.

لیست کردن پردازش‌ها در Linux با ps

ساده‌ترین حالت کاربرد دستور ps، اجرا کردن آن در اپلیکیشن ترمینال است، بدون هیچ آپشنی!

خروجی دستور فوق یک لیست از پردازش‌ها است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

چهار ستون لیست موارد زیر است:

  • PID: شناسه یا شماره‌ای که به هر پردازش اختصاص داده می‌شود.
  • TTY: نام کنسولی که کاربرد در آن لاگین کرده است.
  • TIME: مدت زمان پردازنده که به پردازش اختصاص پیدا کرده است که در واقع میزان استفاده از CPU‌ است.
  • CMD: نام دستوری که پردازش را اجرا کرده است.

لیست کردن پردازش‌های همه‌ی کاربران

برای چک کردن تمام پردازش‌ها، می‌توانید از دستور ps‌ به همراه آپشن -e استفاده کنید که در این صورت پردازش‌های همه‌ی حساب‌های کاربری نیز لیست می‌شود. البته لیست پردازش‌ها در این صورت بسیار طولانی می‌شود چرا که در توزیعات مختلف لینوکس، تعداد زیادی حساب کاربری به صورت پیش‌فرض وجود دارد که صرفاً برای اجرا کردن پردازش‌های خاصی کاربرد دارند.

بد نیست پس از دستور ps -e از دستور less استفاده کنید تا چک کردن لیست ساده‌تر شود:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و این هم یک صفحه از لیست طولانی پردازش‌ها:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

همان‌طور که مشاهده می‌کنید در ستون TTY، علامت ? ذکر شده که به این معنی است که برخی پردازش‌ها از طریق اجرای یک دستور در Terminal آغاز به کار نکرده‌اند.

نمایش نمودار درختی پردازش‌ها

می‌توانید از آپشن دیگری که مخفف hierarchy یا ساختار درختی است، برای نمایش پردازش‌ها به شکل درختی استفاده کنید. در واقع آپشن -H مشخص می‌کند که هر پردازش توسط کدام پردازش دیگری اجرا شده است.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

ممکن است یک پردازش که از طریق ترمینال اجرا نشده و در واقع TTY آن علامت سوال است، چند پردازش دیگر را اجرا کند. در این صورت نام اجرا کننده عبارتی مثل tty1 خواهد بود.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

برای بهتر شدن ظاهر لیست، می‌توانید از آپشن --forest استفاده کنید که خطوطی را به نمودار اضافه می‌کند:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

آندرلاین یا ـ و بک‌اسلش یا علامت \ درک کردن نمودار را ساده‌تر می‌کند:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

لیست کردن پردازش‌ها با جستجوی نام توسط دستور ps‌ و grep

می‌توانید دستور ps را در ترکیب با دستور grep استفاده کنید و با این روش نام یک پردازش را سرچ کنید. به عنوان مثال با اجرا کردن دستور زیر، هر پردازشی که در نام آن firefox موجود باشد لیست می‌شود:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

ممکن است یک پردازش یا چند پردازش مربوط به Firefox موجود باشد.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

دستور ps و ستون‌‌های متنوع اطلاعات پردازش‌ها

برای نمایش اطلاعات کامل‌تر می‌توانید ستون‌های اطلاعات پردازش‌ها را با آپشن -f یا full-format کامل کنید:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

خروجی دستور فوق به این صورت است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

ستون‌های اطلاعات شامل موارد زیر است:

  • UID: شناسه‌ی کاربری که مالک پردازش است.
  • PID: شناسه‌ی پردازش
  • PPID: شناسه‌ی پردازش بالادست و در واقع پردازش اجراکننده‌ی یک پردازش دیگر است.
  • C: تعداد فرزندان و به عبارتی تعداد پردازش‌های اجرا شده توسط یک پردازش
  • STIME: زمان شروع یا Start Time پردازش
  • TTY: نام کنسول کاربری که کاربر لاگین کرده است.
  • TIME: زمان پردازنده که به پردازش اختصاص پیدا کرده است.
  • CMD: دستوری که موجب اجرای پردازش شده است.

دقت کنید که آپشن -F با -f متفاوت است و به معنی extra full-format یا فرمت کامل‌تر است.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

این بار لیست عریض‌تر و ستون‌ها بیشتر می‌شود و احتمالاً به اسکرول کردن افقی برای رویت کردن همه‌ی ستون‌ها کامل نیاز است!

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

البته نیازی به استفاده از موس نیست، می‌توانید کلید یا در واقع فلش راست را فشار دهید و بخش چپ لیست را مشاهده کنید.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و این بار ستون‌های زیر اضافه می‌شود:

 

  • SZ: یا سایز و اندازه‌ی صفحات تصویر پردازش در RAM
  • RSS: یا Resident set size که حافظه‌ی فیزیکی سوپ نشده‌ای است که پردازش استفاده می‌کند.
  • PSR: یا پردازنده‌ای که پردازش به آن محول شده است.

جستجوی پردازش‌ها با ID یا شناسه‌ی پردازش

می‌توانید پس از دستور ps از آپشن -p استفاده کنید و سپس شناسه‌ی پردازش را تایپ کنید تا اطلاعات مربوط به همان پردازش خاص لیست شود.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و خروجی دستور فوق ذکر مشخصات پردازشی با شناسه یا ID موردنظر است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

به عبارت دیگر با آپشن -p می‌توانید در لیست پردازش‌ها یک شناسه‌ی خاص را جستجو کنید.

اگر منظور شما جستجو کردن چند پردازش باشد هم می‌توانید شناسه‌ها را به ترتیب و با زدن اسپیس یا فاصله بینشان، پس از ps -p تایپ کنید.

لیست کردن پردازش‌ها با دستور اجرای پردازش

برای سرچ کردن پردازش‌هایی که با دستور خاصی اجرا شده‌اند، می‌توانید از آپشن -C که مخفف Command است استفاده کنید. پس از این آپشن نام دستور مربوطه را تایپ کنید.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

لیست پردازش‌های مربوط به کاربر خاص

آپشن بعدی -u یا user list است که پردازش‌های مربوط به یک حساب کاربری خاص را لیست می‌کند.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

دستور فوق پردازش‌های حساب کاربری به اسم mary را لیست می‌کند.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

لیست پردازش‌های ترمینال‌های مختلف

با آپشن -t می‌توانید پردازش‌هایی که به یک TTY را بررسی کنید. اگر پس از این دستور عددی تایپ نکنید، پردازش‌های مربوط به ترمینال فعلی لیست می‌شود.

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و در صورت ذکر عدد نیز نتیجه به صورت زیر است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

انتخاب ستون‌های لیست خروجی دستور ps

با استفاده از آپشن -o می‌توانید ستون‌های لیستی که با استفاده از دستور ps چاپ می‌شود را به صورت دلخواه انتخاب کنید. به عنوان مثال اگر فقط به دو ستون درصد استفاده از پردازنده یا pcpu و آرگومان‌های دستور یا args در خروجی نیاز داشته باشید، می‌توانید از دستور زیر استفاده کنید که در واقع بین نام این دو ستون، از ویرگول استفاده شده است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و لیست به شکل زیر کوتاه و ساده می‌شود:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

مرتب‌سازی خروجی دستور ps و دیدن سنگین‌ترین پردازش‌ها

می‌توانید پردازش‌ها را به ترتیب اطلاعاتشان مرتب کنید. برای این موضوع از آپشن --sort استفاده کنید و پس از آن برای مرتب‌سازی از زیاد به کم، از خط فاصله و سپس نام ستون موردنظر را تایپ کنید. به عنوان مثال برای مرتب‌سازی بر حسب درصد استفاده از پردازنده، از --sort -pcpu استفاده کنید:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

همان‌طور که می‌بینید استفاده از - موجب شده که پردازش‌های سنگین‌تر در ابتدای لیست قرار بگیرند:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

اگر بخواهید تنها چند پردازش صدر لیست که به عنوان مثال بیشتر از پردازنده استفاده می‌کنند را مشاهده کنید، می‌توانید دستور ps را با دستور head ترکیب کنید. به عنوان مثال با اجرای فرمان زیر، ۱۰ پردازشی که بیشتری درصد استفاده از پردازنده را به خود اختصاص داده‌اند، لیست می‌شوند:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و خروجی یک لیست کوتاه و ساده خواهد بود:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

ستون مفید دیگر در لیست پردازش‌ها، ستون pmem یا Percent of Memory به معنی درصد استفاده از حافظه است. زمانی که سیستم لینوکسی کند شده است، ممکن است با کمبود رم یا پردازنده مواجه باشید و لذا این ستون نیز بسیار مفید و کاربردی است. با اجرا کردن فرمان زیر، ۱۰ پردازش که بیشتر از پردازنده استفاده کرده‌اند و در درجه‌ی بعدی بر حسب کمترین درصد استفاده از حافظه مرتب شده‌اند، ذکر می‌شود:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

و خروجی دستور فوق که در آن ترتیب بر اساس درصد استفاده از پردازنده و سپس کمترین استفاده از رم است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

برای شناسایی ساده‌تر پردازش‌ها در لینوکس، بهتر است همواره ستون شناسه‌ی پردازش را نیز چک کنید. لذا با اضافه کردن یک , و نام ستون شناسه که pid است، یک ستون دیگر به لیست اضافه می‌کنیم:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

اکنون شناسایی پردازش‌ها ساده‌تر است:

آموزش کار با دستور لیست کردن پردازش‌ها یا ps در لینوکس

برای بستن پردازش‌ها به صورت تکی یا گروهی، دستورات مختلف و جالبی وجود دارد که قبلاً در مقاله‌ای به صورت کامل بررسی کردیم: