آشنایی با دستور پرکاربرد ps در لینوکس
در زمان نگارش این مطلب، لینوکس سهم بازار جهانی 2.68 درصدی را در رایانههای دسکتاپ دارد، اما بیش از 90 درصد از زیرساختهای ابری و خدمات میزبانی، در این سیستم عامل اجرا میشوند. به همین دلیل، آشنایی با دستورات پرکاربرد لینوکس بسیار مهم است.
بر اساس نظرسنجی StackOverflow در سال 2020، لینوکس با داشتن 55.9 درصد از سهم بازار، پر استفادهترین سیستمعامل توسط توسعهدهندگان حرفهای است. این موفقیت تصادفی نیست. لینوکس رایگان و متنباز است، امنیت بهتری نسبت به رقبای خود دارد و دارای command line یا “خط فرمان” قدرتمندی میباشد که برای توسعه دهندگان و کاربران حرفهای مفید خواهد بود.
دستور لینوکس یک برنامه یا ابزار است که در command line اجرا میشود. command line رابطی است که خطوط متنی را دریافت کرده و آنها را به دستورالعملهایی برای رایانه شما تبدیل میکند.
تمامی رابطهای کاربری گرافیکی (GUI) صرفا انتزاعی از برنامههای command line هستند. به عنوان مثال، وقتی پنجره ای را با کلیک روی “X” میبندید، یک دستور در پشت آن عمل اجرا میشود.
flag روشی است که میتوانید توسط آن قابلیتهای مختلف را به دستوری که اجرا میکنید اضافه نمایید. اکثر دستورات پرکاربرد لینوکس یک صفحه راهنما دارند که میتوانید آن را با flag یا پرچم -h فراخوانی کنید. در بیشتر مواقع، پرچمها اختیاری هستند.
یک آرگومان یا پارامتر، ورودی است که به یک دستور اضافه میشود تا بتواند به درستی اجرا گردد. در بیشتر موارد، آرگومان مسیر یک فایل است، اما میتواند هر چیزی دیگری که در ترمینال تایپ میکنید نیز باشد.
بیشتر بخوانید: سیستم عامل لینوکس (linux) چیست؟ صفر تا صد در مورد لینوکس
شما میتوانید flag ها را با استفاده از خط تیره (-) و خط فاصله دوگانه (–) فراخوانی نمایید، در حالی که اجرای آرگومان بستگی به ترتیبی دارد که آنها را به تابع ارسال میکنید.
دستور ps در لینوکس
دستور “ps” در لینوکس مخفف “process status” است. این دستور جهت دریافت اطلاعات فرآیندهای در حال اجرا در سیستم شما، استفاده میشود. خروجی این دستور بسته به پارامترهای استفاده شده با آن، میتواند متفاوت باشد. با این حال، در این مقاله قصد داریم با استفاده از چند مثال، اصول استفاده از دستور “ps” در لینوکس را به شما آموزش دهیم.
نحو کلی دستور “ps” در لینوکس در زیر آورده شده است:
$ ps [پارامتر]
پارامترهای خاصی که با دستور “ps” قابل استفاده هستند را میتوانید در بخش راهنمای “help” آن مشاهده نمایید. با این حال، این دستور میتواند به طور مستقل و بدون هیچ خطایی نیز اجرا شود.
استفاده از دستور ps
دستور ps به شما این امکان را میدهد که با تعیین شناسه فرآیند یا شناسه فرآیند والد، هدف خود را به دقت تنظیم کنید.
اگر از قبل شناسه موردنظر خود را میدانید و میخواهید اطلاعات بیشتری درباره آن فرآیند پیدا کنید، این قابلیت مفید خواهد بود.
برای محدود کردن دستور ps به یک شناسه فرآیند خاص (PID)، باید از قابلیت “-p PID” استفاده کنید:
ps -p PID
همچنین میتوانید فرآیندها را با شناسه فرآیند والد آنها (PPID) انتخاب کنید. این گزینه کمی متفاوت است و شما را ملزم به استفاده از “–ppid PID” میکند.
ps --ppid PID
میتوانید با جدا کردن هر مقدار با کاما، آن را برای چندین شناسه فرآیند، اجرا نمایید.
لیست کردن پردازش همه یوزرها در لینوکس
روند مشاهده پردازشهای ایجاد شده توسط یک کاربر خاص در لینوکس به شرح زیر است:
- پنجره یا برنامه ترمینال را باز کنید.
- برای مشاهده پردازشهای متعلق به یک کاربر خاص در لینوکس، دستور زیر را اجرا کنید:
ps -u {USERNAME}
- جهت جستجوی یک پردازش لینوکس بر اساس نام آن، لازم است از دستور زیر استفاده نمایید:
pgrep -u {USERNAME} {processName}
- روشی دیگر برای مشاهده فرآیندها بر اساس نام، اجرای دستورات زیر است:
top -U {userName} یا htop -u {userName}
لیست کردن پردازشها با اطلاعات بیشتر در لینوکس
برای به دست آوردن اطلاعات بیشتر، میتوانید از آرگومان ef استفاده کنید:
ps -ef
فیلتر کردن پردازش از طریق شناسه لینوکس
اگر میخواهید پردازشهای موجود را از طریق شناسه فیلتر کنید، میتوانید از دستور زیر استفاده کنید.
ps -ef -p 4321,8765,1987
همچنین با آرگومان u میتوانید پردازشها را بر اساس یوزر فیلتر کنید.
ps -u admin
لیست پردازشهای فعال لینوکس
برای مشاهده لیست پردازشهای فعال، میتوانید از دستورات ps، top، htop و atop لینوکس استفاده کنید. همچنین میتوانید دستور ps را با دستور pgrep ترکیب نموده تا تک تک فرآیندها را مشاهده نمایید.
بیشتر بخوانید: میانبر های پر کاربرد لینوکس
دستور ps لینوکس، یک snapshot از پردازشهای در حال اجرا ایجاد میکند. برخلاف سایر دستورات پرکاربرد لینوکس، ps خروجی را به صورت یک لیست ثابت ارائه میدهد و به صورت لحظهای به روز نمیشود.
دستور ps از نحو زیر استفاده میکند:
ps [گزینه ها]
گزینههای متداول دستور ps عبارتند از:
- a: لیست تمام پردازشهای ناموفق مربوط به همه کاربران.
- a- و e- : لیست تمام پردازشهای موجود در سیستم.
- a- : لیست تمام پردازشها به جز لیدرهای سشن (مواردی که شناسه فرآیند با شناسه سشن یکسان است) و پردازشهایی که با یک ترمینال مرتبط نیستند.
- d- : لیست تمام پردازشها به جز لیدرهای سشن.
- deselect– و N- : فهرستی از تمام پردازشها به جز آنهایی که شرایط تعریف شده توسط کاربر را برآورده میکنند.
- f: سلسله مراتب پردازش را به صورت ASCII نمایش میدهد.
- j-: خروجی را در فرمت jobs نمایش میدهد.
- T: لیست تمام پردازشهای مرتبط با همان ترمینال.
- r: فقط فرآیندهای در حال اجرا را لیسن میکند.
- -u: کاربری که میخواهید پردازشهایش را لیست کنید، مشخص میکند.
بیشتر بخوانید: صفر تا صد کالی لینوکس – آموزش نصب کالی لینوکس
لیست پردازشها بر اساس نام برنامه در لینوکس
برای انجام این کار میتوانید از آرگومان c استفاده نمایید:
ps -C name
از بین بردن پردازش از طریق دستور ps
- برای از بین بردن پردازش کاربر دیگر، باید یک superuser یا نقشی معادل آن داشته باشید.
- شناسه پردازش فرآیندی که میخواهید خاتمه دهید را دریافت کنید:
$ ps -fu user
که در آن user کاربری است که میخواهید پردازشهای آن را نمایش دهید. شناسه پردازش در ستون اول خروجی، نمایش داده میشود.
- فرآیند را خاتمه دهید.
$ kill [signal-number] pid
signal
هنگامی که هیچ سیگنالی در دستور kill گنجانده نشود، سیگنال پیشفرض 15- (SIGKILL) تنظیم خواهد بود. استفاده از سیگنال -9 (SIGTERM) به همراه دستور kill، تضمین میکند که پردازش به سرعت پایان مییابد. با این حال، سیگنال 9- نباید برای از بین بردن پردازشهای خاص، مانند پردازش پایگاه داده یا سرور LDAP استفاده شود. در این موارد، نتیجه این خواهد بود که ممکن است دادهها از بین بروند.
pid
شناسه پردازشی است که میخواهید خاتمه دهید.