مدیریت فرآیندها در لینوکس

مدیریت فرآیندها در لینوکس

یک برنامه، از مجموعه‌ی کدها و متغیرها، تشکیل شده است. وقتی شما یک برنامه را اجرا می‌کنید، سیستم عامل، فضایی را در حافظه‌ی اصلی و همچنین بخشی از زمان پردازنده را، به آن اختصاص می‌دهد. فرآیند‌ یا پروسس(process)، در حقیقت، به یک نمونه از برنامه‌ی درحال اجرا می‌گویند. کار مدیریت فرآیندها در لینوکس ، بر عهده‌ی سیستم عامل می‌باشد. هر دستور و یا هر برنامه‌ای، که اجرا می‌شود، سیستم عامل به آن یک کد یا شناسه (PID) و یا Process ID اختصاص می‌دهد. این شناسه تا آخر اجرای برنامه، فقط به آن فرآیند، اختصاص خواهد داشت. پس از اتمام کار برنامه این شناسه را می‌توان برای فرآیند دیگر، استفاده نمود. برای آشنایی بیشتر، با مدیریت فرآیندها در لینوکس، با ما همراه باشید.

دستور ps جهت اطلاع از لیست فرآیندها

با استفاده از دستور ps می‌توانیم لیست فرآیندها را در سیستم عامل بدست آوریم. ساده‌ترین حالت، خود دستور ps می‌باشد. دستور ps لیست فرآیندهای ترمینال جاری، مشاهده می‌گردد. با آپشن f- می‌توانیم مشخصات کامل فرآیندها مشاهده نماییم:

آپشن x- فرایندهای خارج از ترمینال را نیز نمایش می‌دهد.

وضعیت‌های یک فرآیند

وضعیت Running

فرآیند در حال اجرا، و یا آماده برای دریافت زمان از پردازنده برای اجرا

وضعیت Waiting

در این حالت فرآیند منتظر، یک اتفاق، مثلا فشرده شدن یک کلید است.

وضعیت Stopped

در این وضعیت، روند اجرای فرآیند، متوقف شده است. مثلا برای حالت debuging.
در مثال زیر دستور sleep به مدت 100 ثانیه، اجرا شده است. با فشردن کلید Ctrl_Z روند اجرای برنامه را متوقف می‌سازیم. با دستور jobs می‌توانیم، برنامه‌های در حال اجرا و متوقف شده را ببینیم:

برای اینکه، یک فرآیند از حالت توقف خارج شود، از دستور fg استفاده می‌کنیم.

وضعیت Zombie

در این وضعیت، اجرای فرآیند خاتمه یافته، اما هنوز فرآیند در جدول فرآیندها موجود است.

انواع فرآیندهای لینوکس

وقتی شما برنامه‌ای را اجرا می‌نمایید، این برنامه توسط سیستم عامل به دو صورت، می تواند اجرا گردد: فرایندهای Foreground و فرآیندهای Background.

فرآیندهای Foreground

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

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

فرآیندهای Background

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

پس از اجرای فرآیند در حالت Background بلافاصله پس از نمایش شماره فرآیند یا PID، اعلان یا کرسر نمایش داده می‌شود. اجرای برنامه‌ها و دستورات برای حالت‌هایی مثل Backup گرفتن و دیگر حالت‌هایی که اجرای یک فرآیند، زمان‌بر است، مناسب می‌باشد.

دیمون‌ها(Daemons)

دیمون‌ها فرآیندهایی هستند که معمولا با سطح دسترسی کاربر root اجرا می‌گردند. دیمون‌ها معمولا سرویسی را به فرآیندهای دیگر ارائه می دهند. دیمون‌ها به صورت Background اجرا می‌شوند و معمولا منتظر اتفاق خاصی می‌مانند تا به آن واکنش نشان دهند. مثلا یک دیمون وب سرور منتظر درخواست ارتباط از طریق پروتکل http می‌ماند. به محض دریافت درخواست از طرف کلاینت سرویس لازم را به آن ارائه می‌دهد. دیمون‌ها معمولا با بوت شدن سیستم عامل، اجرا شده و تا آخر، باقی می‌مانند.

فرآیندهای والد و فرزند

در مدیریت فرآیندها در سیستم عامل لینوکس، هر فرآیند توسط فرآیند والد خود ایجاد شده است. هر فرآیند دارای دو شناسه‌ی فرآیند می‌باشد. اولین شناسه‌ی فرآیند یا PID مربوط به خود فرآیند است و دومین شناسه، مربوط به شناسه‌ی فرآیند والد، یا PPID می‌باشد. والد تمام فرآیندها، در بیشتر توزیع‌های لینوکس فرآیند systemd می‌باشد، که به‌جای فرآیند init استفاده می‌شود.

دستورات پراستفاده در فرآیندها

دستور top

دستور top، گزارشی از وضعیت فرآیندها و همچنین، میزان اختصاص حافظه و پردازنده، ارائه می‌دهد. این دستور، ابزار مفیدی، برای مانیتورینگ وضعیت فرآیندها، در سرورهای شبکه می‌باشد. با کمک این ابزار، می‌توانیم، وضعیت کلی مصرف منابع سیستم، از قبیل حافظه و پردازنده را مشاهده نماییم.

دستور kill

با دستور kill، می‌توانید، به اجرای یک فرآیند، خاتمه دهید. برای این کار دستور kill PID را اجرا نمایید. برای به‌دست آوردن شماره‌ی فرآیند(PID)، از دستور pidof process name استفاده نمایید.

دستور nice

در لینوکس، برنامه‌های زیادی، می‌توانند به صورت هم‌زمان، اجرا شوند. در صورتی که بخواهیم، برای بعضی از فرآیندها، اولویت بیشتری، در استفاده از منابع سیستم، قائل شویم، از دستور nice -n ‘Nice Value’ process name برای اجرای آن فرآیند، استفاده می‌کنیم. دستور nice برای شروع اجرای هر فرآیند اولویت 19- تا 20 را می‌تواند قرار دهد. بیشترین اولویت 19- و کمترین اولویت 20 می باشد. پیش‌فرض اولویت(priority) برای تمام فرایندها، 0 می‌باشد.

در صورتی که یک فرآیند در حال اجرا باشد، برای تغییر مقدار اولویت آن، از دستور renice ‘Nice Value’ -p PID استفاده می نماییم.

دستور df

با دستور df می‌توانیم، وضعیت حافظه‌ی مصرف شده و همچنین قابل استفاده‌ی هارددیسک‌ها را مشاهده نماییم.

دستور free

با این دستور می توانیم، میزان مصرف و میزان حافظه‌ی قابل استفاده در حافظه‌ی اصلی(RAM)، را مشاهده نماییم.

دیدگاهتان را بنویسید