مدیریت پردازش ها در لینوکس یا process management مبحثی بسیار مهم و برای ادمین های سیستم میباشد که باید همگی نسبت به آن اطلاع داشته باشند. دستور ps یکی از دستورهای مهم جهت پایش پردازش های سیستم میباشد که دارای پارامترهای فراوانی است و ما در این مقاله سعی خواهیم کرد که 30 پارامتر کاربردی دستور ps در لینوکس به شما آموزش دهیم.این دستور یکی از دستوراتی است که برای مدیریت منابع در لینوکس استفاده میشود و جهت پایش منابع سیستم باید شما دستورات دیگری مانند دستور top یا دستور iotop یا سایر دستورات دیگر را بلد باشید.
دستور ps یا process status وظیفه نمایش لیست پردازش های موجود در سیستم را بر عهده دارد جز دستورات قدیمی سیستم عامل لینوکس است و به همین خاطر بعد از گذشت سال ها و تغییرات فراوانی که روی آن صورت گرفته به روش های مختلف شما میتوانید پارامترهای آن را اعمال نمایید. ممکن است یک عمکرد خاص این دستور با چندین پارامتر مختلف قابل انجام باشد که با یادگیری یکی از آنها نیاز به یادگیری مابقی نیست.
دستور ps در لینوکس
دستور ps را اگر بدون هیچ پارامتری در خط فرمان وارد نمایید پردازش های فعال در آن session را به ما نمایش میدهد. همانطور که در تصویر زیر مشاهده میکنید با زدن دستور ps بدون پارامتر اطلاعاتی شامل کد پردازش، نام برنامه و شماره tty را به شما نمایش میدهد.
نمایش تمام پردازش های لینوکس با دستور ps
با استفاده از پارامتر e- یا A- شما میتوانید تمامی پردازش های فعال سیستم عامل لینوکس را با فرمت generic لینوکس مشاهده کنید همانند تصویر زیر:
با استفاده از پارامتر های مختلف این دستور خروجی های متفاوتی میتوانید مشاهده کنید اگر بخواهیم با فرمت BSD تمام پردازش ها را مشاهده کنیم میتوانیم از پارامتر au- یا aux- استفاده کنیم همانند تصویر زیر:
همچنین در صورتیکه بخواهید اطلاعات بیشتری به شما نمایش دهد و با فرمت کامل اطلاعات خروجی مربوط به دستور ps در لینوکس را مشاهده کنید از پارامتر f- یا F- میتوانید استفاده کنید و این پارامتر را به همراه سایر پارامترها همانند توصیر زیر وارد نمایید:
مشاهده تمام پردازش های مربوط به یک کاربر در لینوکس با دستور ps
شما میتوانید تمامی پردازش های مربوط به کاربری که با آن وارد شده اید را بوسیله پارامتر x- در دستور ps مشاهده نمایید همانند تصویر زیر:
اگر بخواهید که نام کاربری را وارد نمایید و پردازش های یک کاربر دیگر به غیر از کاربری که با آن وارد شده اید را مشاهده کنید باید از پارامتر u- و U- به همراه نام کاربری همانند دستور زیر استفاده کنید:
ps -u moein -U moein
لیست پردازش های مربوط به یک گروه با دستور ps
شما میتوانید لیست تمامی پردازش های مربوط به یک گروه خاص را با استفاده از دستور ps در لینوکس و پارامتر G- و g- همانند تصویر زیر مشاهده نمایید.
نکته: همانطور که در دو پارامتر قبل مشاهده کردید برای مشاهده پردازش های مربوط به کاربر و گروه دو پارامتر معرفی شده است.تفاوت این دو پارامتر در این است که یکی از پارامتر ها در هر دسته مربوط به Efective user id یا group id است و دیگری مربوط به Real user id یا group id است.در مقاله ای جداگانه این موضوع کامل توضیح داده شده است.
مشاهده مشخصات پردازش بر اساس pid و ppid
همانطور که ذکر شد هر پردازش دارای یک کد منحصر به فرد است بنام PID(Process ID) و ممکن است یک فرآیند دارای چندین زیر فرآیند باشد که در این صورت به فرآیند اصلی یک PPID(Parent PID) تخصص میابد. شما میتوانید با استفاده از پارامتر fp- به همراه کد مربوط به آن پردازش همانند زیر اطلاعات کامل مربوط به پردازش را مشاهده کنید.
سیستم عامل لینوکس با استفاده از دستور ps این امکان را به شما میدهد که بتوانید چندین PID را بصورت همزمان پایش کنید همانند تصویر زیر:
همچنین برای اینکه مشخصات پردازش والد را بتوانید مشاهده کنید باید از پارامتر ppid– به همراه شماره مربوطه در خط فرمان وارد نمایید تا همانند زیر به شما نمایش بدهد.
نمایش درختی پردازش ها
زمانیکه سیستم عامل لینوکس بوت میشود کرنل لینوکس یک پردازش بنام init را اجرا میکند و سپس init سایر برنامه ها و امکانات موجود در سیستم عامل را لود میکند. همچنین سایر برنامه ها نیز ممکن است پس از اجرا چندین پردازش یا thread را اجرا کنند. جهت مشاهده درختی وابستگی های هر پردازش میتوانید از دستور زیر استفاده کنید.
ps -e --forest
اگر هم بخواهید با استفاده از دستور ps در لینوکس فقط درخت پردازش مربوط به یک برنامه خاص را مشاهده کنید میتوانید از دستور زیر استفاده کنید. برای مثال این دستور درخت پردازش مربوط به برنامه ssh را نمایش میدهد.
ps -f --forest -C sshd
نمایش Thread های یک پردازش در لینوکس
سیستم عامل لینوکس بصورت Multi thread طراحی شده است بدین صورت که یک پردازش ممکن است نخ یا Thread های مختلف ایجاد نماید تا بصورت همروند از کل قدرت پردازشی سیستم استفاده کند. شما با استفاده از دستور ps در لینوکس میتوانید تمامی Thread های مربوط به یک پردازش را مشاهده نمایید. برای این کار باید از پارامتر L- استفاده کنید همانند تصویر زیر:
تغییر فرمت نمایش اطلاعات دستور ps در لینوکس
دستور ps بصورت پیش فرض یک سری از اطلاعات را به شما نمایش میدهد اما این تمامی اطلاعاتی نیست که امکان جمع آوری آن وجود دارد و میتوانید با استفاده از پارامتر L (بدون خط تیره) لیست کل سر ستون هایی که امکان مشاهده آن وجود دارد را ببینید. سپس با استفاده از پارامتر o- یا format- میتوانید ستون های اطلاعات مد نظرتان را مشاهده نمایید. برای مثال در تصویر خروجی دستور ps با سر ستون های ppid,pid,cmd,user را مشاهده میکنید.
مشاهده پردازش والد و پردازش های فرزند با دستور ps
ممکن است بخواهید تمامی پردازش های مربوط به یک برنامه را مشاهده کنید برای این مهم میتوانید از پارامتر C- استفاده کنید همانند تصویر زیر: