Comment savoir quel programme écoute sur un port donné?

Je soupçonne qu'un programme écoute sur le port 8000 sur ma machine.

Lorsque j'exécute la commande suivante, j'obtiens cette erreur:

> python -m SimpleHTTPServer# Lots of python errorsocket.error: [Errno 98] Address already in use

Si j'utilise un autre port (8000 est la valeur par défaut), le serveur Web fonctionne correctement.

Si je cours wget localhost:8000 à partir de la ligne de commande, il renvoie 404 Not Found.

Que puis-je faire (ou quels outils sont disponibles) pour trouver quel programme écoute sur le port 8000, et à partir de là où ce programme est configuré?

Ouvrez votre terminal et tapez comme

lsof -i :8000

cette commande vous listera l'application utilisée par ce port avec PID.(Si aucun résultat ne s'exécute via sudo puisque vous n'avez peut-être pas l'autorisation d'accéder à certains processus.)

Par exemple, avec le port 8000 (python3 -m http.server):

$ lsof -i :8000COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAMEpython3 3269 user    3u  IPv4 1783216      0t0  TCP *:8000 (LISTEN)

Et le port 22 (SSH):

$ sudo lsof -i :22COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAMEsshd     998 root    3u  IPv4 1442116      0t0  TCP *:ssh (LISTEN)sshd     998 root    4u  IPv6 1442118      0t0  TCP *:ssh (LISTEN)

J'espère que ça aide.

Vous pouvez utiliser netstat pour voir quel processus écoute sur quel port.

Vous pouvez utiliser cette commande pour avoir un détail complet :

sudo netstat -peanut

si vous avez besoin de savoir exactement lequel écoute sur le port 8000, vous pouvez utiliser ceci :

sudo netstat -peanut | grep ":8000 "

Il n'y a pas de processus qui peut se cacher de netstat.

Pour expliquer la réponse de @33833, vous pouvez obtenir des informations très détaillées, par exemple:

$ lsof -i :8000COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEsquid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)$ ps -fp 1289UID        PID  PPID  C STIME TTY          TIME CMDproxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Je peux voir là que le calmar est le processus, mais c'est en fait mon squid-deb-proxy cela prend le port.

Un autre bon exemple d'application java:

$ lsof -i :4242COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEjava    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)$ ps -fp 3075UID        PID  PPID  C STIME TTY          TIME CMDroot      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

Vous pouvez voir dans lsof (Liste des fichiers ouverts) qu'il s'agit de java, ce qui n'est pas très utile. Exécuter le ps commande avec le PID, nous pouvons voir tout de suite qu'il s'agit de CrashPlan.

Essayer ss de iproute2 paquet:

ss -nlp | grep 8000

Une autre façon d'utiliser socklist de procinfo paquet:

man socklist

DESCRIPTION
socklist est un script Perl qui vous donne une liste de tous les sockets ouverts, en énumérant les types, le port, l'inode, l'uid, le pid, le fd et le programme auquel il appartient.

sudo socklist

type  port      inode     uid    pid   fd  nametcp     53      28749       0   1721    5  dnsmasqtcp    631      29190       0   2433   11  cupsdtcp  42376      82230    1000   1345   84  firefoxtcp  49048      71686    1000   1345   67  firefoxtcp  41248      81672    1000   1345  119  firefoxtcp  54676      84558    1000   1345   73  firefoxudp  56107      66258       0   3268   20  dhclientudp  40804      17857     107    679   14  avahi-daemonudp     53      28748       0   1721    4  dnsmasqudp     68      67427       0   3268    6  dhclientudp    631      19692       0    765    8  cups-browsedudp   5353      17855     107    679   12  avahi-daemon

En raison du point bas de la communauté, je ne peux pas commenter ici. Sans sudo toutes les commandes ci-dessus ne vous fourniront pas l'Id de processus / le nom du programme.

Donc, vous avez besoin des éléments suivants:

sudo lsof -i :8000

ou

sudo netstat -lntup

vous pouvez vérifier ces détails de commande via man, help ou mon aide préférée

Vous pouvez utiliser nmap.

Il est vraiment important de savoir quels ports sont ouverts dans votre PC, ce n'est pas seulement utile pour Linux, mais aussi pour d'autres systèmes d'exploitation, Linux dispose de nombreux outils pour vérifier quels ports sont ouverts, le plus courant est nmap qui est un outil de ligne de commande, mais existe également une interface graphique pour cela si vous préférez.1

pour l'installer, appuyez simplement sur Ctrl+Alt+T sur votre clavier pour ouvrir le Terminal. Lorsqu'il s'ouvre, exécutez la commande ci-dessous:

sudo apt-get install nmap

Pour plus d'informations sur nmap et d'autres utilitaires, rendez-vous sur Ici

1Source:garron.me

Voici une commande facile à retenir

ss -townlup Netid               State                 Recv-Q                Send-Q                                    Local Address:Port                               Peer Address:Porticmp6               UNCONN                0                     0                                                *%eth0:58                                            *:*udp                 UNCONN                0                     0                                         127.0.0.53%lo:53                                      0.0.0.0:*udp                 UNCONN                0                     0                                     172.31.26.71%eth0:68                                      0.0.0.0:*tcp                 LISTEN                0                     128                                             0.0.0.0:22                                      0.0.0.0:*tcp                 LISTEN                0                     128                                             0.0.0.0:443                                     0.0.0.0:*tcp                 LISTEN                0                     128                                       127.0.0.53%lo:53                                      0.0.0.0:*tcp                 LISTEN                0                     128                                                [::]:22                                         [::]:*tcp                 LISTEN                0                     128                                                [::]:443                                        [::]:*tcp                 LISTEN                0                     100                                                   *:9090                                          *:*                    users:(("java",pid=13008,fd=16))tcp                 LISTEN                0                     100                                                   *:8080                                          *:*                    users:(("java",pid=11556,fd=12))