بلاگ/استفاده از Kill Command در لینوکس
به‌روز شده

استفاده از Kill Command در لینوکس

اکثر فرآیندها استراتژی خاص خود را برای بسته شدن دارند. گاهی فرآیندها می‌توانند از کار بیافتند که در این صورت خودشان نمی‌توانند بسته شوند. بنابراین اگر یک فرآیند در حال اجرا بدون پاسخ بماند، باید دستوری باشد تا بشود آن را متوقف کرد. فرآیند، اینستنسی (نمونه‌ای) از یک برنامه کامپیوتری است که بوسیله یک...

1402/06/084802 بازدید
استفاده از Kill Command در لینوکس
اکثر فرآیندها استراتژی خاص خود را برای بسته شدن دارند. گاهی فرآیندها می‌توانند از کار بیافتند که در این صورت خودشان نمی‌توانند بسته شوند. بنابراین اگر یک فرآیند در حال اجرا بدون پاسخ بماند، باید دستوری باشد تا بشود آن را متوقف کرد. فرآیند، اینستنسی (نمونه‌ای) از یک برنامه کامپیوتری است که بوسیله یک یا چند رشته انجام می‌شود و دربردارنده کد برنامه و فعالیتش است. ممکن است چند فرآیند با یک برنامه مرتبط باشند، مثلا باز کردن چندین نمونه از یک برنامه اغلب به اجرای بیش از یک فرآیند منجر خواهد شد. 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 در وبسایت با انواع دستورات کاربردی لینوکس آشنا شوید. امیدواریم این بحث برای‌تان مفید بوده باشد.