اکثر فرآیندها استراتژی خاص خود را برای بسته شدن دارند. گاهی فرآیندها میتوانند از کار بیافتند که در این صورت خودشان نمیتوانند بسته شوند. بنابراین اگر یک فرآیند در حال اجرا بدون پاسخ بماند، باید دستوری باشد تا بشود آن را متوقف کرد. فرآیند، اینستنسی (نمونهای) از یک برنامه کامپیوتری است که بوسیله یک یا چند رشته انجام میشود و دربردارنده کد برنامه و فعالیتش است. ممکن است چند فرآیند با یک برنامه مرتبط باشند، مثلا باز کردن چندین نمونه از یک برنامه اغلب به اجرای بیش از یک فرآیند منجر خواهد شد.
Kill دستوری است که در خیلی از سیستمعاملها برای ارسال سیگنال به فرآیندهای در حال اجرا، استفاده میشود. اما در لینوکس kill command معمولا برای قطع کردن فرآیند در حال اجرا بکار گرفته میرود. این دستور به شیوههای مختلفی میتواند انجام شود. در مقاله پیش رو مبانی اولیه دستور kill آموزش داده خواهد شد و شما با این دستور آشنا میشوید و میتوانید آن را بکار گیرید.
قبل از kill یا خاتمه دادن به هر فرآیندی آیدی فرآیند (PID) یا نام آن را بدانیم. برای پیدا کردن نام فرآیند دو دستور داریم که میتوانیم اجرا کنیم. اولین دستور، دستور «ps» و دومی «top» نام دارد. در این مقاله از دستور ps برای پیدا کردن آیدی و نام فرآیند استفاده میشود.
پیدا کردن فرآیند
دستور ps برای لیست کردن همه فرآیندهای در حال اجرا و چک کردن آن ها بکار میرود:
ps aux
a: فرآیندهای همه کاربران را نشان میدهد
u: کاربری که از دارد فرآیند استفاده میکند را نمایش میدهد
x: همه فرآیندها را نشان خواهد داد (فرآیندهایی که در محیط GUI در حال ران شدن است را نمایش میدهد)
لیست آیدی فرآیند خاص
اگر در جستجو، فرآیند خاصی مدنظرتان است میتوانید از یکی از سه روش زیر استفاده کنید:
- روش 1:
ps -aux | grep process-name
میخواهیم فرآیند (vsftpd(FTP server را چک کنیم:
ps -aux | grep vsftpd
همانطور که ملاحظه میکنید، آیدی فرآیند vsftpd در تصویر مشخص است.
- روش 2: استفاده از دستور pidof
pidof vsftpd
خروجی این نمونه 17702 است.
- روش 3: بکارگیری دستور pgrep
pgrep vsftpd
همه فرآیندهای بالا PID فرآیند vsftpd را نشان میدهد.
kill command
دستور kill برای خاتمه دادن یا kill کردن فرآیند در حال اجرا در لینوکس است. دو روش برای این کار وجود دارد:
- روش 1: kill command با استفاده از آیدی فرآیند
حالا ما فرآیند vsftpd را با کمک آیدی فرآیندش متوقف می کنیم:
kill -9 17702
حالا تایید میکنیم که این ایدی kill شده:
pidof vsftpd
میتوانید در این تصویر ببینید که آیدی 17702 دیگر وجود ندارد.
- روش 2: kill command با نام فرآیند
اگر میخواهید همه فرآیندهای یک سرویس را kill کنید، میتوانید از این روش استفاده نمایید:
kill -9 vsftpd
یا
pkill vsftpd
برای اینکه تایید کنید فرآیند پایان یافته:
pidof vsftpd
خواهید دید که هیچکدام از فرآیندهای vsftpd دیگر وجود ندارند.
Kill کردن همه فرآیندهای یک کاربر
برای پیدا کردن همه فرآیندهای در حال اجرای یک کاربر، از این دستور استفاده کنید:
ps -fu user-name
حالا میتوانید PID آن کاربر را بردارید. برای مثال در تصویر بالا ما PID کاربر osgrove را میگیریم. در ادامه با استفاده از دستور زیر میتوانید تمام فرآیندهای این کاربر را kill کنید.
حتما قبل از اینکه از این دستور استفاده کنید مطمئن شوید که با حساب کاربری روت وارد شدهاید، چون اگر با حساب کاربری عادی این کار را انجام دهید ارتباطتان قطع خواهد شد.
kill -HUP process-ids
kill -HUP 46397 46406 46416 46417 46421 46476
حالا اگر دوباره دستور زیر را اجرا کنید، میبینید که نتیجهای نشان داده نمیشود:
ps -fu user-name
شما میتوانید با جستجوی command در وبسایت با انواع دستورات کاربردی لینوکس آشنا شوید.
امیدواریم این بحث برایتان مفید بوده باشد.