특정 포트에서 어떤 프로세스가 수신 대기 중인지 확인

특정 포트에서 어떤 프로세스가 수신 대기 중인지 확인

내 생애 처음으로 어떤 프로세스가 Linux의 특정 포트를 수신하고 있는지 알 수 없습니다. :)

이것은 K8s를 실행하는 Ubuntu Server 22.04 설치입니다. 클러스터에는 포트 80 및 443에 바인딩된 수신 컨트롤러가 있습니다. 이것이 작동하는 이유는 다음과 같습니다.

:~# curl localhost
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

:~# curl localhost:443
<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx</center>
</body>
</html>

~# curl https://localhost:443 -k
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

문제는 어떤 프로세스가 이러한 포트에 어떻게 바인딩되는지 알 수 없다는 것입니다. 를 사용해 보았지만 ss아무것도 나타나지 않습니다.

:~# ss -tlnpu | grep 80
tcp   LISTEN 0      4096          192.168.13.191:2380       0.0.0.0:*    users:(("etcd",pid=1452,fd=8))           
tcp   LISTEN 0      4096               127.0.0.1:2380       0.0.0.0:*    users:(("etcd",pid=1452,fd=7))           

:~# ss -tlnpu | grep 443
tcp   LISTEN 0      4096                       *:6443             *:*    users:(("kube-apiserver",pid=1546,fd=7)) 

포트에서 수신 대기 중인 실제 프로세스를 찾는 방법은 무엇입니까?

답변1

특정 사례에서는 Kubernetes를 실행하고 있으므로 docker 명령을 사용하여 해당 포트에서 수신 대기 중인 컨테이너를 찾을 수 있는 좋은 기회가 있습니다.

$ docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
CONTAINER ID        NAMES                    PORTS
a690f047d3c8        quizzical_sanderson      0.0.0.0:8080->8080/tcp, 8443/tcp         
431ff622ad62        tender_payne             0.0.0.0:9191->9090/tcp
78941a2ee170        awx_task                 8052/tcp
2f5fc70ac576        awx_web                  0.0.0.0:80->8052/tcp, 0.0.0.0:443->8053/tcp

컨테이너가 awx_web호스트의 포트 80 및 443을 컨테이너의 사설 네트워크 네임스페이스에서 각각 포트 8052 및 8053으로 전달하는 것을 볼 수 있습니다.

docker ps매개변수 없이 직접 실행할 수도 있습니다 --format. 저는 이 --format매개변수를 사용하여 더 읽기 쉽고 편리하게 만들었습니다.

관련 정보