Des alternatives plus rapides à lsof


8

Je veux extraire l'ID de processus d'un certain processus afin de l'arrêter. Le processus est un serveur Web local utilisant un certain port (localhost: 3000), et je le fais actuellement comme ceci pour extraire la ligne appropriée:

lsof|grep localhost:3000

mais la lsofcommande est trop lente. Existe-t-il un moyen plus rapide d'extraire l'ID de processus?


lsof -iliste uniquement les connexions réseau.
Hanan N.

@HananN. Je l'ai essayé, mais c'est encore très lent. L'utilisation de netstat comme suggéré dans les réponses est beaucoup plus rapide.
sawa

2
lsofn'est pas la partie lente, en utilisant toutes les résolutions de nom et la résolution ip. Rendez tout numérique et ça ira vite.
Marcin

@Marcin Vos informations ont été utiles autant que les réponses données. Je vous remercie.
sawa

Y a-t-il une raison pour laquelle vous pouvez t use tuer tous pgrepou pkill?
Nils

Réponses:


7

Essayez netstat, je ne peux pas dire si c'est plus rapide ou plus lent, cependant.

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

1
Je comprends que pour utiliser l'option -p, Linux nécessite que vous soyez root.
Nikhil Mulley

1
C'est nettement plus rapide car netstat ne répertorie que les connexions réseau (et pas tous les fichiers ouverts)
Matteo

Merci pour la réponse rapide et précise. Je m’ai beaucoup aidé.
sawa

11

Vous pouvez mettre une option -n sur lsof puis supprimer la résolution DNS, ce qui peut accélérer l'affichage


Oui, cela semble aggraver le problème et c'est utile. Cela a été en partie suggéré par Marcin dans un commentaire à ma réponse.
sawa

1
temps rapporté lsof prenant 10 secondes quelle que soit l'option n.
user1133275

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

Cela imprimera le PID du processus d'écoute sur 3000

time rapporte que cela s'est terminé en 0m0.018s.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.