Sous Linux, je peux utiliser netstat -pntl | grep $PORTou fuser -n tcp $PORTpour savoir quel processus (PID) écoute sur le port TCP spécifié. Comment obtenir les mêmes informations sur Mac OS X?
Remplacez $PORTpar le numéro de port ou une liste de numéros de port séparés par des virgules.
Ajoutez un préfixe sudo(suivi d'un espace) si vous avez besoin d'informations sur les ports inférieurs à # 1024.
L' -nindicateur sert à afficher les adresses IP au lieu des noms d'hôte. Cela accélère l'exécution de la commande, car les recherches DNS pour obtenir les noms d'hôte peuvent être lentes (plusieurs secondes ou une minute pour de nombreux hôtes).
Le -Pdrapeau est pour l' affichage des numéros de ports bruts au lieu des noms résolus comme http, ftpou noms de services plus ésotériques comme dpserve, socalia.
Voir les commentaires pour plus d'options.
Pour être complet, car fréquemment utilisé ensemble:
Préfixez ceci avec sudopour voir les processus que vous ne possédez pas.
Gordon Davisson
30
sur lion, a travaillé avec un changementsudo lsof -i TCP:$PORT | grep LISTEN
dhaval
58
Sur Mountain Lion, vous n'avez pas besoin de grep:sudo lsof -iTCP:$PORT -sTCP:LISTEN
Siu Ching Pong -Asuka Kenji-
16
après tant de recherches, celle-ci est la meilleure. les personnes qui souhaitent directement copier la commande doivent remplacer $ PORT par le numéro de port réel ou définir la variable PORT et cela aussi pour plusieurs ports comme: export PORT = 8080,4433; lsof -n -i4TCP: $ PORT
siddhusingh
2
On n'a pas besoin de sudo si le port à enquêter est supérieur à 1024.
stigkj
626
Depuis Snow Leopard (10.6), jusqu'à Mojave (10.14) et Catalina (10,15) , chaque version de macOS prend en charge ceci:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Personnellement, je me retrouve avec cette fonction simple dans mon ~/.bash_profile:
listening() {
if [ $# -eq 0 ]; then
sudo lsof -iTCP -sTCP:LISTEN -n -P
elif [ $# -eq 1 ]; then
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
else
echo "Usage: listening [pattern]"
fi
}
Ensuite, la listeningcommande vous donne une liste des processus à l'écoute sur un port et le listening smthrecherche pour un modèle.
Ayant cela, il est assez facile de poser des questions sur un processus particulier, par exemple listening dropbox, ou un port, par exemple listening 22.
lsofLa commande a des options spécialisées pour poser des questions sur le port, le protocole, le processus, etc., mais personnellement, j'ai trouvé la fonction ci-dessus beaucoup plus pratique, car je n'ai pas besoin de me souvenir de toutes ces options de bas niveau. lsofest un outil assez puissant, mais malheureusement pas si confortable à utiliser.
Cela se passe dans mes fichiers dot. Je recherche tous les quelques mois et tombe toujours sur cette réponse.
danemacmillan
1
Je pense que cette réponse devrait être acceptée comme OP l'a dit -pntl, ce qui énumérerait tous les services. La réponse acceptée demande qu'un ou plusieurs numéros de port soient spécifiés, ce qui n'est pas le même à distance.
Cette commande affiche également les PID non écouteurs et les questions explicitement posées aux écouteurs uniquement.
pts
3
Vous pouvez également courir lsof -t -i :1338. -trenverra l'ID du processus, vous n'aurez donc pas à awk / head.
KFunk
Rien n'a fonctionné sauf kill -9 $(lsof -t -i :5000)sur el capitan
goksel
C'est bien. Je préfère savoir ce qu'il y a avant de le tuer, alors (sur cette base) je viens d'ajouter à mon bashrc:, whatsonport() { ps -ef | grep `lsof -t -i :$1` }donc:⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
Sigfried
1
Merci, a lsof -i :PORT_NUMBERfait un travail pour moi.
Vous devez également ajouter grep LISTENpour afficher uniquement les auditeurs.
pts
3
Voilà ce dont j'avais besoin! lsofn'a pas pu trouver le port. mais a netstatmontré qu'il était ouvert. -vétait la sauce secrète qui me manquait.
Aaron McMillin
32
Sur macOS, voici un moyen facile d'obtenir l'ID de processus qui écoute sur un port spécifique avec netstat . Cet exemple recherche un processus servant du contenu sur le port 80:
trouver le serveur en cours d'exécution sur le port 80
netstat -anv | egrep -w [.]80.*LISTEN
exemple de sortie
tcp4 0 0 *.80 *.* LISTEN 131072 131072 715 0
La 2e de la dernière colonne est le PID. En haut, c'est 715 .
les options
-a - afficher tous les ports, y compris ceux utilisés par les serveurs
-n- montrez des nombres, ne cherchez pas de noms. Cela rend la commande beaucoup plus rapide
-v - sortie détaillée, pour obtenir les ID de processus
-w- rechercher des mots. Sinon, la commande renverra des informations pour les ports 8000 et 8001, pas seulement "80"
LISTEN - donner des informations uniquement pour les ports en mode LISTEN, c'est-à-dire les serveurs
Sur Snow Leopard (OS X 10.6.8), l'exécution de 'man lsof' donne:
lsof -i 4 -a
(la saisie manuelle réelle est 'lsof -i 4 -a -p 1234')
Les réponses précédentes ne fonctionnaient pas sur Snow Leopard, mais j'essayais d'utiliser 'netstat -nlp' jusqu'à ce que je vois l'utilisation de 'lsof' dans la réponse par pts.
Je suis un gars Linux. Sous Linux, c'est extrêmement facile avec netstat -ltpnou toute combinaison de ces lettres. Mais sous Mac OS X, netstat -an | grep LISTENc'est le plus humain. D'autres sont très laids et très difficiles à retenir lors du dépannage.
Votre réponse n'est pas mauvaise, mais elle porte sur une question avec plusieurs réponses très appréciées et acceptée depuis plusieurs années. À l'avenir, essayez de vous concentrer sur des questions plus récentes, en particulier celles qui n'ont pas encore reçu de réponse.
Cette commande affiche-t-elle également les ports non TCP et les non-écouteurs? La question demande explicitement des écouteurs sur les ports TCP uniquement.
pts
Selon la page de manuel lsof (8): If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
Misha Tavkhelidze
@Misha Tavkhelidze: Donc, il affiche également les non-auditeurs, donc il ne répond pas à la question.
J'ai fait un petit script pour voir non seulement qui écoute où mais aussi pour afficher les connexions établies et vers quels pays. Fonctionne sur OSX Siera
Sample output
checking established connections
107.178.244.155 : United States
17.188.136.186 : United States
17.252.76.19 : United States
17.252.76.19 : United States
17.188.136.186 : United States
5.45.62.118 : Netherlands
40.101.42.66 : Ireland
151.101.1.69 : United States
173.194.69.188 : United States
104.25.170.11 : United States
5.45.62.49 : Netherlands
198.252.206.25 : United States
151.101.1.69 : United States
34.198.53.220 : United States
198.252.206.25 : United States
151.101.129.69 : United States
91.225.248.133 : Ireland
216.58.212.234 : United States
displaying listening ports
mysqld TCP *:3306 (LISTEN)
com.avast TCP 127.0.0.1:12080 (LISTEN)
com.avast TCP [::1]:12080 (LISTEN)
com.avast TCP 127.0.0.1:12110 (LISTEN)
com.avast TCP [::1]:12110 (LISTEN)
com.avast TCP 127.0.0.1:12143 (LISTEN)
com.avast TCP [::1]:12143 (LISTEN)
com.avast TCP 127.0.0.1:12995 (LISTEN)
com.avast [::1]:12995 (LISTEN)
com.avast 127.0.0.1:12993 (LISTEN)
com.avast [::1]:12993 (LISTEN)
Google TCP 127.0.0.1:34013 (LISTEN)
Cela peut être utile pour vérifier si vous êtes connecté en Corée du Nord! ;-)
Pour macOS, j'utilise deux commandes ensemble pour afficher des informations sur les processus à l'écoute sur la machine et le processus de connexion aux serveurs distants. En d'autres termes, pour vérifier les ports d'écoute et les connexions actuelles (TCP) sur un hôte, vous pouvez utiliser ensemble les deux commandes suivantes
1. netstat -p tcp -p udp
2. lsof -n -i4TCP -i4UDP
Je pensais que j'ajouterais ma contribution, j'espère que cela peut finir par aider quelqu'un.
netstat -p tcp | grep $PORT
n'affiche pas les PID car netstat sur Mac OS X ne peut pas afficher les PID.netstat -anv
affiche le port sur Mac OS X (source: solution ci-dessous par @SeanHamiliton)Réponses:
Sur macOS High Sierra et versions ultérieures, utilisez cette commande:
ou pour voir simplement IPv4:
Sur les anciennes versions, utilisez l'un des formulaires suivants:
Remplacez
$PORT
par le numéro de port ou une liste de numéros de port séparés par des virgules.Ajoutez un préfixe
sudo
(suivi d'un espace) si vous avez besoin d'informations sur les ports inférieurs à # 1024.L'
-n
indicateur sert à afficher les adresses IP au lieu des noms d'hôte. Cela accélère l'exécution de la commande, car les recherches DNS pour obtenir les noms d'hôte peuvent être lentes (plusieurs secondes ou une minute pour de nombreux hôtes).Le
-P
drapeau est pour l' affichage des numéros de ports bruts au lieu des noms résolus commehttp
,ftp
ou noms de services plus ésotériques commedpserve
,socalia
.Voir les commentaires pour plus d'options.
Pour être complet, car fréquemment utilisé ensemble:
Pour tuer le PID:
la source
sudo
pour voir les processus que vous ne possédez pas.sudo lsof -i TCP:$PORT | grep LISTEN
grep
:sudo lsof -iTCP:$PORT -sTCP:LISTEN
Depuis Snow Leopard (10.6), jusqu'à Mojave (10.14) et Catalina (10,15) , chaque version de macOS prend en charge ceci:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Personnellement, je me retrouve avec cette fonction simple dans mon
~/.bash_profile
:Ensuite, la
listening
commande vous donne une liste des processus à l'écoute sur un port et lelistening smth
recherche pour un modèle.Ayant cela, il est assez facile de poser des questions sur un processus particulier, par exemple
listening dropbox
, ou un port, par exemplelistening 22
.lsof
La commande a des options spécialisées pour poser des questions sur le port, le protocole, le processus, etc., mais personnellement, j'ai trouvé la fonction ci-dessus beaucoup plus pratique, car je n'ai pas besoin de me souvenir de toutes ces options de bas niveau.lsof
est un outil assez puissant, mais malheureusement pas si confortable à utiliser.la source
-pntl
, ce qui énumérerait tous les services. La réponse acceptée demande qu'un ou plusieurs numéros de port soient spécifiés, ce qui n'est pas le même à distance.Vous pouvez aussi utiliser:
Cela fonctionne dans Mavericks.
la source
-i
option le rend beaucoup plus rapide. 0,02 seconde contre 2 secondes. Dans ma candidature, cela a fait toute la différence.Mise à jour janvier 2016
Vraiment surpris, personne n'a suggéré:
pour obtenir les informations de base requises. Par exemple, vérification sur le port 1337:
Autres variations, selon les circonstances:
Vous pouvez facilement en tirer parti pour extraire le PID lui-même. Par exemple:
qui est également équivalente (en résultat) à cette commande:
Illustration rapide:
Pour être complet, car fréquemment utilisé ensemble:
Pour tuer le PID:
ou comme une doublure:
la source
lsof -t -i :1338
.-t
renverra l'ID du processus, vous n'aurez donc pas à awk / head.kill -9 $(lsof -t -i :5000)
sur el capitanwhatsonport() { ps -ef | grep `lsof -t -i :$1` }
donc:⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
lsof -i :PORT_NUMBER
fait un travail pour moi.Cela fonctionne dans Mavericks (OSX 10.9.2).
la source
Pour les ports LISTEN, ESTABLISHED et CLOSED
Pour les ports LISTEN uniquement
Pour un port LISTEN spécifique, ex: port 80
Ou si vous voulez juste un résumé compact [aucun service / application décrit], allez par NETSTAT. Le bon côté ici, pas de sudo nécessaire
Expliquer les éléments utilisés:
-n supprimer le nom d'hôte
-i pour les protocoles IPv4 et IPv6
-P omettre les noms de port
-a [sur netstat] pour toutes les sockets
-n [sur netstat] ne résout pas les noms, affiche les adresses réseau sous forme de nombres
la source
sous OS X, vous pouvez utiliser l'option -v pour netstat pour donner le pid associé.
type:
la sortie ressemblera à ceci:
Le PID est le numéro avant la dernière colonne, 3105 pour ce cas
la source
grep LISTEN
pour afficher uniquement les auditeurs.lsof
n'a pas pu trouver le port. mais anetstat
montré qu'il était ouvert.-v
était la sauce secrète qui me manquait.Sur macOS, voici un moyen facile d'obtenir l'ID de processus qui écoute sur un port spécifique avec netstat . Cet exemple recherche un processus servant du contenu sur le port 80:
trouver le serveur en cours d'exécution sur le port 80
exemple de sortie
La 2e de la dernière colonne est le PID. En haut, c'est 715 .
les options
-a
- afficher tous les ports, y compris ceux utilisés par les serveurs-n
- montrez des nombres, ne cherchez pas de noms. Cela rend la commande beaucoup plus rapide-v
- sortie détaillée, pour obtenir les ID de processus-w
- rechercher des mots. Sinon, la commande renverra des informations pour les ports 8000 et 8001, pas seulement "80"LISTEN
- donner des informations uniquement pour les ports en mode LISTEN, c'est-à-dire les serveursla source
Sur la dernière version de macOS, vous pouvez utiliser cette commande:
Si vous avez du mal à vous en souvenir, vous devriez peut-être créer une
bash
fonction et l'exporter avec un nom plus convivial comme ça.puis ajoutez les lignes suivantes à ce fichier et enregistrez-le.
Vous pouvez maintenant saisir
listening_on 80
votre terminal et voir quel processus écoute sur le port80
.la source
Sur Snow Leopard (OS X 10.6.8), l'exécution de 'man lsof' donne:
(la saisie manuelle réelle est 'lsof -i 4 -a -p 1234')
Les réponses précédentes ne fonctionnaient pas sur Snow Leopard, mais j'essayais d'utiliser 'netstat -nlp' jusqu'à ce que je vois l'utilisation de 'lsof' dans la réponse par pts.
la source
Je suis un gars Linux. Sous Linux, c'est extrêmement facile avec
netstat -ltpn
ou toute combinaison de ces lettres. Mais sous Mac OS X,netstat -an | grep LISTEN
c'est le plus humain. D'autres sont très laids et très difficiles à retenir lors du dépannage.la source
Cela montre qui fait quoi. Supprimez -n pour voir les noms d'hôte (un peu plus lentement).
la source
If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
-sTCP:LISTEN
àlsof
Cela a fait ce dont j'avais besoin.
la source
J'ai fait un petit script pour voir non seulement qui écoute où mais aussi pour afficher les connexions établies et vers quels pays. Fonctionne sur OSX Siera
Cela peut être utile pour vérifier si vous êtes connecté en Corée du Nord! ;-)
la source
C'est un bon moyen sur macOS High Sierra:
la source
Inspiré par l'utilisateur Brent Self:
lsof -i 4 -a | grep LISTEN
la source
Pour macOS, j'utilise deux commandes ensemble pour afficher des informations sur les processus à l'écoute sur la machine et le processus de connexion aux serveurs distants. En d'autres termes, pour vérifier les ports d'écoute et les connexions actuelles (TCP) sur un hôte, vous pouvez utiliser ensemble les deux commandes suivantes
Je pensais que j'ajouterais ma contribution, j'espère que cela peut finir par aider quelqu'un.
la source