دستور Kill در لینوکس
لینوکس یک سیستم عامل عالی و پیشرفته است اما کامل نیست. مدتی ممکن است برخی از برنامه ها به صورت نامنظم رفتار کنند و پاسخگو نشوند یا بسیاری از منابع سیستم را مصرف کنند.
برنامه های غیر پاسخگو را نمی توان مجدداً راه اندازی کرد. زیرا فرایند اصلی برنامه هرگز کاملاً خاموش نمی شود. تنها راه حل این است که یا سیستم را مجدداً راه اندازی کنید یا برنامه را غیرفعال کنید.
چندین نرم افزار وجود دارد که به شما امکان می دهد پروسس های غیرفعال را با استفاده از kill ، خاتمه دهید.
فرمان kill در لینوکس
kill یک شل است که در بیشتر شل های مشتق از بورن مانند Bash و Zsh ساخته شده است. رفتار فرمان بین پوسته ها و عملکرد مستقل /bin/kill کمی متفاوت است.
از فرمان type برای نمایش همه مکانها در سیستم خود که حاوی kill است استفاده کنید:
type -a kill
خروجی:kill is a shell builtinkill is /bin/kill
خروجی بالا می گوید که پوسته داخلی در اولویت اجرای مستقل است و هر زمان که kill بنویسید از آن استفاده می شود. اگر می خواهید از باینری استفاده کنید ، مسیر کامل پرونده را در /bin/kill تایپ کنید. در این مقاله از ساخت داخلی Bash استفاده خواهیم کرد.
یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.
وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.
نحو فرمان kill به شکل زیر است:
kill [ OPTIONS ] [ PID ] ..
فرمان kill یک سیگنال را به فرآیندهای مشخص یا گروههای پردازشی می فرستد و باعث می شود که آنها مطابق سیگنال عمل کنند. هنگامی که سیگنال مشخص نشده است ، پیش فرض -15 (-TERM) است.
متداول ترین سیگنال ها عبارتند از:
-
1(HUP) – یک فرآیند را بارگیری مجدد کنید. -
9(KILL) – یک روند را kill کنید. -
15(TERM) – یک روند را متوقف کنید.
برای به دست آوردن لیستی از تمام سیگنالهای موجود ، با گزینه -l از این فرمان فراخوانی کنید:
kill -l

سیگنال ها می توانند به سه روش مختلف مشخص شوند:
- با استفاده از شماره (به عنوان مثال ،
-1یا-s 1). - با استفاده از پیشوند “SIG” (به عنوان مثال ،
-SIGHUPیا-SIGHUP). - بدون پیشوند “SIG” (به عنوان مثال ،
-HUPیا-s HUP).
دستورات زیر معادل یکدیگر است:
kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -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 است که فرآیندهای داده شده را خاتمه می دهد.
یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.