دستور 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 کاهش میدهد.
نحو فرمان 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_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
است که فرآیندهای داده شده را خاتمه می دهد.
اولین نفر باشید که نظر ارسال میکنید