J'ai un PID de certains processus écoutant certains ports sur mon OS X et j'ai besoin de savoir quels ports sont écoutés par ce processus. Comment puis-je le faire?
Je sais que je peux utiliser lsof
pour savoir quel processus écoute un port, mais je dois effectuer une opération inverse.
Je vous remercie.
UPD
OS X utilise des utilitaires BSD, donc j'ai BSD et netstat
non Linux netstat
. Linux netstat
a l' -p
option pour afficher les PID, BSD netstat
utilise -p
pour spécifier le port et n'a pas d'option pour afficher les PID.
networking
osx
bsd
shau-kote
la source
la source
netstat
peut le faire pour vous. Vous pouvezgrep
sur le PID si vous souhaitez filtrer la sortie denetstat
lsof
utilisation n'est pas seulement un moyen. vous pouvez faire quelque chose commelsof|grep ${PID}
. qui videra grossièrement tout etgrep
sélectionnera les lignes contenant le PID. Dans le cas contraire, il pourrait répertorier une ligne non pertinente, en raison du nombre PID correspondant à tort à une autre valeur, mais les chances sont mincesnetstat
ne peut pas afficher les PID.Réponses:
J'ai trouvé une solution par moi-même en lisant en profondeur
man lsof
. (Oui, RT * M aide toujours.) Merci @Gilles pour avoir visé.Voici la solution:
lsof -aPi -p 555
(555 est le PID).Explication:
-p
pour spécifier le numéro PID;-i
pour afficher uniquement les périphériques réseau;-a
à ET deux conditions ci-dessus (sinon elles seront ORed);-P
pour afficher les numéros de port (au lieu des noms de port par défaut).De plus, on peut utiliser
lsof -aPi4 -p 555
oulsof -aPi6 -p 55
pour IPv4 ou IP6 uniquement des adresses en conséquence.Si la sortie sera analysée par une autre
-Fn
option de programme , cela peut être utile. Avec cette option, vouslsof
obtiendrez une «sortie pour un autre programme» au lieu d'une belle sortie formatée.lsof -aPi4 -Fn -p 555
produira quelque chose comme ceci:PS J'ai tout testé sur mon OS X El Capitan, mais comme je peux le voir, cela devrait aussi fonctionner sur Linux.
la source
lsof
fournit des informations sur les fichiers ouverts par les processus, y compris les ports réseau. Il est disponible sur à peu près tous les systèmes Unix, y compris OSX .La pierre de Rosette pour Unix ne liste aucun autre outil pour « processus de correspondance dans le fichier ou le port » sur OSX.
Pour répertorier les processus à l'écoute sur un port TCP, vous pouvez utiliser
lsof -iUDP
répertorie les processus qui ont un socket UDP ouvert.lsof -i
répertorie toutes les sockets réseau ouvertes (clients TCP, serveurs TCP et autres protocoles IP).la source
si vous voulez savoir quel port écoute, vous pouvez utiliser l'option -p de netstat. vous devez être le superutilisateur:
si vous voulez en savoir plus, essayez ce lien
la source
netstat
, j'ai OS X et utilise donc BSDnetstat
. Il utilise-p
pour spécifier le port TCP / IP, et il n'a pas la possibilité d'afficher le PID.Sur FreeBSD, vous pouvez utiliser
sockstat
pour ces informations. Je ne sais pas si OS X en asockstat
, car je n'ai pas de Mac.Par exemple, pour voir toutes les connexions TCPv4:
sockstat -4
la source
sockstat
commande sur mon Mac. :(Vous pouvez concaténer netstat avec grep, awk et sed pour afficher les ports avec leurs pids correspondants sur Linux et Cygwin:
Plus de détails
la source