Instalación y uso de lsof
lsof
es una utilidad de línea de comandos para enumerar todos los archivos abiertos que pertenecen a todos los procesos activos.
Para instalarlo en Linux, use los siguientes comandos según el tipo de distribución que use.
En Debian, Ubuntu:
sudo apt install lsof
En CentOS, RHEL:
sudo yum install lsof
Versiones más nuevas como CentOS 8, RHEL 8 o Fedora
sudo dnf install lsof
Para encontrar qué procesos se están ejecutando en qué puertos, simplemente especifique el número de puerto:
sudo lsof -i :3000
Salida de muestra:
# lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 264023 grafana 10u IPv6 2887779 0t0 TCP *:hbci (LISTEN)
Para obtener más detalles, consulte las páginas man.
man lsof
Instalación y uso de netstat
Netstat es una utilidad de línea de comandos que se utiliza para imprimir conexiones de red, tablas de enrutamiento, estadísticas de interfaz, conexiones enmascaradas y membresías de multidifusión.
Netstat está disponible en los repositorios predeterminados de la mayoría de las distribuciones de Linux.
Para instalarlo en Linux y sus variantes, haga:
En CentOS, RHEL:
sudo yum install net-tools
# On Fedora, RHEL 8 and Centos8
sudo dnf install net-tools
En Debian, Ubuntu:
sudo apt install net-tools
Use el siguiente comando para encontrar qué servicios están escuchando en qué puertos:
sudo netstat -tulpn
Salida de muestra:
# 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 está interesado en algún puerto específico, puede usar grep para filtrar:
sudo netstat -tulpn | grep 3000
sudo netstat -tulpn | grep grafana
Banderas:
- -t bandera muestra conexiones tcp.
- -u indicador muestra conexiones udp.
- -l bandera muestra enchufes de escucha. El indicador
- -p muestra el ID del proceso (PID) y el nombre del proceso de lo que sea que esté usando ese puerto. El indicador
- -n muestra las direcciones numéricas.
Para obtener más detalles, consulte las páginas man.
man netstat
Usando el comando "ss"
ss
es una utilidad de línea de comandos para investigar sockets. Es una alternativa a netstat y al uso de ss
es casi lo mismo que netstat
. Viene preinstalado en distribuciones de Linux populares como Redhat, Debian y sus variantes.
Para encontrar qué servicios están escuchando en qué puertos, ejecute:
sudo ss -tulpn
Salida de muestra:
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))
Para filtrar la salida de un servicio en particular (por ejemplo, grafana), use:
sudo ss -tulpn | grep grafana
sudo ss -tulpn | grep 3000
Para obtener más detalles, consulte las páginas man.
man ss
Instalación y uso del comando fuser
La utilidad de línea de comandos fuser
también se usa para identificar procesos usando archivos o sockets. Muestra los PID de los procesos que utilizan los archivos o sistemas de archivos especificados.
También está disponible en los repositorios predeterminados de la mayoría de las distribuciones de Linux.
Para instalarlo en Linux, ejecute:
En Debian, Ubuntu:
sudo apt install psmisc
En CentOS, RHEL:
sudo yum install psmisc
sudo dnf install psmisc
Necesitamos encontrar el PID de un servicio o proceso escuchando en un puerto en particular. Verifiquemos el PID del proceso que escucha en el puerto 3000 usando este comando:
sudo fuser 3000/tcp
Verá una salida como la siguiente.
3000/tcp: 264023
Aquí, 264023
es el PID.
Y luego descubra el proceso real usando el PID usando el comando:
ps -p 264023 -o comm=
Salida
# ps -p 264023 -o comm=
grafana-server
Nota:Agregar el -v
detallado flag le permite ver los detalles completos en un solo comando:
sudo fuser -v 3000/tcp
Salida:
# sudo fuser -v 3000/tcp
USER PID ACCESS COMMAND
3000/tcp: grafana 264023 F.... grafana-server
Para obtener más detalles, consulte las páginas man.
man fuser