شما برای مطالعه این مقاله فقط 7 دقیقه وقت نیاز دارید

kill-command-in-linux
دسته بندی : آموزش لینوکس

استفاده از دستور kill در لینوکس

5/5 - (1 امتیاز)

این دستور از ابزارهای داخلی تمام توزیع های لینوکس است و نیازی به نصب و راه اندازی ندارد. کافیست با سینتکس و آپشن های متنوع آن آشنا باشید و سپس از آنها برای پیاده سازی سناریوهای متنوع خود استفاده کنید.

دستور kill در لینوکس با هدف خاتمه دادن به فعالیت فرآیندهای موردنظر اجرا می شود که برای این کار می توان از انواع سیگنال ها استفاده کرد.

پیش نیازهای استفاده از دستور kill در لینوکس

سینتکس و آپشن های دستور kill

سینتکس اصلی دستور kill به صورت زیر است:

kill [signal] PID

سینتکس بدون آپشن دستور kill برای خاتمه دادن به فرآیند موردنظر استفاده می شود. اما آپشن های دیگری هم وجود دارند که با استفاده از آنها می توان پروسه خاتمه فرآیند و ارسال سیگنال ها را به طور پیشرفته تر مدیریت کرد.

رایج ترین سیگنال ها/آپشن های دستور kill

سیگنالشماره سیگنال کاربرد
SIGHUP یا HUP1ریلود کردن فرآیند و ذخیره سازی اطلاعات موردنیاز در صورت قطع و اتصال مجدد
SIGINT یا INT2ارسال سیگنال توقف
SIGQUIT یا QUIT3خروج فوری و کامل فرآيند (آزادسازی تمام منابع و ثبت فایل حاوی از اطلاعات و وضعیت فرآیند موقع خروج)
SIGABRT یا ABRT6پایان یافتن فعالیت فرآیند توسط خودش موقع بروز شرایط ناپسند یا هر نوع خطای جدی
SIGALRM یا ALRM 14ارسال هشدار به فرآیند موردنظر در یک زمان مشخص توسط تایمر
SIGTERM یا TERM15خاتمه دادن به فعالیت فرآیند بعد از ذخیره سازی وضعیت و تکمیل عملیات مربوط به آن 
SIGCONT یا CONT18از سر گیری فرآیند متوقف شده
SIGSTOP یا STOP19متوقف کردن فرآیند

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

kill -l

اشکال مختلف دستور kill در لینوکس

دستور kill در شکل های مختلفی قابل استفاده است که هر کدام از آنها متناسب با آپشن های خود، کاربردهای متنوعی دارند.

دستور killall

دستور killall به جای شماره فرآیند، از اسم فرآیند برای پایان دادن به فعالیت آن استفاده می کند. همچنین،

از بین بردن چند فرآیند به صورت همزمان از ویژگی های برجسته این دستور است. 

به عنوان مثال اگر قصد خاتمه دادن به فرآیند های مربوط به firefox را دارید، احتمالاً با چند فرآیند سروکار دارید که اگر بخواهید از دستور kill استفاده کنید، باید تمام شماره ها را به دستور kill اضافه کنید.

kill 1234 4321 2342

در حالی که با دستور killall کافیست فقط اسم firefox را به دستور اضافه کنید تا تمام فرآیندهای هم اسم با firefox خاتمه پیدا کنند:

killall firefox

آپشن های دستور killall

e: پیدا کردن فرآیندهای دقیقاً هم اسم با فرآیند موردنظر

I: نادیده گرفتن یک مورد خاص موقع تلاش برای پیدا کردن فرآیند (ها) موردنظر

i: درخواست یک مرحله اضافی برای تایید پروسه kill فرآیند

u: از بین بردن فرآیندهای متعلق به یک کاربر خاص

v: ارائه یک گزارش در مورد روند از بین روند فرآیند موردنظر

o: از بین بردن فرآیندها مربوط به قبل از یک زمان مشخص

y: از بین بردن فرآیندها مربوط به بعد از یک زمان مشخص

دستور pkill

دستور pkill یک فرآیند را بر اساس اسم و سایر شرایط دیگر از بین می برد و انعطاف پذیری بیشتری نسبت به دستور kill و killall دارد. 

آپشن های دستور pkill

n: خاتمه دادن به جدیدترین فرآیند

o: خاتمه داده به قدیمی ترین فرآیند

u: خاتمه دادن به فرآیندهای متعلق به یک کاربر خاص

x: خاتمه دادن به فرآیندهای مطابق با الگوی موردنظر

دستور xkill

xkill یک ابزار گرافیکی است که خاتمه دادن به فعالیت فرآیندها را برای شما آسان تر می کند. به این صورت که کافیست دستور xkill را اجرا کنید و بعد با کلیک روی فرآیندهای موردنظر، آن را از بین ببرید.

مثال های کاربردی از دستور kill 

اکنون که با دستور kill در لینوکس و انواع آن آشنا شدید، وقت آن است که کاربرد این دستور را در قالب مثال های مختلف بررسی کنیم.

پایان دادن به فعالیت فرآیند موردنظر با kill

برای اینکه فرآیند موردنظر را با استفاده از دستور kill از بین ببرید، باید شماره فرآیند آن را بدانید. پس با اجرای دستور زیر می توانید به فعالیت فرآیند شماره ۱۲۳۴ خاتمه دهید:

kill 1234

حالا اگر شماره فرآیند موردنظر را نمی دانید و به دنبالی راهی برای پیدا کردن شماره فرآیند هستید، ۲ راه دارید:

۱- از دستور pidof استفاده کنید.

برای پیدا کردن شماره فرآیند با pidof، باید اسم فرآیند را بدانید. به عنوان مثال اگر قصد پیدا کردن شماره فرآیندهای مربوط به apache را دارید، باید دستور زیر را اجرا کنید:

pidof apache

سپس، شماره فرآیندهایی که در خروجی این دستور می بینید را در دستور kill لحاظ کنید:

kill 6263 6199 6142 6076

۲- دستور ps و grep را ترکیب کنید.

برای این کار کافیست خروجی فرآیندهای در حال اجرای مربوط به ps را به دستور grep پیپ کنید و آن را بر اساس اسم فرآیندی که به دستور grep اضافه کرده اید، فیلتر کنید.

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

ps aux | grep firefox

دستور ps aux، تمام فرآیندهای در حال اجرا را استخراج می کند. دستور grep firefox از بین این فرآیندهای در حال اجر، خطوط حاوی firefox را نشان می دهد که ستون دوم این خطوط مربوط به شماره فرآیند است.

متوقف سازی یک فرآیند با آپشن term

گاهی اوقات ممکن است بخواهید این فرصت به فرآیند موردنظر بدهید که وضعیت خود را ذخیره کند و وظایف خود را قبل kill شدن به پایان برساند. 

کلیک کنید  نحوه اتصال به اینترنت در کالی لینوکس (اتصال به وای فای)

* اگر دستور kill را بدون آپشن اجرا کنید، سیگنال term به طور پیش فرض فعال و ارسال می شود.

برای این کار کافیست آپشن term را به دستور kill اضافه کنید که ۳ حالت دارد:

kill -15 4321

kill -TERM 4321

kill -SIGTERM 4321

متوقف سازی فوری یک فرآیند با سیگنال SIGKILL

اگر می خواهید فوراً به فعالیت فرآیند موردنظر خاتمه دهید و ذخیره وضعیت و پایان یافتن عملیات مربوط به آن، اهمیتی برای شما ندارد، کافیست SIGKILL را به آن اضافه کنید که ۳ حالت دارد:

kill -19 4321

kill -KILL 4321

kill -SIGKILL 4321

ریلود کردن یک فرآیند برای اعمال پیکربندی های جدید

اگر تغییرات جدید در پیکربندی فرآیند موردنظر ایجاد کرده اید و می خواهید بدون ریستارت سیستم، فرآیند موردنظر را ریلود کنید تا این تغییرات اعمال شوند، کافیست آپشن HUP را به دستور اضافه کنید که ۳ حالت دارد:

kill -1 4321

kill -HUP 4321

kill -SIGHUP 4321

متوقف کردن و از سر گیری فرآیند با دو سیگنال SIGSTOP و SIGCONT

دستور kill در لینوکس می تواند فرآیند موردنظر را برای مدتی متوقف کند. این کار زمانی می تواند مفید باشد که بخواهید منابعی که در اختیار فرآیند(ها) موردنظر قرار دارد را به طور موقت آزاد کنید.

برای این کار باید دستور kill را به یکی از ۳ حالت زیر اجرا کنید:

kill -19 1234

kill -STOP 1234

kill -SIGSTOP 1234

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

kill -18 1234

kill -CONT 1234

kill -SIGCONT 1234

خاتمه دادن به فعالیت چند فرآیند با kill

برای این کار کافیست تمام شماره فرآیندها را به ترتیب در دستور kill لحاظ کنید: 

kill 1234 4321 2342

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

گاهی اوقات ممکن لازم باشد فرآیندها را بر اساس فایل هایی که باز کرده اند یا شماره پورت هایی که استفاده کرده اند، شناسایی و kill کنید. مخصوصاً مواقعی که لازم است مشکلات مربوط به شبکه یا فایل ها را شناسایی و رفع کنید، این دستور بسیار مفید خواهد بود.

برای بستن فرآیندها بر اساس شماره پورت، دستور kill را به صورت زیر اجرا کنید:

kill $(lsof -t -i :[PORT_NUMBER])

برای خاتمه دادن به فرآیندهای درگیر با یک فایل خاص، از دستور زیر استفاده کنید:

kill $(lsof -t /[path_to_file])

دستور lsof مثال اول، فعالیت های شبکه را فیلتر می کند و با آپشن t شماره فرآیندها را استخراج کرده و به دستور kill ارسال می کند تا خاتمه پیدا کنند.

دستور lsof مثال دوم، لیست مربوط به فایل ها و فرآیندها درگیر با آنها را استخراج می کند و آپشن t هم شماره فرآیندها را برمی گرداند و در اختیار kill قرار می دهد.

خاتمه دادن به تمام فرآیندها با killall

اگر نمی خواهید درگیر شماره فرآیندها شوید و خاتمه دادن به فرآیندها بر اساس اسم آنها برای شما کاربردی تر است، می توانید از دستور killall استفاده کنید.

به این صورت که اسم سرویس یا برنامه موردنظر را در دستور killall لحاظ می کنید و این دستور هم به تمام فرآیندهای هم اسم با سرویس یا برنامه وارد شده خاتمه می دهد.

killall apache

اگر چند فرآیند مربوط به این سرویس یا برنامه در حال اجرا باشند، اجرای دستور killall همه آنها را به صورت همزمان می بندد.

در صورت تمایل به دریافت یک درخواست تایید قبل اجرای دستور killall می توانید آپشن i را هم به دستور اضافه کنید:

killall -i apache

خاتمه دادن به فرآیندها بر اساس زمان اجرا

دو آپشن o و y برای فیلترسازی زمان دستور killall قابل استفاده هستند.

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

killall -o 15m

اگر می خواهید فرآیندهای جدیدتر که طول عمر کمتر از ۱۵ دقیقه دارند را kill کنید، از دستور زیر استفاده کنید:

killall -y 15m

در صورت تمایل می توانید اسم برنامه را هم لحاظ کنید که این فیلتر زمانی فقط روی فرآیندهای مربوط به آن فرآیند اجرا شود:

killall -o 15m chrome

خاتمه اجباری فرآیندهای مربوط به اپلیکیشن ها

اگر می خواهید تمام فرآیندهای در حال اجرا توسط اپلیکیشن ها را به صورت فوری و اجباری از بین ببرید، می توانید از آپشن ۹ دستور kill به صورت زیر استفاده کنید:

killall -9 applications

از بین بردن جدیدترین فرآیند مربوط به کاربر موردنظر

pkill -n -u user_name

خاتمه دادن به تمام فرآیندهای مربوط به یک کاربر خاص

pkill -u user_name

خاتمه دادن به تمام فرآیندهای مطابق با الگوی خاص

برای این کار کافیست الگوی موردنظر را به دستور اضافه کنید. به عنوان مثال این الگو می تواند ping باشد. 

pkill -9 -f "ping"

با اجرای دستور بالا، فرآیند مربوط به ping که در حال اجرا است را شناسایی کرده و به صورت اجباری و فوری به فعالیت آن خاتمه می دهید.

چند نکته در مورد دستور kill در لینوکس

  • استفاده از سیگنال خاتمه اجباری یا همان سیگنال شماره ۹ می تواند باعث از دست دادن داده یا خرابی فایل سیستم شوند.
  • بعضی از فرآیندها می توانند سیگنال های دستور kill را نادیده بگیرند (به جز سیگنال های SIGKIL و SIGSTOP)
  • خطای Operation Not Permitted به خاطر نداشتن مجوز لازم برای مدیریت فرآیند موردنظر است که با اضافه کردن دستور sudo به ابتدای آن می توانید از امتیازات لازم برای اجرای آن برخوردار شوید.
  • خطای No Such Process زمانی اتفاق می افتد که شماره فرآیند را اشتباه وارد کرده باشید یا اینکه فرآیند مربوط به آن قبلاً خاتمه پیدا کرده است.
  • می توانید از دستور kill برای ایجاد اسکریپت های لازم جهت مدیریت و خودکار سازی برخی از تسک ها استفاده کرد.

سخن آخر

با دستور kill در لینوکس می توانید به فعالیت فرآیندهای موردنظر خود خاتمه دهید. این دستور اشکال و آپشن های متنوعی دارد که می توانید متناسب با نیاز و شرایط خود از مناسب ترین آنها استفاده کنید.

مطالب مشابهی که شاید علاقمند باشید

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

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید