دستور Kill در لینوکس - وان سرور آکـادمی
دستور Kill در لینوکس
دستور Kill در لینوکس

دستور Kill در لینوکس

زمان تقریبی مطالعه: 4 دقیقه

دستور Kill در لینوکس

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

برنامه های غیر پاسخگو را نمی توان مجدداً راه اندازی کرد. زیرا فرایند اصلی برنامه هرگز کاملاً خاموش نمی شود. تنها راه حل این است که یا سیستم را مجدداً راه اندازی کنید یا برنامه را غیرفعال کنید.

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

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

kill یک شل است که در بیشتر شل های مشتق از بورن مانند Bash و Zsh ساخته شده است. رفتار فرمان بین پوسته ها و عملکرد مستقل /bin/kill کمی متفاوت است.

از فرمان type برای نمایش همه مکانها در سیستم خود که حاوی kill است استفاده کنید:

type -a kill
خروجی:
kill is a shell builtin
kill is /bin/kill 

خروجی بالا می گوید که پوسته داخلی در اولویت اجرای مستقل است و هر زمان که kill بنویسید از آن استفاده می شود. اگر می خواهید از باینری استفاده کنید ، مسیر کامل پرونده را در /bin/kill تایپ کنید. در این مقاله از ساخت داخلی Bash استفاده خواهیم کرد.

یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.

وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.

برای خرید سرور مجازی با گارانتی 100% بازگشت وجه کلیک کنید.

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

kill [ OPTIONS ] [ PID ] ..

فرمان kill یک سیگنال را به فرآیندهای مشخص یا گروههای پردازشی می فرستد و باعث می شود که آنها مطابق سیگنال عمل کنند. هنگامی که سیگنال مشخص نشده است ، پیش فرض -15 (-TERM) است.

متداول ترین سیگنال ها عبارتند از:

  • 1 ( HUP ) – یک فرآیند را بارگیری مجدد کنید.
  • 9 ( KILL ) – یک روند را kill کنید.
  • 15 ( TERM ) – یک روند را متوقف کنید.

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

kill -l
دستور Kill در لینوکس

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

  1. با استفاده از شماره (به عنوان مثال ، -1 یا -s 1 ).
  2. با استفاده از پیشوند “SIG” (به عنوان مثال ، -SIGHUP یا -SIGHUP ).
  3. بدون پیشوند “SIG” (به عنوان مثال ، -HUP یا -s HUP ).

دستورات زیر معادل یکدیگر است:

kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER

PID های ارائه شده به دستور kill می تواند یکی از موارد زیر باشد:

  • اگر PID بیشتر از صفر باشد ، سیگنال با شناسه برابر با PID به فرایند ارسال می شود.
  • اگر PID برابر با صفر باشد ، سیگنال به کلیه فرآیندهای موجود در گروه فرآیند ارسال می شود. به عبارت دیگر ، سیگنال به کلیه فرآیندهای متعلق به GID شل که از فرمان kill استفاده کرده اند ، ارسال می شود. برای مشاهده شناسه های گروه پردازش (GID) از دستور ps -efj استفاده کنید.
  • اگر PID برابر با -1 ، سیگنال به کلیه فرایندها با همان UID ارسال می شود که کاربر از آن دستور استفاده می کند. اگر کاربر دسترسی root داشته باشد ، سیگنال به کلیه فرایندها به جز خود پردازش kill ارسال می شود.
  • اگر PID کمتر از -1 ، سیگنال به کلیه فرآیندهای موجود در گروه فرایند eq با GID برابر با مقدار مطلق PID ارسال می شود.

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

خاتمه پروسس ها با استفاده از دستور kill

برای خاتمه یا از بین بردن یک فرآیند با دستور kill ، ابتدا باید شماره شناسه پردازش (PID) را پیدا کنید. شما می توانید این کار را با استفاده از دستورات مختلف مانند top ، ps ، pidof و pgrep انجام دهید.

بیایید بگوییم مرورگر فایرفاکس پاسخگو نبوده است ، و شما باید فرایند Firefox را kill کنید. برای یافتن PID های مرورگر از دستور pidof استفاده کنید:

pidof firefox

در این دستور شناسه کلیه فرآیندهای Firefox چاپ می شود:

 6263 6199 6142 6076

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

 kill -9 2551 2514 1963 1856 1771

به جای جستجوی PID ها و سپس خاتمه مراحل ، می توانید دستورات فوق را در یک دستور ترکیب کنید:

kill -9 $(pidof firefox)

پردازش مجدد با استفاده از دستور kill

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

به عنوان مثال ، برای بارگیری مجدد Nginx ، باید سیگنالی را به فرایند master ارسال کنید. شناسه پردازش فرآیند Nginx master را می توان در پرونده nginx.pid یافت ، که به طور معمول در فهرست /var/run است.

برای پیدا کردن master PID از دستور cat استفاده کنید:

cat /var/run/nginx.pid
خروجی:
 30251 

پس از پیدا کردن master PID ، تنظیمات Nginx را با تایپ دوباره بارگیری کنید:

sudo kill -1 30251

دستور فوق باید به صورت root یا کاربر دارای امتیازات sudo اجرا شود.

نتیجه

دستور kill برای ارسال سیگنال به پردازشها استفاده می شود. بیشترین استفاده از سیگنال SIGKILL یا -9 است که فرآیندهای داده شده را خاتمه می دهد.

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