
به اشتراک بگذارید
آموزش مدیریت پردازشهای لینوکس
Kill Process در لینوکس
در سیستمعامل لینوکس گاهی ممکن است یک برنامه، سرویس یا اسکریپت بهدرستی متوقف نشود و باعث مصرف بیش از حد منابع سرور شود. برای مثال ممکن است یک Process باعث افزایش مصرف CPU، اشغال حافظه RAM یا اختلال در اجرای سرویسهای دیگر شود.
در چنین شرایطی مدیر سرور باید بتواند پردازش موردنظر را پیدا کرده و در صورت نیاز آن را متوقف کند.
در این آموزش یاد میگیریم چگونه در لینوکس Process ها را مشاهده کنیم، PID هر پردازش را پیدا کنیم و با استفاده از دستور kill در لینوکس یک پردازش را متوقف کنیم.
Process در لینوکس چیست؟
زمانی که یک برنامه اجرا میشود، سیستمعامل یک پردازش ایجاد کرده و منابعی مانند:
- CPU
- حافظه RAM
- فایلها
- ارتباطات شبکه
برای مثال موارد زیر همگی Process هستند:
- سرویس Nginx
- دیتابیس MySQL
- Apache
- اسکریپتهای PHP
- Cron Job ها
- برنامههای Python

Kill Process در لینوکس چیست؟
kill همیشه به معنی بستن اجباری برنامه نیست. این دستور میتواند Signalهای مختلفی برای یک Process ارسال کند و رفتار نهایی به Signal انتخابشده بستگی دارد.در حالت عادی، زمانی که دستور
kill PID اجرا میشود، سیگنال SIGTERM برای پردازش ارسال میشود. این سیگنال از برنامه میخواهد اجرای خود را بهصورت کنترلشده متوقف کند. در نتیجه برنامه فرصت دارد فایلهای باز را ببندد، اطلاعات لازم را ذخیره کند و منابعی که در اختیار دارد آزاد کند.اگر یک Process پاسخگو نباشد و با روش عادی متوقف نشود، میتوان از Signalهای قویتری مانند
SIGKILL استفاده کرد. با این حال، توقف اجباری باید آخرین گزینه باشد.PID چیست؟
PID یک عدد منحصربهفرد است که سیستمعامل برای شناسایی هر پردازش استفاده میکند.
برای مثال:
nginx 1542 mysql 2318 php 45211542 شناسه Process مربوط به Nginx است.
2318 شناسه Process مربوط به MySQL است.
برای متوقف کردن یک Process معمولاً به PID آن نیاز داریم.
kill بهتر است مطمئن شوید PID موردنظر هنوز متعلق به همان برنامهای است که قصد متوقف کردن آن را دارید.علاوه بر PID، هر پردازش میتواند دارای یک Parent Process ID یا PPID نیز باشد. PPID مشخص میکند چه پردازشی Process فعلی را ایجاد کرده است. این موضوع هنگام عیبیابی سرویسها و اسکریپتهایی که Processهای فرزند زیادی ایجاد میکنند، اهمیت دارد.
چگونه Process های در حال اجرا را مشاهده کنیم؟
استفاده از دستور ps:
ps aux
خروجی نمونه:
USER PID %CPU %MEM COMMAND root 1542 0.1 1.2 nginx mysql 2318 2.5 5.4 mysqld
در ستون PID میتوانید شناسه هر پردازش را مشاهده کنید.
USER: کاربری که Process را اجرا کرده است.PID: شناسه اختصاصی پردازش.%CPU: میزان مصرف CPU توسط Process.%MEM: درصد حافظه RAM مصرفشده.COMMAND: برنامه یا دستوری که Process را ایجاد کرده است.
%CPU، %MEM و PID بیشترین اهمیت را دارند. برای مثال اگر مصرف CPU سرور بهطور ناگهانی افزایش پیدا کند، میتوان از خروجی ps برای پیدا کردن Processهای پرمصرف و سپس بررسی PID آنها استفاده کرد.جزئیات کامل گزینهها و نحوه نمایش Processها در مستندات دستور ps در دسترس است.
پیدا کردن Process خاص با grep:
برای مثال پیدا کردن Nginx:
ps aux | grep nginxroot 1542 nginx1542مشاهده Process ها با دستور top:
topبا استفاده از top میتوانید اطلاعات لحظهای موارد زیر را مشاهده کنید:
- میزان مصرف CPU
- مصرف RAM
- تعداد Process ها
- PID هر برنامه
q
استفاده از دستور htop برای مدیریت بهتر Process ها
نصب در Ubuntu:
apt install htophtop- در htop میتوانید:
- Process ها را جستجو کنید.
- مصرف منابع را ببینید.
- پردازش را مستقیم متوقف کنید.
تفاوت ps، top و htop چیست؟
هر سه ابزار برای مشاهده Processهای لینوکس استفاده میشوند، اما کاربرد آنها یکسان نیست. دستور ps معمولاً یک Snapshot از وضعیت Processها در همان لحظه ارائه میدهد و برای جستجو، فیلتر کردن و استفاده در اسکریپتها بسیار مناسب است.
در مقابل، top اطلاعات را بهصورت لحظهای بهروزرسانی میکند و برای بررسی مصرف CPU و RAM در زمان بروز مشکل کاربرد بیشتری دارد.
htop نیز عملکردی مشابه top دارد، اما رابط تعاملی و خواناتری ارائه میدهد و امکان جستجو، مرتبسازی و مدیریت Processها را سادهتر میکند.
چگونه یک Process را در لینوکس متوقف کنیم؟
kill PID
kill 1542تفاوت kill و kill -9 در لینوکس
SIGTERMاما اگر Process پاسخگو نباشد، میتوان از:
kill -9 PIDSIGKILLتوجه کنید که استفاده مداوم از kill -9 پیشنهاد نمیشود، زیرا برنامه فرصت ذخیره اطلاعات یا انجام عملیات پایانی را ندارد.
pkill یا killall باید دقت بیشتری داشته باشید، زیرا برخلاف kill که معمولاً یک PID مشخص را هدف قرار میدهد، این دستورات ممکن است چند Process را همزمان متوقف کنند.برای مثال اگر چند Process با نام یکسان در حال اجرا باشند، اجرای
pkill nginx میتواند روی همه Processهای منطبق اثر بگذارد. به همین دلیل در سرورهای Production بهتر است قبل از اجرای این دستورات، Processهای موردنظر را بررسی کنید.برای مشاهده گزینهها و نحوه عملکرد این دستور میتوانید به مستندات دستور kill در لینوکس مراجعه کنید.
پیدا کردن PID با دستور pidof
مثلاً:
pidof nginx1542kill 1542متوقف کردن Process با نام برنامه
برای مثال:
pkill nginxهمچنین:
killall nginxچگونه Process های پرمصرف را پیدا کنیم؟
استفاده از:
tophtop
برای بررسی مصرف CPU:
ps aux --sort=-%cpu
ps aux --sort=-%mem
نمونه عملی پیدا کردن و متوقف کردن یک Process پرمصرف
top4210 بیشترین CPU را مصرف میکند. قبل از متوقف کردن آن بهتر است اطلاعات بیشتری درباره Process بررسی کنیم:ps -p 4210 -o pid,user,%cpu,%mem,cmdبا این دستور میتوانیم مطمئن شویم PID مربوط به چه برنامهای است و چه کاربری آن را اجرا کرده است.
اگر بعد از بررسی مشخص شد Process مشکلدار است، ابتدا توقف عادی را امتحان میکنیم:
kill 4210ps -p 4210kill -9 4210این روش بهتر از آن است که بدون بررسی مستقیماً
kill -9 اجرا شود، زیرا ابتدا هویت Process و وضعیت آن بررسی میشود.مدیریت Process ها در سرور مجازی لینوکس
مدیریت صحیح Process ها کمک میکند:
- مصرف منابع کنترل شود.
- سرویسهای مشکلدار سریعتر رفع شوند.
- پایداری سرور افزایش پیدا کند.
برای آشنایی بیشتر با مدیریت سرور لینوکس، آموزشهای دیگر وبداده درباره SSH، مدیریت VPS و دستورات لینوکس را مطالعه کنید.
جمعبندی
با یادگیری Kill Process در لینوکس میتوانید کنترل بیشتری روی سرویسها و منابع سرور داشته باشید.
مهمترین دستورات:
مشاهده Process ها:
ps auxtoppidof programkill PIDkill -9 PIDسوالات متداول از Kill Process در لینوکس:
تفاوت kill و kill -9 چیست؟
kill بهصورت پیشفرض سیگنال SIGTERM میفرستد و به برنامه فرصت میدهد بهصورت صحیح بسته شود. kill -9 از SIGKILL استفاده میکند و پردازش را فوراً متوقف میکند؛ بنابراین بهتر است فقط زمانی استفاده شود که پردازش به روش عادی متوقف نمیشود.
اگر دستور kill پردازش را متوقف نکرد چه کار کنیم؟
ابتدا مطمئن شوید PID صحیح است و دسترسی لازم را دارید. در صورت پاسخگو نبودن Process میتوانید در مرحله بعد از kill -9 PID استفاده کنید.
تفاوت kill، pkill و killall چیست؟
kill معمولاً بر اساس PID عمل میکند، در حالی که pkill و killall امکان متوقف کردن پردازشها بر اساس نام را فراهم میکنند.
چگونه Process پرمصرف را در لینوکس پیدا کنیم؟
میتوانید از top، htop یا دستورهای ps aux --sort=-%cpu و ps aux --sort=-%mem برای شناسایی پردازشهای پرمصرف استفاده کنید.
آیا استفاده از kill -9 خطرناک است؟
ذاتاً خطرناک نیست، اما چون برنامه فرصت ذخیره اطلاعات یا انجام Cleanup را ندارد، ممکن است در بعضی برنامهها باعث از دست رفتن داده یا باقی ماندن وضعیت ناسالم شود.
برای اجرای kill به دسترسی root نیاز داریم؟
کاربر معمولاً میتواند Processهای متعلق به خودش را متوقف کند. برای متوقف کردن پردازش متعلق به کاربران دیگر یا بعضی سرویسهای سیستمی، معمولاً به sudo یا دسترسی root نیاز است.



