از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه یک فرآیند را در لینوکس بکشیم: فرآیندها را با دستور kill و killall خاتمه دهید
سرفصلهای مطلب
هنگام مدیریت سرور لینوکس، ممکن است با فرآیندهای بی پاسخ یا نادرست مواجه شوید که منابع بیش از حد سیستم را مصرف می کند، کار شما را کند می کند و بر سایر فرآیندهای در حال اجرا تأثیر منفی می گذارد. دانستن اینکه چگونه چنین کسی را بکشید process در لینوکس برای مدیریت کارآمد سیستم ضروری است.
این مقاله شما را از طریق روش های مختلف برای پایان دادن به فرآیندهای بی پاسخ در لینوکس راهنمایی می کند. چه مبتدی باشید و چه یک مدیر مجرب، این روش ها به شما کمک می کند تا به طور موثر فرآیندها را در محیط لینوکس مدیریت کنید.
فرآیند کشتن در لینوکس چیست؟
این کشتن دستور لینوکس یک سیستم در حال اجرا، پاسخگو نبودن یا خرابی را خاتمه می دهد process به صورت کنترل شده و ایمن
روش مکان یابی یک فرآیند در لینوکس
قبل از خاتمه a process، شناسایی صحیح آن بسیار مهم است. خوشبختانه سیستم لینوکس ابزارهای مختلفی را برای این منظور فراهم می کند. این ps و بالا دستورات جزو رایج ترین ابزارها هستند.
این ps دستور یک عکس فوری از تمام فرآیندهای در حال اجرا را نمایش می دهد و به شما امکان می دهد یک مورد خاص را پیدا کنید processشناسه (PID). در اینجا یک قالب اساسی از ps دستور:
ps [options]
در اینجا رایج ترین گزینه ها برای ترکیب با آنها وجود دارد ps دستور:
- -آ – نمایش فرآیندها برای همه کاربران
- -u – نمایش فرآیندهای کاربر فعلی
- -ایکس – شامل فرآیندهای بدون الف terminal.
برای اینکه لیست خود را خاص تر کنید، یک دستور grep اضافه کنید. به عنوان مثال، دستور زیر تمام فرآیندهای جاوا را نمایش می دهد:
ps -aux | grep java
از سوی دیگر، بالا دستور یک نمای پویا از تمام فرآیندهای در حال اجرا لینوکس و استفاده از منابع آنها ارائه می دهد. برای استفاده اولیه به آرگومان ها یا گزینه های اضافی نیاز ندارد.
چه زمانی ps و بالا به اندازه کافی خاص نیستند، پیدوف و pgrep قابلیت های جستجوی هدفمند بیشتری را ارائه دهد.
این پیدوف دستور PID a را پیدا می کند process با نام آن در اینجا فرمت اصلی دستور آمده است:
pidof [options] [processname]
برای مثال، pidof nginx PID فرآیندهای NGINX را پیدا می کند. چند گزینه می تواند شامل شود، مانند:
- -ج – اطمینان حاصل می کند که فقط PID ها از دایرکتوری ریشه فعلی بازگردانده می شوند.
- -o – PID های مشخص شده را از نتایج حذف می کند.
- -s – تنها یک PID، معمولاً قدیمیترین، را در بین فرآیندهای تطبیق برمیگرداند.
این pgrep فرمان مکانیسم جستجوی انعطاف پذیرتری را با نام یا سایر ویژگی ها ارائه می دهد. از فرمت زیر استفاده می کند:
pgrep [options] [pattern]
مثلا، نام کاربری pgrep -u فرآیندهای اجرا شده توسط یک کاربر خاص را مشخص می کند. برای فیلتر کردن خروجی می توانید این گزینه ها را اضافه کنید:
- -n – فقط جدیدترین نمونه را در بین فرآیندهای تطبیق برمی گرداند.
- -o – فقط قدیمی ترین نمونه را در بین فرآیندهای تطبیق برمی گرداند.
- -u – فرآیندهایی را که کاربر مشخص شده مالک آن است مطابقت می دهد.
سیگنال های فرمان را بکش
پس از شناسایی کدام process برای خاتمه، مرحله بعدی ارسال یک سیگنال مناسب با استفاده از کشتن فرمان هر نوع سیگنال هدف متفاوتی را دنبال می کند و بر چگونگی process به پایان می رسد.
برای مشاهده تمام سیگنال های موجود، از دستور زیر استفاده کنید:
kill -l
این لیست تمام لینوکس ها را نشان می دهد process انواع سیگنال از جمله:
- SIGTERM (15) – این راه پیش فرض و ایمن برای از بین بردن دویدن است process در لینوکس این اجازه می دهد تا process برای خاتمه دادن به زیبایی
- SIGKILL (9) – این سیگنال فوراً هرگونه اولیه یا پس زمینه را متوقف می کند process بدون اجازه تمیز کردن
- SIGSTOP (19) – یک جریان را متوقف می کند process بدون خاتمه دادن به آن
- سیغوپ (1) – این سیگنال گزارش می دهد که کاربر است terminal قطع می شود، اغلب منجر به processخاتمه دادن
- علامت (2) – این سیگنال یک را قطع می کند process، معمولاً از میانبر صفحه کلید Ctrl+C ارسال می شود.
هنگام استفاده از سیگنال های کشتن، می توانید نام سیگنال یا مقدار عددی آن را مشخص کنید. بسیار مهم است که بر اساس سیگنال کشتن مناسب انتخاب کنید روی سناریو و تاثیری که می خواهید روی را process.
به عنوان مثال، SIGTERM سیگنال برای ایمن ترجیح داده می شود process کنترل در لینوکس، به فرآیندها اجازه می دهد وضعیت خود را ذخیره کرده و به طور تمیز خارج شوند. SIGKILLاگرچه عملی است، اما باید به قدری از آن استفاده کرد زیرا ممکن است منجر به از دست دادن داده یا فساد شود.
روش کشتن یک فرآیند در لینوکس
پس از درک سیگنالها، بیایید روشهای کشتن a را بررسی کنیم process در حال اجرا در لینوکس اگر از یک سرور خصوصی مجازی (VPS) استفاده می کنید، با یک کلاینت SSH، مانند PuTTY، به سرور دسترسی پیدا کنید.
هاستینگer مشتریان VPS می توانند از مرورگر داخلی ما استفاده کنند terminal برای کارآمد process خاتمه دادن. این ابزار که برای همه برنامه های میزبانی VPS موجود است، یک راه راحت برای مدیریت سرور شما به طور مستقیم از مرورگر فراهم می کند.
چگونه یک فرآیند را با استفاده از آن بکشیم هاستینگer VPS
در اینجا روش کشتن یک process از طریق hPanel:
- وارد hPanel شوید و به قسمت مورد نظر بروید VPS بخش.
- سروری را که می خواهید مدیریت کنید انتخاب کنید و به آن دسترسی داشته باشید دسترسی SSH برگه نام کاربری و رمز عبور SSH مورد نیاز برای وارد کردن را پیدا خواهید کرد terminal.
- کلیک روی را مرورگر terminal دکمه. این یک صفحه جدید باز می کند terminal پنجره در یک تب جدید
- با تایپ کردن اعتبارنامه SSH که به دست آورده اید وارد سرور شوید.
پس از ورود می توانید از کشتن دستور خاتمه فرآیندها برای مثال:
kill 63772
63772 PID از است process شما می خواهید ترک کنید همچنین می توانید از روش های دیگری که در قسمت های بعدی ارائه شده است استفاده کنید روی هاستینگerمرورگر terminal.
پس از انجام، به شناور دسترسی پیدا کنید پنهان کردن/نمایش نوار کنترل را فشار دهید و کلیک کنید قطع شدن برای توقف اتصال
مطالعه پیشنهادی
بیاموزید که چگونه بهترین ارائه دهنده VPS را برای تصمیم گیری آگاهانه انتخاب کنید.
چگونه یک فرآیند را با استفاده از دستور kill با PID بکشیم
کشتن یک مجرد process در لینوکس زمانی ساده است که PID آن را بدانید. را اجرا کنید کشتن [PID] دستور به عنوان مثال:
kill 12345
این یک را ارسال می کند SIGTERM به process با PID 12345، تلاش برای خاتمه دادن به آن. کشتن پس زمینه مفید است process در لینوکس
اگر process با پیش فرض خاتمه نمی یابد SIGTERM، ممکن است نیاز به کشتن داشته باشید process به زور این کار با اضافه کردن -9 گزینه ای که a را ارسال می کند SIGKILL علامت. برای مثال:
kill -9 12345
چگونه چندین فرآیند را از بین ببریم
شما می توانید چندین فرآیند را به طور همزمان در لینوکس با استفاده از یکسان بکشید کشتن فرمان چندین PID را به دستور ارسال کنید، به عنوان مثال:
kill 12345 67890 13579
این به طور همزمان یک سیگنال خاتمه به process شناسنامه ها 12345، 67890، و 13579.
در سناریوهایی که نیاز به کشتن فرآیندهایی با ویژگیهای مشابه دارید، میتوان از wildcard با دستوراتی مانند استفاده کرد pgrep. مثلا:
kill $(pgrep pattern)
این دستور تمام فرآیندهایی که با الگوی داده شده مطابقت دارند را از بین می برد.
چگونه یک فرآیند را با استفاده از دستور pkill بکشیم
این pkill دستور در لینوکس یک رویکرد انعطافپذیرتر برای کشتن فرآیندها با نام یا سایر ویژگیها ارائه میدهد. زمانی که شما یک PID خاص را نمی دانید سودمند است.
به زور کشتن a process با نام در لینوکس اجرا کنید pkill [process name]. مثلا:
pkill apache
این دستور تمام فرآیندهای حاوی نام را خاتمه می دهد آپاچی.
علاوه بر این، می توانید از گزینه های زیر استفاده کنید pkill:
- -u [username] – فرآیندهای متعلق به یک کاربر خاص را از بین می برد.
- -t [terminal] – فرآیندهای متصل به یک خاص را از بین می برد terminal.
- -ل – جزئیات را ارائه می دهد process لیست همراه با PID
لطفا در هنگام استفاده احتیاط کنید pkill، زیرا می تواند چندین فرآیند را تحت تأثیر قرار دهد. به عنوان مثال، اگر فرآیندهایی با نام دارید آپاچی و آپاچی کمک کننده، دویدن آپاچی را بکش هر دو را خاتمه خواهد داد. همیشه مطمئن شوید که دقیقاً هدفتان است process نام برای جلوگیری از اختلالات ناخواسته.
چگونه یک فرآیند را با استفاده از دستور killall بکشیم
این همه را بکش دستور مشابه است pkill اما یک روش متمایز در لینوکس دارد process خاتمه دادن.
در حالی که pkill برای کشتن فرآیندهای مبتنی بر موثر است روی بازی جزئی از process نام، همه را بکش دستور به نام تطابق دقیق آن نیاز دارد process. این باعث می شود همه را بکش خاص تر و احتمال خاتمه دادن به فرآیندهای ناخواسته کمتر است.
برای استفاده از این دستور تایپ کنید همه را بکش [process name]. برای مثال:
killall apache
تمام فرآیندهای نامگذاری شده را خاتمه می دهد آپاچی. از بین بردن همزمان فرآیندهای پس زمینه به طور خاص مفید است.
این همه را بکش فرمان را می توان با گزینه های مهر زمانی سفارشی کرد، از جمله:
- -o [time] – فقط فرآیندهای قدیمی تر از زمان مشخص شده را از بین می برد.
- -y [time] – فقط فرآیندهای جدیدتر از زمان مشخص شده را از بین می برد.
این [time] مشخصات در این گزینه ها معمولا در قالب ارائه می شود س برای ثانیه، متر برای دقیقه، ساعت برای ساعت ها، د روزها، w برای هفته ها، م برای ماه ها، و y برای سالها.
به عنوان مثال، این دستور تمام فرآیندهای در حال اجرا نامگذاری شده را خاتمه می دهد کروم که برای مدت طولانی تری در حال اجرا بوده اند 30 دقایق:
killall -o 30m chrome
نتیجه
در این راهنما، ما روشهای مختلف برای کشتن a را بررسی کردهایم process در لینوکس با استفاده از اسکریپت پوسته. ما سیگنال های مختلف و pkill، همه را بکش، و کشتن دستورات این تکنیکها برای تسهیل خاموشی دلپذیر در لینوکس و جلوگیری از بیثباتی سیستم بسیار مهم هستند.
تسلط بر این مهارت ها برای مدیریت مطمئن و دقیق فرآیندهای پس زمینه حیاتی است، که کلید مدیریت کارآمد لینوکس است.
مهارت های لینوکس خود را گسترش دهید
تسلط بر فایل Sudo و Sudoers در لینوکس
راهنمای جامع مدیریت خدمات در لینوکس
روش استفاده از دستور خاموش کردن لینوکس
سوالات متداول روش کشتن یک فرآیند در لینوکس
این بخش به متداول ترین سؤالات در مورد چگونگی کشتن اجباری الف پاسخ می دهد process در لینوکس
چه فرآیندهایی را می توانید در لینوکس از بین ببرید؟
در لینوکس، میتوانید اکثر فرآیندها، از جمله فرآیندهای والد و فرزند را خاتمه دهید. با این حال، احتیاط توصیه می شود، به ویژه در مورد فرآیندهای سیستم و آنهایی که توسط کاربر ریشه آغاز شده اند. بستن والد انتقادی process ممکن است منجر به شکست سیستم یا رفتار غیرمنتظره شود.
تفاوت بین دستورات kill و killall چیست؟
لینوکس کشتن دستور برای پایان دادن اجباری a استفاده می شود process در لینوکس با استفاده از PID خود، در حالی که همه را بکش دستور تمام فرآیندها را با یک نام خاص خاتمه می دهد. بالا دستورات بخش جدایی ناپذیر مدیریت سیستم لینوکس هستند.
چگونه شناسه فرآیند (PID) فرآیندی را که میخواهم بکشم پیدا کنم؟
برای پیدا کردن PID در سیستم عامل لینوکس، از ps فرمان، که نشان می دهد process جدول. متناوبا، از سوی دیگر، pgrep [process name] می تواند PID های فرآیندها را با نام پیدا کند. این امر بسیار مهم است، به ویژه برای شناسایی فرآیندهای متعلق به کاربر دیگری که باید با موفقیت از بین برود.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-29 12:28:08