آیا تا به حال با موقعیتی مواجه شده اید که لازم باشد فرآیندی را که در یک پورت خاص در دستگاه لینوکس شما اجرا می شود متوقف کنید؟
ممکن است نگران این باشید که برنامهای که اجرا میکنید عملکرد نامناسبی دارد یا منابع شبکه یا قدرت CPU محلی شما را مختل میکند. چنین برنامه ای حتی می تواند یک تهدید امنیتی باشد که می خواهید از بین ببرید.
دلیل هر چه باشد، می توانید از دستورات fuser،lsofوnetstatاز ترمینال استفاده کنید (همراه با kill) به شما کمک می کند تا هر فرآیند لینوکس را با استفاده از شماره پورت پیدا کرده و از بین ببرید. این دستورات روی اکثر سیستم عامل های لینوکس از جمله اوبونتو کار می کنند.
نحوه کشتن یک فرآیند لینوکس با استفاده از فرمان فیوزر
یکی از سادهترین راهها برای از بین بردن یک فرآیند با استفاده از شماره پورت، استفاده از فرمان fuserاست. این دستور ترمینال لینوکس میتواند فرآیندهای دسترسی به فایلها یا سوکتها را فهرست کرده یا از بین ببرد. اگر برنامه ای با فعالیت شبکه اجرا می شود (و بنابراین از یک پورت باز استفاده می کند)، احتمالا یکی از این دو کار را انجام می دهد.
قبل از اینکه ادامه دهید، باید مطمئن شوید که با استفاده از ترمینال خط فرمان در رایانه شخصی لینوکس خود راحت هستید.
برای فهرست کردن فرآیندهایی که از شماره پورت با استفاده از fuserاستفاده میکنند، میتوانید از نحو زیر استفاده کنید:
fuser -n پورت پروتکل
در این مثال، پروتکلمی تواند tcpیا udpباشد، در حالی که portشماره پورتی است که می خواهید برای بررسی به عنوان مثال، برای مشاهده اینکه کدام فرآیندها از پورت TCP 80 استفاده می کنند، می توانید:
را اجرا کنیدfuser -n tcp 80
با این کار شناسههای فرآیند (PID) فرآیندهای با استفاده از آن پورت چاپ میشود.
برای از بین بردن این فرآیندها، میتوانید گزینه -kرا به fuserاضافه کنید. این یک سیگنال SIGTERM به هر فرآیند ارسال میکند و از آنها میخواهد که به راحتی خاتمه دهند. به عنوان مثال:
fuser -k -n tcp 80
این کار تمام فرآیندهای با استفاده از پورت TCP 80 را از بین می برد.
اگر برخی از فرآیندها به SIGTERM پاسخ نمیدهند، میتوانید به جای -kاز -KILLاستفاده کنید. این یک سیگنال کشتن (SIGKILL) ارسال می کند، که می تواند به توقف فوری فرآیندهای در حال اجرا که شناسایی کرده اید کمک کند. با این حال، این ممکن است باعث از بین رفتن یا خراب شدن داده ها شود، بنابراین با احتیاط از آن استفاده کنید. مثلا:.
fuser -KILL -n tcp 80
این کار تمام فرآیندهایی را که از پورت TCP 80 استفاده میکنند به شدت از بین میبرد. اگر با مشکلی مواجه شدید، این دستورات را به عنوان کاربر فوق العاده (با استفاده از دستور sudo) یا با استفاده از rootuser به جای آن اجرا کنید.
نحوه کشتن یک فرآیند لینوکس با استفاده از دستور lsof
یک راه دیگر برای از بین بردن یک فرآیند با استفاده از شماره پورت در رایانه شخصی لینوکس، استفاده از دستور lsofاست. این دستور میتواند فایلها و سوکتهای باز روی سیستم شما را فهرست کند.
برای فهرست کردن فرآیندهایی که از یک شماره پورت خاص استفاده میکنند، میتوانید از نحو زیر استفاده کنید:
lsof -i protocol:port
مثل قبل، پروتکلمیتواند tcpیا udpباشد، در حالی که portشماره پورتی است که میخواهید بررسی. به عنوان مثال، برای مشاهده اینکه کدام فرآیندها از پورت TCP 53 استفاده می کنند (معمولاً برای درخواست های DNS استفاده می شود)، می توانید این دستور را اجرا کنید:
lsof -i tcp:53
با این کار برخی از اطلاعات مربوط به هر فرآیند با استفاده از آن پورت، از جمله PID آن، چاپ میشود.
برای از بین بردن این فرآیندها، می توانید از گزینه -tباlsofاستفاده کنید. این فقط PIDهای فرآیندها را بدون هیچ گونه اطلاعات دیگری چاپ می کند. سپس می توانید این خروجی را با هر گزینه سیگنالی به فرمان killلوله کنید. به عنوان مثال:
$(lsof -t -i tcp:53) را بکشید
این سیگنالهای SIGTERM (پیشفرض) را با استفاده از درگاه TCP 53 به همه فرآیندها ارسال میکند.
اگر برخی از فرآیندها مانند قبل به سیگنالهای SIGTERM پاسخ نمیدهند، میتوانید پس از کشتنبهجای چیزی از -9استفاده کنید. این سیگنالهای SIGKILL را مانند قبل ارسال میکند و آنها را مجبور میکند تا فوراً خاتمه دهند، اما ممکن است باعث از بین رفتن یا خراب شدن دادهها نیز شود. به عنوان مثال:
کشتن -9 $(lsof -t -i tcp:53)
این سیگنالهای SIGKILL (پیشفرض) را با استفاده از درگاه TCP 53 به اجبار به همه فرآیندها ارسال میکند.
نحوه کشتن یک فرآیند لینوکس با استفاده از دستور netstat
همچنین میتوانید از دستور netstatبرای ردیابی فرآیندهای در حال اجرا در رایانه لینوکس خود با استفاده از پورتهای شبکه فعال و باز استفاده کنید. netstat به شما امکان می دهد اتصالات شبکه و آمار سیستم خود را مشاهده کنید و به شما امکان می دهد فرآیندهای مشکل ساز را مشخص کنید.
برای فهرست کردن فرآیندها با استفاده از شماره پورت به همراه PID آنها، باید دو گزینه اضافه کنید: -pکه PID ها را نشان می دهد و -lکه نشان می دهد فقط سوکت های گوش دادن.
شما همچنین باید پروتکل را مشخص کنید (tcp، udp، و غیره) و به صورت اختیاری بر اساس وضعیت فیلتر کنید (LISTEN، و غیره). به عنوان مثال، برای مشاهده اینکه کدام فرآیندهای TCP در هر پورت در حال گوش دادن هستند، میتوانید:
را اجرا کنیدnetstat -p tcp -l
این اطلاعات مربوط به هر سوکت TCP در حال گوش دادن به هر پورت، از جمله PID آن، چاپ میکند.
برای فیلتر کردن بر اساس پورت های خاص، باید گزینه دیگری اضافه کنید: -n، که آدرس های عددی را به جای نام نشان می دهد. همچنین باید فرمت آدرس دقیق را مشخص کنید: [protocol][@hostname|hostaddr][:service|port].
به عنوان مثال، برای مشاهده اینکه کدام فرآیندهای TCP در پورت 80 گوش می دهند، می توانید اجرا کنید:
netstat -p tcp -l -n 80
این اطلاعات مربوط به هر سوکت TCP در حال گوش دادن به درگاه 8080، از جمله PID آن را چاپ می کند.
برای از بین بردن این فرآیندها، میتوانید از دستور killبا هر گزینه سیگنالی که میخواهید و PIDهایی که از netstat دریافت کردهاید استفاده کنید. به عنوان مثال:
1234 5678 را بکشید
این سیگنالهای SIGTERM (پیشفرض) را به پردازشهای دارای PID 1234و 5678ارسال میکند.
اگر برخی از فرآیندها مانند قبل به سیگنالهای SIGTERM پاسخ نمیدهند، میتوانید پس از کشتنبهجای چیزی از -9استفاده کنید. این سیگنالهای SIGKILL را مانند قبل ارسال میکند و آنها را مجبور میکند تا فوراً خاتمه دهند، اما ممکن است مانند قبل باعث از بین رفتن یا خراب شدن دادهها شود. به عنوان مثال:
کشتن -9 1234 5678
این سیگنالهای SIGKILL را بهعنوان مثال به اجبار به فرآیندهای دارای PID 1234و 5678ارسال میکند. 1234را با PID صحیح برای فرآیند در حال اجرا خود جایگزین کنید.
برنامه های لینوکس خود را کنترل کنید
به لطف مراحل ذکر شده در بالا، میتوانید به سرعت فرآیند لینوکس در حال اجرا را با استفاده از شماره پورت با استفاده از خط فرمان لینوکس از بین ببرید. به یاد داشته باشید که هنگام از بین بردن فرآیندها، به خصوص با سیگنال های SIGKILL، احتیاط کنید، زیرا ممکن است باعث ایجاد عوارض جانبی ناخواسته شوند—در هر صورت شما نمی خواهید باعث بی ثباتی سیستم شوید.
میخواهید عملکرد سیستم خود را در لینوکس با دقت بیشتری بررسی کنید؟ ممکن است بخواهید در مرحله بعد میزان مصرف حافظه خود را در لینوکس بررسی کنید را انجام دهید. اگر نگران یک خطر امنیتی بالقوه هستید، ممکن است بخواهید رمز عبور خود را در لینوکس تغییر دهید را نیز انجام دهید.
آیا نیاز به تغییر به توزیع لینوکس جدید دارید؟ اگر مبتدی هستید، Linux Mint را در نظر بگیرید یک جایگزین مطمئن و پایدار..
.