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

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

سعیده مهاجری

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

دستور kill :

kill یک shell است که در بیشتر shell های Bourne-derived مانند Bash و Zsh ساخته شده است. رفتار دستور kill بین shell ها و اجزای مستقل /bin /kill کمی متفاوت است. از دستور type برای نمایش همه مکانهای سیستم خود که حاوی kill است ، استفاده کنید:

type -a kill
kill is a shell builtin
kill is /bin/kill

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

kill [OPTIONS] [PID]...

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

  • ۱ (HUP) – یک فرآیند را مجددا دانلود کنید.
  • ۹ (KILL) – یک فرایند را Kill کنید.
  • ۱۵ (TERM) – یک روند را متوقف کنید.

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

kill -l

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

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

۱_ با استفاده از شماره (به عنوان مثال ، -۱ یا -s 1).

۲_ با استفاده از پیشوند “SIG” (به عنوان مثال ، -SIGHUP یا -s SIGHUP).

۳_ بدون پیشوند “SIG” (به عنوان مثال ، -HUP یا -s HUP).

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

kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -HUP PID_NUMBER

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

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

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

pidof firefox

این دستور شناسه تمام فرایندهای Firefox را نمایش می دهد:

۶۲۶۳ ۶۱۹۹ ۶۱۴۲ ۶۰۷۶

هنگامی که اعداد فرآیندها را می شناسید ، می توانید با ارسال سیگنال TERM همه آنها را از بین ببرید:

kill -9 6263 6199 6142 6076

به جای جستجوی PID ها و سپس از بین بردن فرآیندها ، می توانید دستورات فوق را در یک دستور ترکیب کنید:

kill -9 $(pidof firefox)

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

یکی دیگر از موارد رایج برای kill ، ارسال سیگنال HUP است که به فرایندها می گوید تنظیمات آن را مجددا آپلود کنند. به عنوان مثال ، برای پردازش مجدد Nginx ، باید یک سیگنال به فرآیند master ارسال کنید. شناسه فرآیند Nginx master را می توانید در فایل nginx.pid ، که معمولاً در دایرکتوری /var /run قرار دارد ، پیدا کنید. برای پیدا کردن master PID از دستور cat استفاده کنید:

cat /var/run/nginx.pid
۳۰۲۵۱

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

sudo kill -1 30251

دستور بالا باید به عنوان root یا کاربر با امتیازات sudo اجرا شود.

جمع بندی :

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

امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊

برچسب ها: دستورات لینوکس