Je cherche à lister tous les ports sur lesquels un PID est en train d'écouter.
Comment recommanderiez-vous que je reçoive ce type de données sur un processus?
Je cherche à lister tous les ports sur lesquels un PID est en train d'écouter.
Comment recommanderiez-vous que je reçoive ce type de données sur un processus?
Réponses:
Vous pouvez utiliser ss
le package iproute2 (qui est similaire à netstat
):
ss -l -p -n | grep "pid=1234,"
ou (pour l'ancienne version d'iproute2):
ss -l -p -n | grep ",1234,"
Remplacez 1234 par le PID du programme.
-u
ou -t
pour udb ou tcp uniquement. : +1: Et ceux-ci peuvent tous être empilés comme ss -tlnp
ss -tlnp | cat
ss -nlp | cat
, en gros, à me montrer les processus d’écoute (-l), leurs numéros de port (-n) et leurs informations de processus (-p), et n’essayez pas d’adapter la sortie à mon shell | cat
( ou moins ou peu importe).
Je ne suis pas au courant d'un moyen d'utiliser des iproute2
outils. Mais pour contourner le problème, vous pouvez essayer celui-ci.
lsof -Pan -p PID -i
devrait vous donner les informations que vous recherchez.
Sortie
lsof -Pan -p 27808 -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 27808 apache 5u IPv6 112811294 0t0 TCP *:80 (LISTEN)
httpd 27808 apache 7u IPv6 112811298 0t0 TCP *:8443 (LISTEN)
httpd 27808 apache 9u IPv6 112811303 0t0 TCP *:443 (LISTEN)
J'ai reçu cette commande d' ici mais je ne suis pas sûr du lien exact puisque je les ai tous notés dans le cahier. Mais vous pouvez aussi partir de là.
Vous pouvez utiliser netstat
pour cela déterminer le pid de chaque processus d'écoute.
netstat - Imprimez les connexions réseau, les tables de routage, les statistiques d'interface, les connexions masquées et les appartenances à la multidiffusion
-a, --all Afficher les sockets à la fois d'écoute et de non-écoute (pour TCP, cela signifie des connexions établies). Avec l'option --interfaces, affichez les interfaces non marquées
--numeric, -n Affiche les adresses numériques au lieu d'essayer de déterminer les noms symboliques d'hôte, de port ou d'utilisateur.
-p, --program Affiche le PID et le nom du programme auquel chaque socket appartient.
Voici un exemple:
# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1507/rpcbind
tcp 0 0 0.0.0.0:51188 0.0.0.0:* LISTEN 1651/rpc.statd
tcp 0 0 0.0.0.0:1013 0.0.0.0:* LISTEN 1680/ypbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1975/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1763/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2081/master
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2119/mongod
tcp 0 48 172.16.33.73:22 172.16.127.110:51850 ESTABLISHED 25473/sshd
tcp 0 0 172.16.33.73:22 172.16.127.110:51214 ESTABLISHED 24699/sshd
tcp 0 0 :::111 :::* LISTEN 1507/rpcbind
tcp 0 0 :::9200 :::* LISTEN 1994/java
tcp 0 0 :::9300 :::* LISTEN 1994/java
tcp 0 0 :::22 :::* LISTEN 1975/sshd
tcp 0 0 ::1:631 :::* LISTEN 1763/cupsd
tcp 0 0 ::1:25 :::* LISTEN 2081/master
tcp 0 0 :::59162 :::* LISTEN 1651/rpc.statd
netstat
je sache que les outils iproute2 sont obsolètes et que je cherche à l'éviter.
La réponse de @ jofel vous montre l'outil approprié à utiliser ss
. Voici les remplacements des autres outils de mise en réseau dans iproute2.
Les commandes obsolètes et leurs équivalents iproute2 sont les suivants:
deprecated replacement(s)
========== ==============
- arp ip n (ip neighbor)
- ifconfig ip a (ip addr), ip link, ip -s (ip -stats)
- iptunnel ip tunnel
- iwconfig iw
- nameif ip link, ifrename
- netstat ss, ip route (for netstat-r), ip -s link (for netstat -i),
ip maddr (for netstat-g)
- route ip r (ip route)
La liste de base est également disponible sur Wikipedia: http://en.wikipedia.org/wiki/Iproute2 .
Une autre méthode pour lsof
si vous ne connaissez pas le PID, mais juste le nom du programme:
lsof -Pa -p $(pgrep [programName]) -i
lsof
4,89 sur Ubuntu 16.04
pgrep <program name>
puis choisissez le PID dont vous avez besoin pour la commande ci-dessus. en remplaçant $(pgrep [programName])
par le PID #
ss
n'a pas de filtrage sur PID sauf pour les sockets netlink.