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 error
socket.error: [Errno 98] Address already in use
Si j'utilise un autre port (8000
est le port par défaut), le serveur Web fonctionne correctement.
Si je lance wget localhost:8000
à partir de la ligne de commande, il retourne 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 n'est exécuté via Sudo
car vous n'êtes peut-être pas autorisé à accéder à certains processus.)
Par exemple, avec le port 8000 (python3 -m http.server
):
$ lsof -i :8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 3269 user 3u IPv4 1783216 0t0 TCP *:8000 (LISTEN)
Et le port 22 (SSH):
$ Sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 998 root 3u IPv4 1442116 0t0 TCP *:ssh (LISTEN)
sshd 998 root 4u IPv6 1442118 0t0 TCP *:ssh (LISTEN)
J'espère que cela pourra aider.
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 "
Aucun processus ne 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 :8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
squid3 1289 proxy 15u IPv6 14810490 0t0 TCP *:8000 (LISTEN)
$ ps -fp 1289
UID PID PPID C STIME TTY TIME CMD
proxy 1289 1 0 09:48 ? 00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf
Je peux voir ici que le calmar est le processus, mais c’est actuellement mon squid-deb-proxy
qui prend le port.
Un autre bon exemple d'application Java:
$ lsof -i :4242
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Java 3075 root 86u IPv4 12019 0t0 TCP *:4242 (LISTEN)
$ ps -fp 3075
UID PID PPID C STIME TTY TIME CMD
root 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
(LiSt Open Files) qu'il s'agit de Java, ce qui est peu utile. En exécutant la commande ps
avec le PID, nous pouvons voir immédiatement qu’il s’agit de CrashPlan.
Une autre façon d'utiliser le paquet socklist
à partir du paquet procinfo
:
LA DESCRIPTION
socklist
est un script Perl qui vous donne une liste de tous les sockets ouverts, énumérant les types, port, inode, uid, pid, fd et le programme auquel ils appartiennent.
Sudo socklist
type port inode uid pid fd name
tcp 53 28749 0 1721 5 dnsmasq
tcp 631 29190 0 2433 11 cupsd
tcp 42376 82230 1000 1345 84 firefox
tcp 49048 71686 1000 1345 67 firefox
tcp 41248 81672 1000 1345 119 firefox
tcp 54676 84558 1000 1345 73 firefox
udp 56107 66258 0 3268 20 dhclient
udp 40804 17857 107 679 14 avahi-daemon
udp 53 28748 0 1721 4 dnsmasq
udp 68 67427 0 3268 6 dhclient
udp 631 19692 0 765 8 cups-browsed
udp 5353 17855 107 679 12 avahi-daemon
Vous pouvez utiliser nmap.
Il est vraiment important de savoir quels ports sont ouverts sur votre PC, ce qui est utile non seulement pour Linux, mais également pour les autres systèmes d'exploitation, Linux dispose de nombreux outils pour vérifier quels ports sont ouverts, le plus courant étant nmap, qui est outil de ligne de commande, mais existe également un frontEnd graphique si vous préférez de cette façon.1
pour l'installer, appuyez simplement sur Ctrl+Alt+T sur votre clavier pour ouvrir Terminal. Quand il s'ouvre, lancez la commande ci-dessous:
Sudo apt-get install nmap
Pour plus d'informations sur nmap et d'autres utilitaires, allez Ici
1 Source: garron.me