Alternative più veloci a lsof


8

Voglio estrarre l'identificativo del processo di un determinato processo per chiuderlo. Il processo è un server Web locale che utilizza una determinata porta (localhost: 3000) e attualmente lo sto facendo in questo modo per estrarre la riga pertinente:

lsof|grep localhost:3000

ma il lsofcomando è troppo lento. Esiste un modo più veloce per estrarre l'id del processo?


lsof -ielenca solo le connessioni di rete.
Hanan N.

@HananN. L'ho provato, ma è ancora molto lento. L'uso di netstat come suggerito nelle risposte è molto più veloce.
Sawa,

2
lsofnon è la parte lenta, utilizzando tutte le risoluzioni dei nomi e la risoluzione ip è. Rendi tutto numerico e andrà veloce.
Marcin,

@Marcin Le tue informazioni sono state effettivamente utili tanto quanto le risposte fornite. Grazie.
Sawa,

C'è qualche motivo per cui puoi t use uccidere tutto pgrepo pkill?
Nils,

Risposte:


7

Prova netstat, non posso dire se sia più veloce o più lento, tuttavia.

netstat -tanp | awk '$4 ~ /:8443$/ {sub(/\/.*/, "", $7); print $7}' | sort -u

1
Comprendo di usare l'opzione -p, Linux richiede che tu sia un utente root.
Nikhil Mulley,

1
È decisamente più veloce poiché netstat elenca solo le connessioni di rete (e non tutti i file aperti)
Matteo

Grazie per la risposta rapida e accurata. Mi ho aiutato molto
sawa,

11

Puoi mettere un'opzione -n ​​su lsof e quindi rimuovere la risoluzione DNS, che può accelerare la visualizzazione


Sì, sembra risolvere il problema ed è utile. In parte è stato suggerito da Marcin in un commento alla mia risposta.
Sawa,

1
tempo riferito lsof impiegando 10 secondi indipendentemente dall'opzione n.
user1133275,

2
sudo ss -p -l '( sport = :3000 )'|awk -F"," 'NR!=1{print $2}'

Questo stamperà il PID del processo in ascolto su 3000

time segnala che ciò è stato completato in 0m0.018s.

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.