
چگونه یک Process یا فرآیند را در لینوکس Kill یا متوقف کنیم؟
آیا تا به حال با شرایطی روبرو شده اید که برنامه ای را راه اندازی کرده اید ، و ناگهان در حالی که از برنامه استفاده می کنید ، بی پاسخ می ماند و ناگهانی خراب می شود؟ شما سعی می کنید دوباره برنامه را شروع کنید ، اما هیچ اتفاقی نمی افتد زیرا روند اصلی درخواست هرگز به طور کامل متوقف نمی شود. خب ، در بعضی موارد برای همه ما اتفاق افتاده است ، اینطور نیست؟ راه حل Kill یا از بین بردن Process یا روند درخواست است. اما چطور؟ خوشبختانه ، چندین سرویس در لینوکس وجود دارد که به شما امکان می دهد فرایندها یا Process های نادرست را از بین ببرید. در این مقاله ، ما به شما نشان خواهیم داد که چگونه از دستورات kill ، killall و pkill برای خاتمه یک فرآیند در لینوکس استفاده کنید.
تفاوت اصلی بین این ابزارها در این است که kill فرآیندهای را بر اساس شماره شناسه پردازش (PID) خاتمه می دهد ، در حالی که دستورات killall و pkill فرآیندهای اجرا را بر اساس نام و سایر ویژگی های آنها خاتمه می دهند.
کاربران عادی می توانند فرایندهای خود را Kill کنند ، اما نه آنهایی که به کاربران دیگر تعلق دارند ، در حالی که کاربر اصلی یا root می تواند تمامی فرایندها را از بین ببرد.
در ادامه با ما در شتابان هاست همراه باشید.
سیگنال Kill سیستم:
kill، killall و pkill یک سیگنال معین را به فرآیندهای مشخص یا گروههای پردازشی ارسال می کند. هنگامی که هیچ سیگنال مشخص نشده است ، هر ابزار ۱۵ (TERM) ارسال می کند.
متداول ترین سیگنال ها عبارتند از:
- ۱ (-HUP): برای اجرای مجدد یک فرآیند.
- ۹ (-KILL): برای از بین بردن یک روند.
- ۱۵ (-TERM): متوقف کردن روند کار.
سیگنال ها می توانند به سه روش مختلف مشخص شوند:
- با استفاده از شماره (به عنوان مثال ، -۱)
- با پیشوند “SIG” (مثلاً -SIGHUP)
- بدون پیشوند “SIG” (به عنوان مثال ، -HUP).
برای لیست تمام سیگنال های موجود از گزینه -l استفاده کنید:
kill -l
or
killall -l
مراحل ذکر شده در زیر روی کلیه توزیع های لینوکس کار خواهد کرد.
خاتمه مراحل با استفاده از دستور kill:
برای خاتمه فرآیند با دستور kill ابتدا باید PID فرآیند را پیدا کنید. می توانید این کار را با استفاده از دستورات مختلف مانند top ، ps ، pidof و pgrep انجام دهید.
بیایید فرض کنیم مرورگر فایرفاکس پاسخگو نیست و شما باید فرایند مرورگر را بکشید. برای یافتن شناسه فرآیند ، از دستور pidof استفاده کنید:
pidof firefox
این دستور کلیه فرایندهای Firefox را نمایش می دهد:
۲۵۵۱ ۲۵۱۴ ۱۹۶۳ ۱۸۵۶ ۱۷۷۱
هنگامی که PID های Firefox را می دانیددستور kill آن را خاتمه می دهد تا همه آنها سیگنال TERM را ارسال کنند:
kill -9 2551 2514 1963 1856 1771
خاتمه مراحل با استفاده از دستور killall:
دستور killall تمام برنامه هایی را که با یک نام مشخص مطابقت دارند خاتمه می دهد.
با استفاده از همان سناریو مانند گذشته ، می توانید فرایند Firefox را با تایپ کردن دستور زیر متوقف کنید:
killall -9 firefox
killall گزینه های مختلفی مانند ارسال سیگنال به فرآیندهای متعلق به یک کاربر معین ، تطبیق نام در برابر عبارات منظم و زمان ایجاد را می پذیرد. شما می توانید با وارد کردن killall (بدون هیچ استدلالی) در ترمینال خود لیستی از همه گزینه ها دریافت کنید.
به عنوان مثال ، برای خاتمه تمام مراحل در حال اجرا به عنوان کاربر “sara” ، دستور زیر را اجرا می کنید:
sudo killall -u sara
خاتمه مراحل با استفاده از دستور pkill:
pkill فرآیندهای مطابق با الگوی داده شده در خط فرمان را خاتمه می دهد:
pkill -9 firefox
نام فرایند لازم نیست که مطابقت دقیقی داشته باشد.
همچنین با pkill می توانید سیگنالهایی را به فرآیندهای مالکیت کاربر خاص ارسال کنید. برای کشتن فقط فرآیندهای فایرفاکس متعلق به کاربر “sara” ، می نویسید:
pkill -9 -u sara firefox
جمع بندی:
خاتمه دادن به برنامه های غیر پاسخگو با استفاده از دستورات kill ، killall و pkill کار ساده ای است. فقط باید نام فرایند یا PID را بدانید.
اگر هر گونه سؤال یا بازخورد دارید ، می توانید نظر خود را اعلام کنید.
امیدوارم این مقاله براتون مفید بوده باشه.
ما رو تو شتابان هاست دنبال کنید. 🙂
برچسب ها: دستورات لینوکس
ارسال دیدگاه جدید