وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش کشتن یک فرآیند در لینوکس

0 0
زمان لازم برای مطالعه: 3 دقیقه


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

خوب، برای همه ما در مقطعی اتفاق افتاده است. رفع؟ سرسخت را خاتمه دهید process به صورت دستی

خوشبختانه لینوکس ابزارهای قدرتمندی برای این کار ارائه می دهد: kill، killall، و pkill. در این راهنما، روش استفاده موثر از آنها را بررسی خواهیم کرد.

تفاوت اصلی این ابزارها در این است kill فرآیندهای مبتنی بر را خاتمه می دهد روی شماره شناسه فرآیند (PID)، در حالی که killall و pkill دستورات فرآیندهای در حال اجرا را بر اساس خاتمه می دهند روی نام و سایر صفات آنها

کاربران عادی فقط می توانند فرآیندهای خود را خاتمه دهند root می تواند به هر کدام پایان دهد process در سطح سیستم

درک سیگنال های کشتن

kill، killall، و pkill ارسال یک سیگنال داده شده به فرآیندهای مشخص شده یا process گروه ها اگر هیچ سیگنالی مشخص نشده باشد، آنها به طور پیش فرض روی می دهند 15 (TERM) برای یک خاموشی دلپذیر.

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

  • 1 (-HUP): بارگیری مجدد پیکربندی.
  • 9 (-KILL): اجبار فسخ فوری (استفاده به عنوان آخرین راه حل).
  • 15 (-TERM): با ظرافت a process.
پیشنهاد می‌کنیم بخوانید:  روش نصب Apache Maven در CentOS 8

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

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

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

kill -l  # or killall -l

مراحل ذکر شده در زیر برای هر توزیع لینوکس اعمال می شود.

با استفاده از kill فرمان

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

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

pidof firefox

فرمان خواهد شد print تمام فرآیندهای فایرفاکس:

2551 2514 1963 1856 1771

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

kill -9 2551 2514 1963 1856 1771

با استفاده از killall فرمان

را killall فرمان تمام فرآیندهای منطبق با یک نام را خاتمه می دهد و کار با برنامه ای را که چندین نمونه دارد آسان تر می کند.

با استفاده از همان سناریوی قبلی، می توانید فایرفاکس را از بین ببرید process با تایپ:

killall -9 firefox

killall چندین گزینه مانند ارسال سیگنال به فرآیندهای متعلق به یک کاربر معین را می پذیرد process نام ها در برابر عبارات منظم، و ایجاد یک محدوده زمانی. با تایپ کردن می توانید لیستی از همه گزینه ها را دریافت کنید killall (بدون هیچ استدلالی) روی شما terminal.

پیشنهاد می‌کنیم بخوانید:  درک و پیاده سازی تکنیک های تعادل بار لینوکس

به عنوان مثال، برای خاتمه دادن به تمام فرآیندهایی که به عنوان کاربر “zoe” اجرا می شوند، دستور زیر را اجرا کنید:

sudo killall -u zoe

با استفاده از pkill فرمان

pkill

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

pkill -9 firefox

نام از process لازم نیست دقیقاً مطابقت داشته باشد. مسابقات جزئی نیز کار می کنند.

با pkill شما همچنین می توانید سیگنالی را به فرآیندهایی که یک کاربر خاص مالک آن است ارسال کنید. برای از بین بردن فقط فرآیندهای فایرفاکس متعلق به کاربر “zoe”، باید تایپ کنید:

pkill -9 -u zoe firefox

نتیجه گیری

از بین بردن برنامه های بدون پاسخ در لینوکس با kill، killall، و pkill دستورات آسان است شما فقط باید بدانید process نام یا PID شروع کنید با -TERM (یا بدون سیگنال) برای خروج تمیز، و تشدید به -9 فقط در صورت نیاز

اگر سوال یا بازخوردی دارید، در کامنت بگذارید.

کشتن
terminal
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1404-12-29 20:06:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید