mio incidente servizio all'avvio con il classico:Trova PID del processo che utilizzano una porta su Windows
java.rmi.server.ExportException: Listen failed on port: 9999
Come posso trovare il processo per l'uccisione di esso?
mio incidente servizio all'avvio con il classico:Trova PID del processo che utilizzano una porta su Windows
java.rmi.server.ExportException: Listen failed on port: 9999
Come posso trovare il processo per l'uccisione di esso?
basta aprire una shell dei comandi e digitare: (pronunciando la porta è 123456)
netstat -a -n -o | find "123456"
Vedrete tutto il necessario
Le intestazioni sono:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:37 0.0.0.0:0 LISTENING 1111
qui come ottengo solo il pid, dal momento che restituisce interi dettagli –
come ottenere l'unico modulo PID sopra i risultati – Chinya
o, 'nestat -aon | findstr 123456' –
Trova PID di processo che utilizza una porta su Windows(ad es. porto: "9999")
netstat -aon | find "9999"
-a
Visualizza tutte le connessioni e le porte di ascolto.
-o
Visualizza l'ID del processo proprietario associato a ciascuna connessione.
-n
Visualizza indirizzi e numeri di porta in forma numerica.
uscita:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776
poi uccidere il processo con PID taskkill /F /PID 15776
/F
- Specifica di interrompere forzatamente il processo (es).
Nota: Potrebbe essere necessario un permesso supplementare (eseguito da admin) per uccidere alcuni determinati processi
Perché netstat non esce a meno che non gli venga assegnata la n flag? –
Dopo un po 'giocherellare con uno script Sono venuto a questa azione. Copiare e salvare in un file .bat:
FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i
cambiamento 'trovare '3306'' il numero di porta che deve essere libera. Quindi esegui il file come amministratore. Sarà uccidere tutti i processi in esecuzione su questa porta
Se si vuole fare questo a livello di codice è possibile utilizzare alcune delle opzioni dato a voi come segue in uno script PowerShell:
$processPID = $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1]
taskkill /f /pid $processPID
Tuttavia; sii consapevole che più preciso puoi essere, più preciso sarà il risultato del tuo PID. Se si sa su quale host si trova la porta, è possibile restringerlo molto. netstat -aon | findstr "0.0.0.0:9999"
restituirà solo un'applicazione e probabilmente la più corretta. Solo la ricerca sul numero di porta può causare a ritornare processi che accade solo per avere 9999
in esso, come questo:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776
UDP [fe80::81ad:9999:d955:c4ca%2]:1900 *:* 12331
Il candidato più probabile di solito finisce prima, ma se il processo è terminato prima di eseguire il lo script si può terminare con PID 12331 invece e uccidere il processo sbagliato.
Soluzioni alternative più complesse qui: http://stackoverflow.com/questions/48198/how-can-you-find-out-which-process-is-listening-on-a-port-on-windows – Thomas