های بلاگ
  • های دیتا
  • وبلاگ
  • دسته بندی ها
    • جذاب ترین ها
      جذاب ترین مطالب
    • های تیوب
      انواع ویدئوهای آموزشی
    • های ‌کست
      انواع پادکست های جذاب
    • های کادمی
      آموزش ها و ترفندهای وب
  • درباره ما
  • ارتباط با ما
FA
EN
RU
زبان سایت:
FA
EN
RU
آمار نوشته
ندارد
دسته بندی
Ali Ghanimati
نویسنده
21 مهر 1404
تاریخ انتشار
108
بازدید
FA
EN
RU
زبان ها
آموزش متوقف کردن پردازش یا Kill Process در لینوکس

آموزش متوقف کردن پردازش یا Kill Process در لینوکس

سر تیتر های مقاله

آمار نوشته
  1. چگونه Process ID یا Process Name را پیدا کنیم
  2. چطور یک process را kill کنیم

زمانی که یک پردازش در سیستم عامل لینوکس(Linux)، پاسخی را بازگردانی نمی‌کند و یا منابع سخت افزاری زیادی از سیستم ما را مصرف میکند، شاید متوقف کردن یا به اصطلاح Kill کردن آن تنها گزینه موجود باشد. بسیاری از پردازش ها، راهکار مختص به خود را برای متوقف شدن دارند. متأسفانه، ممکن است پردازش ها دچار نقص شده و یا وارد کردن یک دستور به صورت دستی نیاز باشد تا بتوان آن ها را متوقف کرد.

در این آموزش با طریقه متوقف کردن پردازش یا Kill Process در لینوکس(Linux)، آشنا میشویم.

چگونه Process ID یا Process Name را پیدا کنیم

قبل از متوقف کردن یک پردازش نیاز است تا موقعیت آن و یا محل قرارگیری آن را پیدا کنید. این کار از طریق پیدا کردن نام پردازش در حال انجام (Process Name) و یا ID مربوط آن (Process ID یا PID) امکان پذیر می‌باشد.

چند راه مختلف برای پیدا کردن یک پردازش یا process در لینوکس وجود دارد:

  • از طریق دستور ps
  • از طریق دستورات pgrep یا pidof
  • و یا از طریق دستورات top در لینوکس

پیدا کردن process با استفاده از دستور ps

دستور ps، یک لیست کامل از پردازش های در حال اجرا، بر اساس گزینه ای که مقابل آن وارد می‌کنیم، به ما نمایش میدهد.

ps [option]

هر گزینه یک ویژگی خاص دارد و در صورت ورود، یک کار خاص انجام میدهد. گزینه هایی که میتوانیم در مقابل دستور ps وارد کنیم به این صورت است:

  • گزینه -a. نمایش تمام process های مربوط به تمام کاربران سیستم
  • گزینه -u. ارائه اطلاعات مفصل، از هر process در سیستم
  • گزینه -x. ارائه process های که توسط daemon ها (برنامه هایی که از زمان بوت شدن سیستم اجرا شده و کاربر کنترلی به آن ها ندارد) کنترل میشوند و نه کاربران سیستم

برای مثال، دستور ps -aux یک لیست کامل از تمامی process ها، با جزئیات آن ارسال میکند:

پیدا کردن Process ID یا PID با استفاده از دستورات pgrep یا pidof

دستور pgrep در لینوکس، یک راه پیچیده تر برای پیدا کردن یک process می‌باشد. دستور pgrep، پردازش ها را بر اساس یک معیار انتخاب خاص به نام الگو یا pattern، بازگردانی میکند. الگو (pattern)، درواقع یک یک عبارت منظم است. برای مثال در الگوی a*، علامت * به معنای هرچیزی به جای هر تعداد کاراکتر است.


pgrep [options] [pattern]

گزینه های مربوط به دستور pgrep، به این صورت است:

  • گزینه -l. ارائه لیستی از نام process ها و PID آنها
  • گزینه -n. نمایش جدیدترین process
  • گزینه -o. نمایش قدیمی‎‌ترین process
  • گزینه -u. نمایش process های مربوط به یک کاربر خاص در سیستم
  • گزینه -x. نمایش process هایی که با الگوی داده شده، کاملا یکسان باشند

برای مثال، دستور pgrep -l -u root نام process ها و PID های مربوط به کاربر root در سیستم را نمایش میدهد:

دستور pidof، برای پیدا کردن Process ID یا PID با دادن نام process به آن می‌باشد.


pidof [options] [program]

برخی از گزینه های مربوط به دستور pidof، به این صورت است:

  • گزینه -o. متوقف سازی با استفاده از PID
  • گزینه -s. نمایش تنها یک PID
  • گزینه -x. نمایش PID اسکریپت هایی که توسط مترجم های سیستم، در حال اجرا میباشند

برای مثال، جهت دریافت PID مربوط به پردازش sshd، دستور pidof sshd را اجرا می‌کنیم:

پیدا کردن process های در حال اجرا با استفاده از دستور top

دستور top، ساده ترین راه برای دریافت اطلاعات کامل از process های در حال اجرا می‌باشد. برای مشاهده یک لیست کامل از process های در حال اجرا، از این دستور استفاده می‌کنیم:


top

با اجرای این دستور، یک حالت تعاملی در از دستور top ایجاد میشود که به ما اطلاعات مختلفی مانند؛ PID ها، کاربرهای مربوط به آن process، مقدار منابع سخت افزاری (CPU و memory) که توسط هر process مصرف میشود و همچنین زمان اجرای آن را نمایش میدهد.

برای خروج از محیط مربوط به دستور top، از کلید q استفاده می‌کنیم.

چطور یک process را kill کنیم

در حقیقت kill کردن process یا پردازش، به معنای اتمام دادن به آن در سیستم می‌باشد. برای این‌کار، ابتدا از دسترسی های لازم برخوردار شوید و مطمئن شوید که، دسترسی کاربری شما، قادر به انجام این کار می‌باشد.
یک کاربر root میتواند تمامی process ها را kill کند. پس از عبارت sudo، قبل از اجرای هر دستور برای اتمام دادن به یک پردازش استفاده کنید تا به عنوان کاربر root آن دستور را اجرا کنید و یا اینکه قبل از اجرای دستورات، به عنوان کاربر root وارد محیط shell شوید.

اتمام دادن یا kill کردن یک process، یک پیام به process مورد نظر برای دستور به پایان آن ارسال میکند. این پیام ها را، پیام های termination مینامیم. چندین نوع پیام termination مختلف وجود دارد:

  • پیام SIGKILL. یک راه عالی برای دستور اتمام به یک process. در این حالت یک process، به صورت ناگهانی و همراه با یک پیام خطا، اتمام پیدا میکند. SIGKILL راهی است که همیشه باید کار کند. در صورتی که SIGKILL کار نکند، به معنای این است که سیستم عامل دچار خطا و مشکل شده است.
  • پیام SIGTERM. برخلاف SIGKILL، این پیام ممکن است مسدود یا به نوعی دیگر مدیریت شود. این پیام برای اتمام دادن به یک process در سیستم کاربرد دارد و یک راه نسبتا آرام تر برای این کار است.

برای بیشتر کاربرد ها، SIGKILL یک روش کاربردی تر و سریعتر برای اتمام یک process می‌باشد.

دستور killall

دستور killall، با دریافت نام process به آن اتمام میدهد و یا به اصطلاح آن را kill میکند. به صورت پیش‌فرض، این دستور یک پیام SIGTERM را برای انجام این کار ارسال میکند. همچنین killall، قابلیت اتمام چندین process به صورت همزمان با یک ورود یک دستور را دارد.


killall [process]

دستور killall شامل چندین گزینه مختلف است:

  • گزینه -e. علاوه بر پردازش نام برده شده، پردازش های همنام آن را نیز متوقف میکند
  • گزینه -I. نام process ها را بدون بررسی کوچک یا بزرگ بودن حروف آن (یا به اصطلاح case sensitive)، در نظر گرفته و آن را متوقف میسازد
  • گزینه -i. قبل از اتمام دادن به یک process، درمورد اطمینان داشتن از تصمیم برای اتمام به آن از کاربر سوال میپرسد. پس از تایید کاربر، دستور اجرا میشود
  • گزینه -u. فقط process های مربوط به یک کاربر را متوقف میکند
  • گزینه -v. پس از اتمام روند توقف process، یک پیام مبنی بر موفقیت آمیز بودن عملیات بازگردانی میکند

علاوه بر قابلیت اتمام process ها با استفاده از نام پردازش یا process، دستور killall قابلیت اتمام process ها بر اساس سن آنها را نیز دارد.

  • گزینه -o. تمامی process هایی که عمر شروع آن ها، بیشتر از مقدار زمان اشاره شده به آن است را به اتمام میرساند
  • گزینه -y. تمامی process هایی که عمر شروع آن ها، کمتر از مقدار زمان اشاره شده به آن است را به اتمام میرساند

برای مثال دستور killall -o 15m، تمامی پردازش ها process هایی که عمر آن بیشتر از 15 دقیقه است را به اتمام میرساند و دستور killall -y 15m، تمامی process هایی که عمر آن ها کمتر از 15 دقیقه است را به اتمام میرساند.

دستور pkill

دستور pkill، مشابه با دستور pgrep که با استفاده از نام process، آن را اتمام میدهد می‌باشد. به صورت پیش‌فرض، دستور pkill، یک پیام SIGTERM ارسال میکند:
pkill [options] [pattern]

گزینه های مربوط به دستور pkill، به این صورت می‌باشد:

  • گزینه -n. فقط جدیدترین process را اتمام میدهد
  • گزینه -o. فقط قدیمی ترین process را اتمام میدهد
  • گزینه -u، فقط process ای که مربوط به آن کاربر باشد را اتمام میدهد
  • گزینه -x، فقط process ای را که دارای الگو یکسان باشد را اتمام میدهد
  • گزینه -signal، به جای پیام پیش‌فرض SIGTERM، یک پیام خاص را به آن process ارسال میکند

به عنوان مثال، این دستور جدیدترین process ایجاد شده توسط کاربر root را اتمام میدهد:


pkill -n -u root

دستور xkill

دستور xkill، یک دستور خاص برای قطع ارتباط میان یک سرور و کاربران آن می‌باشد.

xkill [resource]

در صورتی که process های ناخواسته در سرور ایجاد شود، میتوانیم با استفاده از xkill آنها را متوقف کنیم.
همچنین اگر دستور xkill را بدون هیچ ورودی اجرا کنیم، یک رابط جدید برای کاربر باز میشود تا کاربر از آن طریق، اقدام به اتمام دادن process های مورد نظر خود کند.

دستور top

همانطور که توضیح دادیم، دستور top یک رابط از اطلاعات مربوط به process های در حال اجرا برای کاربر باز میکند.

top

همچنین این دستور قابلیت اتمام یک process را نیز دارد. بعد از اجرای دستور top، با فشار دادن کلید k و وارد کردن PID مربوط به یک process، میتوانیم آن را اتمام دهیم.

به اشتراک گذاری نوشته
hidata.org/blog/how-to-kill-a-process-in-linux/
کپی لینک
در شبکه اجتماعی

افزودن دیدگاه

درحال پاسخ هستید به
captcha
هاست اشتراکی
  • هاست سی پنل پربازدید
  • هاست سی پنل حرفه ای
  • هاست دانلود
سرور اختصاصی
  • سرور اختصاصی ایران
  • سرور اختصاصی اروپا
  • سرور اختصاصی روسیه
درباره های دیتا
های دیتا
HiData
های‌دیتا از فروردین ۱۳۹۳ با تکیه بر زیرساخت قدرتمند و گرانقیمت در برترین دیتاسنترهای ایران و جهان، میزبان هزاران کسب‌وکار آنلاین است. ما با بهره‌گیری از سرورهای نسل جدید مجهز به پردازنده‌های پرتوان، شبکه‌ای پرظرفیت و سیاست سخت‌گیرانه در امنیت داده‌ها، نیازهای میزبانی شما را با بالاترین استاندارد پاسخ می‌دهیم. پشتیبانی ۲۴‌ساعته ما از طریق تیکت و تماس تلفنی همیشه کنار شماست. سرعت، پایداری و آرامش خاطر نه شعار، بلکه هویت های‌دیتاست.
سرور مجازی
  • سرور مجازی SATA ایران
  • سرور مجازی NVMe ایران
  • سرور مجازی NVMe آلمان
  • سرور مجازی NVMe روسیه
  • سرور مجازی SSD ترکیه
  • سرور مجازی ابری
  • سرور مجازی حجیم
دیگر خدمات
  • ثبت دامنه
  • کانفیگ سرور
  • لایسنس های سیستمی
  • گواهینامه SSL
شماره تماس 1: 90009019
های تیوب های کادمی های کست های بلاگ
آدرس
دفتر مرکزی: ابهر، خیابان امام خمینی، مجتمع تجاری طلا، طبقه 2، واحد 8
شماره های تماس
90009019
پـشـتـیـبـانـــی ۲۴ سـاعـتــــــه
ایمیل پشتیبانی: info@hidata.org
© 2025 HiData
All rights reserved for hidata.org
فروشگاه قطعات سرور های‌دیتا استور
تامین قطعات سرورها در داخل کشور