از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه مدیریت فرآیندهای لینوکس
سرفصلهای مطلب
همه ما برای رسیدن به اهدافمان از فرآیندهای خاصی پیروی می کنیم. به طور مشابه، هر سیستمی فرآیندهای خاص خود را برای انجام وظایف دارد.
هر برنامه یا دستوری که در یک سیستم لینوکس اجرا می شود، یک فرآیند نامیده می شود.
در این آموزش، بیایید فرآیندها و نحوه مدیریت آنها را در لینوکس بررسی کنیم.
فرآیند لینوکس چیست؟
یک فرآیند از نظر تئوری برنامه در حال اجرا نامیده می شود. این اساساً وظیفه ای است که یک سیستم در حال حاضر روی آن کار می کند.
هر اقدامی که روی سیستم انجام می دهید منجر به فرآیند جدیدی می شود. به عنوان مثال، باز کردن یک مرورگر فرآیندی را آغاز می کند.
به عبارت ساده، یک فرآیند نمونه ای از یک برنامه است. اکشن کاربر به یک فرمان تبدیل میشود و با اجرای دستور، فرآیند جدیدی ایجاد میشود.
فرآیندها بر اساس سلسله مراتب والدین-فرزند کار می کنند. همانطور که از نام سلسله مراتب پیداست، فرآیندی که از یک دستور/برنامه آغاز می شود، فرآیند والد و فرآیند تولید شده از یک فرآیند والد، فرآیند فرزند نامیده می شود.
انواع فرآیندهای لینوکس
فرآیندها در توزیع های لینوکس به 2 نوع طبقه بندی می شوند:
- فرآیندهای پیش زمینه
- فرآیندهای پس زمینه
فرآیندهای پیش زمینه
فرآیندی که کاربر را ملزم می کند تا با استفاده از یک فرمان یا برنامه ترمینال آن را شروع کند، فرآیند پیش زمینه نامیده می شود. این بدان معنی است که فرآیندهای پیش زمینه نیاز به یک ماشه ورودی از یک کاربر دارند. بنابراین هر فرآیند پیش زمینه به صورت دستی راه اندازی می شود.
هر زمان که یک فرآیند در پیش زمینه اجرا می شود، سایر فرآیندها باید منتظر بمانند تا فرآیند فعلی تکمیل شود.
بهترین مثال برای نشان دادن این موضوع از طریق sleep
فرمان این sleep
دستور به کاربر اجازه نمی دهد با ترمینال تعامل داشته باشد تا زمانی که تعداد معینی از ثانیه ها سپری شود.
باید 10 ثانیه منتظر بمانیم تا به ترمینال دسترسی پیدا کنیم تا دستور دیگری را اجرا کنیم.
فرآیندهای پس زمینه
فرآیندی که به طور مستقل بر روی ورودی کاربر اجرا می شود، فرآیند پس زمینه نامیده می شود. برخلاف فرآیندهای پیش زمینه، ما می توانیم چندین پردازش را همزمان در یک فرآیند پس زمینه اجرا کنیم.
برای اجرای یک فرآیند در پسزمینه، یک علامت علامت (&) را در انتهای دستوری که برای شروع فرآیند استفاده میکنید، قرار دهید.
در اینجا یک مثال سریع برای نشان دادن این است:
بیایید اجرا کنیم sleep
دستور در یک فرآیند پس زمینه در پسزمینه اجرا میشود و ترمینال را به ما برمیگرداند تا دستورات دیگر را اجرا کنیم.
اکنون می بینیم که دستور بالا در پس زمینه اجرا می شود. این یک فرآیند با PID
(19003). بنابراین می توانیم دستور دیگری را به طور همزمان اجرا کنیم (pwd
فرمان).
چگونه یک فرآیند پیش زمینه را به یک فرآیند پس زمینه تغییر دهیم
اگر فرآیندی را در پیشزمینه شروع کنیم و بخواهیم آن را در پسزمینه قرار دهیم، میتوانیم آن را با استفاده از bg
فرمان بیایید ببینیم که چگونه فرآیند پیش زمینه را به پس زمینه تغییر دهیم.
اگر فرآیندی در حال اجرا است، کلید را فشار دهید CTRL+Z
. این دستور روند فعلی را به حالت تعلیق در می آورد.
سپس اجرا کنید bg
فرمان شناسه فرآیند را به عنوان آرگومان می گیرد و فرآیند را در پس زمینه قرار می دهد. اگر آرگومان خالی باشد، فرآیند معلق فعلی را در پسزمینه قرار میدهد.
ما می توانیم دستور تعلیق ( sudo apt update
) از سرگیری در پس زمینه.
نحوه فهرست کردن فرآیندهای لینوکس
قبل از اینکه به نحوه انجام این کار بپردازیم، باید بدانید که چرا ممکن است نیاز به دانستن لیستی از فرآیندها داشته باشید. در اینجا چند دلیل وجود دارد:
- برای اینکه بدانید کدام فرآیند زمان بیشتری را صرف می کند.
- برای اینکه بدانید کدام فرآیند حافظه و CPU بیشتری مصرف می کند.
- برای دانستن دستور آغاز شده برای یک فرآیند در حال اجرا.
برای دیدن فرآیندهایی که در حال حاضر در حال اجرا هستند، می توانیم استفاده کنیم ps
دستور (وضعیت فرآیند):
برای فهرست کردن خلاصهای از فرآیندهای هر کاربر وارد شده، میتوانیم از آن استفاده کنیم w
فرمان این دستور ترکیبی از who
، uptime
و ps -a
دستورات در لینوکس
نحوه فهرست کردن فرآیندها در نمای درختی
هنگامی که یک برنامه/فرمان اجرا می شود، یک فرآیند اصلی به نام فرآیند والد را آغاز می کند. فرآیند والد ممکن است به دستور/برنامه دیگری بستگی داشته باشد که فرآیند فرزند را ایجاد کند.
در اینجا یک نمونه از صفحه نمایش است.
در تصویر بالا، فایرفاکس فرآیند والد و سایر فرآیندها فرآیندهای فرزند آن هستند.
بیایید نحوه فهرست کردن فرآیند را در یک ساختار درخت مانند بررسی کنیم.
pstree
یک دستور لینوکس برای لیست کردن فرآیند در حال اجرا همه کاربران در یک ساختار درخت مانند است. از آن به عنوان یک جایگزین بصری تر برای استفاده می شود ps
فرمان
همانطور که می بینیم، فرآیندهای در حال اجرا به شکل درختی هستند. این می تواند برای تجسم فرآیندها مفید باشد.
اضافه کردن -p
flag با دستور هر شاخه را با شناسه فرآیند خود نمایش می دهد.
برای فهرست کردن فرآیند(های) فرزند یک فرآیند خاص، شناسه فرآیند را به عنوان آرگومان به آن ارسال کنید pstree
فرمان
قبلاً به آن اشاره کردم pstree
دستور، فرآیندهای همه کاربران را فهرست می کند. ارسال نام کاربری به همراه pstree
دستور فقط فرآیندهای اجرا شده توسط کاربر را فهرست می کند.
pstree root
اسکرین شات بالا فرآیندهای در حال اجرا را نشان می دهد root
کاربر.
نحوه مشاهده فرآیندهای یک برنامه خاص
بسیاری از توسعه دهندگان ممکن است با سناریوی زیر روبرو شده باشند:
در حین کار بر روی پروژه های توسعه وب، از مرورگرهایی مانند Chrome، Firefox و سایرین برای تأیید خروجی با مرورگرهای مختلف استفاده می کنیم.
برخی از توسعه دهندگان به باز کردن برگه ها ادامه می دهند و هرگز برگه های باز شده را نمی بندند. به دلیل بار زیاد (در صورت باز شدن بیش از 150 برگه)، مرورگرها گاهی اوقات پاسخ نمی دهند 😣 منجر به قطع شدن سیستم می شود. بدترین قسمت می تواند این باشد که ما نمی توانیم مرورگر را ببندیم 😂.
برخلاف ویندوز، ما در لینوکس Task Manager نداریم تا مرورگر را از بین ببرد.
این مشکل در لینوکس نیز به راحتی قابل حل است. بیایید ببینیم یک متخصص لینوکس چگونه با این سناریو برخورد می کند.
ما می دانیم که هر برنامه (از جمله مرورگر) به عنوان یک فرآیند اجرا می شود. بنابراین فقط باید شناسه فرآیند را پیدا کنید و آن را بکشید.
بیایید ببینیم چگونه شناسه فرآیند دستور/برنامه مورد نیاز خود را پیدا کنیم.
در سیستم من، کروم در حال اجرا است، اکنون میتوانیم PIDهای کروم را با اجرای دستور زیر دریافت کنیم:
چگونه یک فرآیند را بکشیم
دستوری هست به نام kill
در لینوکس که برای از بین بردن هر فرآیندی با ارسال PID (شناسه فرآیند) یا نام فرآیند استفاده می شود.
در اینجا نحو از kill
دستور:
بیایید PID کروم را ذخیره کرده و با استفاده از دستور kill آن را بکشیم:
دستور بالا مرورگر وب کروم را از بین می برد.
نحوه فهرست کردن همه فرآیندها
ما می توانیم تمام فرآیندهای لینوکس را با استفاده از top
فرمان بهروزرسانیهای بیدرنگ هر فرآیند را برای همه کاربران نشان میدهد.
بیایید عنوان را درک کنیم تا داده های اساسی را درک کنیم.
- PID یک شناسه فرآیند منحصر به فرد را نشان می دهد.
- USER نشان دهنده نام کاربری صاحب کار است.
- روابط عمومی نشان دهنده اولویت فرآیند است. تعداد کمتر، اولویت بیشتر است.
- NI نشان دهنده یک ارزش خوب کار است. یک مقدار خوب منفی به معنای اولویت بالاتر است و یک مقدار مثبت مثبت به معنای اولویت کمتر است.
- VIRT کل حافظه مجازی استفاده شده توسط کار را نشان می دهد.
- RES نشان دهنده استفاده از RAM از یک فرآیند در کیلوبایت است.
- SHR نشان دهنده اندازه حافظه مشترک (Kb) است که توسط یک فرآیند استفاده می شود.
- S وضعیت فرآیند را نشان می دهد:
– د: خواب بی وقفه
– ر: در حال دویدن
– S: خوابیدن
– T: ردیابی (توقف)
– ز: زامبی - CPU نشان دهنده استفاده از CPU است.
- MEM میزان استفاده از حافظه کار را نشان می دهد.
- TIME نشان دهنده زمان CPU است.
- COMMAND نشان دهنده دستوری است که برای شروع فرآیند استفاده می شود.
برای نمایش فرآیندهای کاربر خاص باید از پرچم استفاده کنیم -u
:
برای مشاهده فرآیندهای اجرا شده توسط کاربر gogosoon
، دستور زیر را اجرا کنید:
ممکن است با دیدن خروجی خط فرمان گیج شوید 😆. اشکال زدایی فرآیندها در زمان واقعی کمی سخت خواهد بود.
در اینجا ابزار مفید رابط کاربری گرافیکی برای مدیریت فرآیندها در لینوکس آمده است. اما ما باید این را به صورت دستی نصب کنیم. این کار بیشتر شبیه مدیر وظیفه در ویندوز است.
پس از نصب، فقط نام نرم افزار را در ترمینال تایپ کنید:
این همه فرآیندها را در یک پنجره جدید با رابط کاربری گرافیکی مناسب باز می کند:
وقتی روی هر فرآیندی کلیک راست می کنیم، اقداماتی مانند kill، stop، end و غیره را نشان می دهد.
برگه منابع ابزارهای زیر را نشان می دهد:
- تاریخچه CPU
- حافظه و تاریخچه تعویض
- تاریخچه شبکه
این نمودارها برای تعیین بار در سیستم شما مفید خواهند بود.
نتیجه
در این مقاله با اصول اولیه پردازش ها در لینوکس آشنا شدید. امیدوارم اکنون درک کرده باشید که چگونه آنها کمی بهتر کار می کنند. من به همه شما توصیه می کنم این دستورات را در سیستم خود امتحان کنید.
برای کسب اطلاعات بیشتر در مورد لینوکس، در خبرنامه ایمیل من در سایت من مشترک شوید و من را در رسانه های اجتماعی دنبال کنید.
منتشر شده در 1402-12-27 04:14:04