Як закрити або (від’єднати?) Порт, залишений відкритим програмою-шахраєм?


19

Я використовую Fedora 13 64bit. Моя програма затемнення запускає сервер на порт 9050, але я вимикаю програму, затемнення не вдається належним чином відключити сервер. Перезапуск затемнення не впливає.

Як можна примусово закрити або від’єднати порт з командного рядка?

Я знаю, що перезавантаження або вихід із системи, і назад буде очищено порти, але для мене це набагато повільніше. Я шукаю насильницького закриття порту в командному рядку.

Відповіді:


10

Єдиний спосіб насильно закрити порт прослуховування - це вбити процес, який слухається на ньому. Використовуйте lsof, netstat, fuser- як корінь - дізнатися ідентифікатор процесу. Як тільки процес закінчується (сам по собі або вбивається), ядро ​​автоматично очистить усі відкриті ним сокети. (Однак можуть бути випадки, коли програмам буде відмовлено в прослуховуванні на одному і тому ж порту протягом декількох хвилин; у цьому випадку все, що ви можете зробити, це почекати.)


19
lsof -n -i

Знайдіть процес, який ви шукаєте, і вбийте його.

З lsofпосібника :

-n Ця опція перешкоджає перетворенню мережевих номерів у імена хостів для мережевих файлів. Інгібування перетворення може змусити lsof працювати швидше. Він також корисний, коли пошук імен хоста працює неправильно.

-i [i] Цей параметр вибирає перелік файлів, будь-який із Інтернет-адрес яких відповідає вказаній у i. Якщо адреса не вказана, ця опція вибирає список усіх мережевих файлів мережі Інтернет та x.25 (HP-UX).

Відповідь на це питання я думаю.


7
Накиньте | grep ":9050"(або будь-який номер порту), щоб легко відфільтрувати вихід
isaacparrot

9

Ви можете користуватися fuserкомандою за допомогою -kперемикача.

Наприклад, щоб закрити порт 111, ви можете зробити наступне: fuser -k 111/tcp (це також заощадить вам клопоту знайти ідентифікатор процесу, щоб його вбити, як це виконує термоядер)

Зауважте, що деякі процеси перезапускаються автоматично після закриття. Для цього вам потрібно перевірити конфігураційний файл кожного процесу, щоб знайти відповідний спосіб вирішення.


-3

У мене була така ж проблема, просто шукайте процес, який слухає цей порт за допомогою команди cmd у Windows

netstat -a -b

тоді ви можете вимкнути це за допомогою менеджера завдань


2
Вибачте, я подав заяву. Ви згадуєте "на Windows". Параметр "-b" для netstat, який показує імена виконуваних файлів, характерний для Microsoft Windows. (Варіанти нетстату Unix можуть мати подібний функціонал, але зазвичай не використовують той самий параметр.) Однак у запитанні було сказано "Fedora", тому запитувач цього питання шукав інформацію про Fedora 13 64bit, іншу операційну систему. Основна сторінка netstat для Fedora вказує, що використання -pпоказує PID (який може бути використаний для ідентифікації імені виконуваного файлу).
TOOGAM

1
У цій відповіді є кілька помилок. Відповідь містить граматичну помилку, якої можна було уникнути. Відповідь також не стосується Fedora, про що чітко згадується у першому реченні питання. Це не так, що питання не містило цієї інформації, коли ця відповідь була подана 30 хвилин тому, питання не було відредаговане з липня 2011 року, що майже 5 років тому. Тож я приймаю цю відповідь на те, що це таке, відповідь "я теж", що дуже рідко насправді корисно.
Рамхаунд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.