Installer et utiliser lsof
lsof
est un utilitaire en ligne de commande pour lister tous les fichiers ouverts appartenant à tous les processus actifs.
Pour l'installer sur Linux, utilisez les commandes suivantes en fonction du type de distribution que vous utilisez.
Sur Debian, Ubuntu :
sudo apt install lsof
Sur CentOS, RHEL :
sudo yum install lsof
Des versions plus récentes comme CentOS 8, RHEL 8 ou Fedora
sudo dnf install lsof
Pour savoir quels processus s'exécutent sur quels ports, indiquez simplement le numéro de port :
sudo lsof -i :3000
Exemple de sortie :
# lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 264023 grafana 10u IPv6 2887779 0t0 TCP *:hbci (LISTEN)
Pour plus de détails, consultez les pages de manuel.
man lsof
Installation et utilisation de netstat
Netstat est un utilitaire de ligne de commande utilisé pour imprimer les connexions réseau, les tables de routage, les statistiques d'interface, les connexions masquées et les adhésions multidiffusion.
Netstat est disponible dans les dépôts par défaut de la plupart des distributions Linux.
Pour l'installer sur Linux et ses variantes, faites :
Sur CentOS, RHEL :
sudo yum install net-tools
# On Fedora, RHEL 8 and Centos8
sudo dnf install net-tools
Sur Debian, Ubuntu :
sudo apt install net-tools
Utilisez la commande suivante pour trouver quels services écoutent sur quels ports :
sudo netstat -tulpn
Exemple de sortie :
# sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8088 0.0.0.0:* LISTEN 538847/influxd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:7088 0.0.0.0:* LISTEN 538639/docker-proxy
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 970/sshd
tcp6 0 0 :::9080 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::3000 :::* LISTEN 264023/grafana-serv
tcp6 0 0 :::3100 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9090 :::* LISTEN 263154/prometheus
tcp6 0 0 :::9096 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9100 :::* LISTEN 262769/node_exporte
tcp6 0 0 :::44303 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::7088 :::* LISTEN 538645/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 900/nginx: master p
tcp6 0 0 :::8086 :::* LISTEN 538847/influxd
tcp6 0 0 :::22 :::* LISTEN 970/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 127.0.0.1:323 0.0.0.0:* 777/chronyd
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 777/chronyd
udp6 0 0 fe80::458:3aff:fed6:546 :::* 850/NetworkManager
Si vous êtes intéressé par un port spécifique, vous pouvez utiliser grep pour filtrer :
sudo netstat -tulpn | grep 3000
sudo netstat -tulpn | grep grafana
Drapeaux :
- l'indicateur -t affiche les connexions tcp.
- -u flag montre les connexions udp.
- -l drapeau affiche les sockets d'écoute.
- -p drapeau affiche l'ID de processus (PID) et le nom de processus de tout ce qui utilise ce port.
- -n drapeau affiche les adresses numériques.
Pour plus de détails, consultez les pages de manuel.
man netstat
Utiliser la commande "ss"
ss
est un utilitaire de ligne de commande pour étudier les sockets. C'est une alternative à netstat et à l'utilisation de ss
est presque identique à netstat
. Il est préinstallé sur les distributions Linux populaires telles que Redhat, Debian et leurs variantes.
Pour trouver quels services écoutent sur quels ports, exécutez :
sudo ss -tulpn
Exemple de sortie :
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=5),("systemd",pid=1,fd=33))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=777,fd=6))
udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=7),("systemd",pid=1,fd=35))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=777,fd=7))
udp UNCONN 0 0 [fe80::458:3aff:fed6:8255]%eth0:546 [::]:* users:(("NetworkManager",pid=850,fd=26))
tcp LISTEN 0 128 127.0.0.1:8088 0.0.0.0:* users:(("influxd",pid=538847,fd=3))
tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=902,fd=8),("nginx",pid=901,fd=8),("nginx",pid=900,fd=8))
tcp LISTEN 0 128 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=4),("systemd",pid=1,fd=32))
tcp LISTEN 0 128 0.0.0.0:7088 0.0.0.0:* users:(("docker-proxy",pid=538639,fd=4))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=902,fd=9),("nginx",pid=901,fd=9),("nginx",pid=900,fd=9))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=970,fd=5))
tcp LISTEN 0 128 *:9080 *:* users:(("promtail-linux-",pid=393063,fd=10))
tcp LISTEN 0 128 *:3000 *:* users:(("grafana-server",pid=264023,fd=10))
tcp LISTEN 0 128 *:3100 *:* users:(("loki-linux-amd6",pid=391839,fd=9))
tcp LISTEN 0 128 *:9090 *:* users:(("prometheus",pid=263154,fd=8))
tcp LISTEN 0 128 *:9096 *:* users:(("loki-linux-amd6",pid=391839,fd=10))
tcp LISTEN 0 128 *:9100 *:* users:(("node_exporter",pid=262769,fd=3))
tcp LISTEN 0 128 *:44303 *:* users:(("promtail-linux-",pid=393063,fd=11))
tcp LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=6),("systemd",pid=1,fd=34))
tcp LISTEN 0 128 [::]:7088 [::]:* users:(("docker-proxy",pid=538645,fd=4))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=902,fd=10),("nginx",pid=901,fd=10),("nginx",pid=900,fd=10))
tcp LISTEN 0 128 *:8086 *:* users:(("influxd",pid=538847,fd=5))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=970,fd=7))
Pour filtrer la sortie d'un service particulier (par exemple, grafana), utilisez :
sudo ss -tulpn | grep grafana
sudo ss -tulpn | grep 3000
Pour plus de détails, consultez les pages de manuel.
man ss
Installation et utilisation de la commande fuser
L'utilitaire de ligne de commande fuser
est également utilisé pour identifier les processus utilisant des fichiers ou des sockets. Il affiche les PID des processus utilisant les fichiers ou systèmes de fichiers spécifiés.
Il est également disponible dans les dépôts par défaut de la plupart des distributions Linux.
Pour l'installer sous Linux, exécutez :
Sur Debian, Ubuntu :
sudo apt install psmisc
Sur CentOS, RHEL :
sudo yum install psmisc
sudo dnf install psmisc
Nous devons trouver le PID d'un service ou d'un processus en écoute sur un port particulier. Vérifions le PID du processus écoutant sur le port 3000 à l'aide de cette commande :
sudo fuser 3000/tcp
Vous verrez une sortie comme ci-dessous.
3000/tcp: 264023
Ici, 264023
est le PID.
Et puis découvrez le processus réel en utilisant le PID en utilisant la commande :
ps -p 264023 -o comm=
Sortie
# ps -p 264023 -o comm=
grafana-server
Remarque :Ajout du verbeux -v
flag vous permet de visualiser tous les détails en une seule commande :
sudo fuser -v 3000/tcp
Sortie :
# sudo fuser -v 3000/tcp
USER PID ACCESS COMMAND
3000/tcp: grafana 264023 F.... grafana-server
Pour plus de détails, consultez les pages de manuel.
man fuser