مدیریت پروسه‌ها و تفاوت Ctrl+Z با Ctrl+C

کار کردن با خط فرمان برای تمام کاربران بسیار لذت بخش و جذاب می‌باشد، یادگیری تکنیک ها روش‌های استفاده از این ابزار از شما یک شوالیه در گنو/لینوکس خواهد ساخت.

این ابزار سریع، انعطاف پذیر  و در برخی موارد اگر به درستی ندانید که چه می‌کنید خطرناک است، در پست قبل نه دستور مهلک و خطرناک در گنو/لینوکس را مورد برسی قرار دادیم، در این پست با مدیریت پروسه‌ها در خط فرمان آشنا شده و به برسی تفاوت Ctrl+Z و Ctrl+C در خط فرمان می‌پردازیم.

Ctrl+Z و Suspend کردن پروسه

اگر پس از اجرا کردن یک دستور در ترمینال Ctrl+Z بزنید، پروسه درحال اجرا، موقتا به حالت تعلیق (Suspend) در می‌آید (به این منظور یک سیگنال SIGTSTP به پروسه ارسال میشود)، یعنی میتوان مجددا اجرای آن را از سر گرفت، پس از وارد شدن پروسه به حالت تعلیق پیغامی مشابه متن زیر بر روی ترمینال درج می‌شود:

[1]+  Stopped                 command

command نام دستور (برنامه) اجرا شده می‌باشد.

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

اجرای مجدد پروسه های Suspend با fg و bg

برای اجرای مجدد برنامه تعلیق شده میتوان از دستور fg به معنی foreground یا bg به معنی background استفاده کرد.

تفاوت پروسه های Background و Foreground

همانطور که از نام دستورات برمی‌آید است fg برنامه را در foreground به اجرا در می‌آورد، در این حالت Terminal برای دریافت دستورات از دسترس کاربر خارج میشود. به خاطر داشته باشید همچنان میتوانید با فشردن Ctrl+Z برنامه را مجددا suspend‌ کرده و Terminal را در دست بگیرید، در مقابل دستور bg برنامه را از حالت suspend خارج کرده و در background اجرا میکند و Terminal همچنان در دسترس و قادر به دریافت دستورات شما خواهد بود.

در صورتی که چند پروسه suspend شده داشته باشیم و دستورات فوق را بدون پارامتر خاصی اجرا نماییم، آخرین فرآیند suspend شده از حالت تعلیق خارج میشود، به مثال زیر توجه نمایید:

[email protected]:~$ mousepad
^Z
[1]+  Stopped                 mousepad
[email protected]:~$ gedit
^Z
[2]+  Stopped                 gedit

ابتدا mousepad را اجرا  و سپس آن را suspend کرده‌ایم، در مرحله بعد gedit را اجرا و همانند قبل با Ctrl+Z به حالت تعلیق درآورده ایم،‌ حال اگر fg یا bg را اجرا نماییم آخرین پروسه suspend شده یعنی gedit از حالت تعلیق خارج میشود.

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

fg %1

mousepad را در foreground اجرا میکند، یا:

bg %1

که mousepad را در background اجرا میکند.

به دست آوردن لیست پروسه های Suspend و درحال اجرا در Background

برای به دست آوردن لیست پروسه های suspend شده یا پروسه های در حال اجرا در background از دستور jobs استفاده میکنیم، خروجی این دستور به شکل زیر است:

[1]+  Stopped                 mousepad
[2]-  Running                 gedit &

در لیست بالا همانطور که مشاهده میکنید gedit در background اجرا شده، (باتوجه به Running و علامت &) و mousepad در حالت suspend قرار دارد و اجرای آن متوقف شده است (Stopped).

از بین بردن یک پروسه

برای از بین بردن یک پروسه به طور کامل که suspend شده یا در background قرارگرفته میتوانید از دستور kill به همراه عدد اختصاص یافته شده به پروسه استفاده نمایید:

kill %2

پروسه gedit را از بین می‌برد.

اجرای مستقیم برنامه در Background

برای اجرا و قرار دادن یک پروسه در background به صورت مستقیم در انتهای دستور، پس از یک فاصله، از علامت & استفاده میکنیم:

[email protected]:~$ gedit &

دستور بالا gedit را اجرا و در background قرار میدهد. خروجی دستور jobs پس از دستور فوق به شکل زیر است:

[email protected]:~$ jobs
[3]+  Running                 gedit &

Ctrl+C و لغو اجرای پروسه (Terminate)

اگر از دستور Ctrl+C استفاده نماییم، ادامه‌ی اجرای پروسه Run شده که در foreground قرار دارد به طور کامل لغو میشود، اصطلاحا پروسه Terminate خواهد شد، برای اینکار از سیگنال SIGINT استفاده میشود.

2 دیدگاه در “مدیریت پروسه‌ها و تفاوت Ctrl+Z با Ctrl+C

  1. با سلام خدمت مدیریت محترم سایت و با تشکر از زحماتتون و سایت ارزندتون
    یک سوال از خدمتتون شما داشتم
    آیا ممکنه مقالات ترجمه شدمو تو سایت شما برا فروش بگذارم؟؟؟
    قبلا ممنون بخاطر پاسخگوییتون

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

      تشکر و احترام

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تشخیص ربات * Time limit is exhausted. Please reload CAPTCHA.