خاتمه دادن به برنامه های غیر پاسخگو با استفاده از دستورات kill ، killall و pkill کار ساده ای است. فقط باید نام فرایند یا PID را بدانید.

نحوه kill کردن پروسس ها در لینوکس

حتما برای شما پیش آمده که هنگام کار با برنامه‌ای دچار مشکلاتی از قبل : فریز شدن صفحه، بسته نشدن آن برنامه، کار نکردن ماوس و کیبورد و از این قبیل مشکلات شده باشید. ما با استفاده از ابزاری که لینوکس در اختیار ما میگذارد این اینگونه پروسس ها را به اصطلاح kill میکنیم.

راه حل اینگونه مشکلات را در این مقاله به آموزش می دهیم، همراه ما باشید.

در لینوکس چندین ابزار برای حل این مشکلات وجود دارد مانند :

  • kill
  • killall
  • pkill

اما اینها چگونه کار میکنند و چطور از آنها استفاده کنیم؟

kill فرآیندهای سیستم را بر اساس ( PID ( Process ID number متوقف میکند درحالیکه killall و pkill فرآیندهای در حال اجرا بر اساس نام و سایر ویژگی های خود پایان میدهند.

در صورتی که در یک سیستم چندین کاربر وجود داشته باشد، یک کاربر عادی تنها قادر پردازش های خود را kill کند و نمیتواند پردازش های کاربران دیگر متوقف کنند، این کار تنها کاربر sudo میتواند انجام دهد.

kill کردن پروسس ها در لینوکس

سیگنال های سیستم هنگام kill

pkill, killalll و kill یک سیگنال برای متوقف کردن پردازش ها و پردازش های گروهی ارسال میکنند. وقتی هم هیچ سیگنالی ارسال نشود، این ابزارها 15(Term) را ارسال میکنند.

پرکاربرد ترین سیگنال :

سیگنال 1 که به آن -HUB گفته میشود برای اجرای دوباره (Restat) پروسس
سیگنال 9 که به آن -KILLگفته میشود برای کشتن (kill) پروسس
سیگنال 15 که به آن -TERMگفته میشود برای متوقف کردن (Stop) یک پروسس

سیگنال ها به سه روش مختلف مشخص میشوند:

  • استفاده از یک شماره مانند: ( 1-)
  • با پیشوند “SIG” مانند: (SIGHUB-)
  • بدون پیشوند “SIG” مانند: (HUB-)

ما با استفاده از -l میتوانیم لیست تمام سیگنال ها را مشاهده کنیم:

kill -l  
killall -l
kill فرآیندهای سیستم را بر اساس ( PID ( Process ID number متوقف میکند
signal List

خاتمه دادن به یک پروسس از طریق kill

برای خاتمه دادن به یک سیگنال ابتدا باید PID آن را بیابیم. این کار با استفاده از دستورات
top
ps
pidof
pgrep
امکان پذیر است.

برای مثال فرض می کنیم برای مرورگرمان مشکلی رخ داده با دستور pidof لیست PID آن را پیدا میکنیم:

pidof firefox
output:
2551 2514 1963 1856 1771

سپس با ارسال سیگنال TERM به آنها خاتمه می دهیم :

kill -9 2551 2514 1963 1856 1771

خاتمه دادن به پروسس ها از طریق Killall

با دستور killall شما میتوانید با وارد کردن اسم یک پراسس برای مثال firefox تمام پروسس های آن را خاتمه بدهید:

killall -9 firefox

killall دارای گزینه های مختلفی است از جمله ارسال سیگنال به پروسس های متعلق به یک کاربر، مطابق نام پردازش که بصورت regular expressions در دستور ذکر میشود و زمان ایجاد پروسس، میپذیرد. همچنین با تایپ دستور killall به تمام آپشن های آن دسترسی پیدا کنید.

برای مثال ما میخواهیم پروسس های متعلق به یک کاربر را خاتمه دهیم :

sudo killall -u afshin

خاتمه دادن به پروسس ها از طریق pkill

pkill نیز با استفاده از الگوی داده شده به آن پروسس را خاتمه میدهد:

pkill -9 firefox

همچنین با pkill میشود به پروسس های متعلق به یک کاربر نیز خاتمه داد :

pkill -9 -u afshin firefox

نتیجه

خاتمه دادن به برنامه های unresponsive  با استفاده از دستورات kill ، killall و pkill کار ساده ای است. فقط باید نام فرایند یا PID را بدانید.

درباره AfshinBalakar

افشین بالاکار دانشجوی مهندسی تکنولوژی نرم افزار، مدت 5 سال است با لینوکس رابطه افلاطونی دارم.

پیشنهاده میشه بخونی

آموزش ساخت یوزر در سنت او اس

نحوه اضافه کردن و حذف کاربران در CentOS 8

یکی از اولین کارها هنگام تهیه سرور جدید لینوکس ، اضافه کردن و حذف کاربران …

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

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