Come chiudere o (sbloccare?) Una porta lasciata aperta da un'applicazione canaglia?


19

Sto usando Fedora 13 64 bit. Il mio programma eclipse avvia un server sulla porta 9050 ma chiudo il programma, eclipse non riesce a chiudere correttamente il server. Il riavvio dell'eclissi non ha alcun effetto.

Come posso chiudere o separare forzatamente una porta dalla riga di comando?

So che riavviare o disconnettersi e riaccedere cancellerà le porte, ma questo processo molto più lento per me. Sto cercando di chiudere forzatamente la porta nella riga di comando.

Risposte:


10

L'unico modo per chiudere forzatamente una porta di ascolto è interrompere il processo che sta ascoltando. Usa lsof, netstat, fuser- come root - per scoprire l'ID del processo. Una volta terminato il processo (da solo o ucciso), il kernel pulirà automaticamente tutti i socket che aveva aperto. (Tuttavia, potrebbero esserci casi in cui ai programmi verrà negato l'ascolto sulla stessa porta per alcuni minuti; in questo caso tutto ciò che puoi fare è attendere.)


19
lsof -n -i

Trova il processo che stai cercando e uccidilo.

Dal lsofmanuale :

-n Questa opzione inibisce la conversione dei numeri di rete in nomi host per i file di rete. L'inibizione della conversione può rendere lsof più veloce. È anche utile quando la ricerca del nome host non funziona correttamente.

-i [i] Questa opzione consente di selezionare l'elenco di file per i quali l'indirizzo Internet corrisponde all'indirizzo specificato in i. Se non viene specificato alcun indirizzo, questa opzione seleziona l'elenco di tutti i file di rete Internet e x.25 (HP-UX).

Stessa risposta a questa domanda penso.


7
Getta su | grep ":9050"(o qualunque numero di porta) per filtrare facilmente l'output
isaacparrot

9

È possibile utilizzare il fusercomando con l' -kopzione.

Ad esempio, per chiudere la porta 111, è possibile effettuare le seguenti operazioni: fuser -k 111/tcp (ciò consente anche di evitare la seccatura di trovare l'ID del processo per ucciderlo come fa implicitamente il fusore)

Alcuni processi si riavviano automaticamente una volta chiusi. Per questo, è necessario controllare il file di configurazione di ogni processo per trovare una soluzione appropriata.


-3

Ho avuto lo stesso problema, basta cercare il processo che sta ascoltando quella porta usando il comando cmd su Windows

netstat -a -b

quindi puoi chiuderlo con il task manager


2
Mi dispiace, ho effettuato il downgrade. Citi "su Windows". Il parametro "-b" di netstat, che mostra i nomi degli eseguibili, è specifico di Microsoft Windows. (Le varianti di Unix netstat possono avere funzionalità simili, ma in genere non utilizzano lo stesso parametro.) Tuttavia, la domanda diceva "Fedora", quindi il richiedente di questa domanda era alla ricerca di informazioni su Fedora 13 64 bit, un sistema operativo diverso. La pagina man di netstat per Fedora indica che l'utilizzo -pmostra il PID (che può essere usato per identificare il nome dell'eseguibile).
TOOGAM,

1
Ci sono molti errori in questa risposta. La risposta contiene un errore grammaticale che avrebbe potuto essere evitato. Anche la risposta non è applicabile a Fedora, che è chiaramente menzionata, nella prima frase della domanda. Non è come se la domanda non contenesse queste informazioni quando questa risposta è stata inviata 30 minuti fa, la domanda non è stata modificata dal luglio 2011, che circa 5 anni fa. Quindi sto prendendo questa risposta per quello che è, una risposta "anch'io", che molto raramente è effettivamente utile.
Ramhound,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.