از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش کشتن یک فرآیند در لینوکس
سرفصلهای مطلب
آیا تا به حال برنامه ای را راه اندازی کرده اید که در اواسط استفاده ثابت شود و به طور غیرمنتظره ای خراب شود؟ وقتی سعی می کنید آن را دوباره راه اندازی کنید، هیچ اتفاقی نمی افتد زیرا اصلی است 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.
سیگنال ها را می توان به سه روش مختلف مشخص کرد:
- با استفاده از یک عدد (به عنوان مثال، -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
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1404-12-29 20:06:04

