내 Linux Ubuntu 시스템에서 어떤 포트가 사용 중인지 확인하려고 합니다. 이 글을 읽고 있어요Linux 또는 Unix에서 포트가 사용 중인지 확인하는 방법이를 확인하는 명령 중 하나는 다음과 같습니다.
sudo lsof -i -P -n | grep LISTEN
나는 아직 많은 Linux 명령에 익숙하지 않지만 최근에 배웠습니다.lsof
열려 있는 모든 파일을 나열하는 데 사용되므로 이 플래그의 용도를 알고 싶습니다.
(-P 및 -n 플래그의 기능은 무엇입니까? 매뉴얼을 살펴봤지만 전혀 도움이 되지 않습니다. 여기서는 -i 플래그가 가장 중요한 것 같습니다.)
-i 플래그 없이 "LISTEN"을 grep하면 .
설명서에는 다음과 같이 나와 있습니다.
-i [i] 이 옵션은 인터넷 주소가 i에 지정된 주소와 일치하는 파일 목록을 선택합니다. 주소가 지정되지 않은 경우 이 옵션은 모든 인터넷 및 x.25(HP-UX) 네트워크 파일 목록을 선택합니다.
나는 이것이 무엇을 의미하는지 정말로 이해하지 못하고, 어떤 포트가 사용 중인지 알아내는 데 어떻게 도움이 되는지 확실히 이해하지 못합니다.
답변1
-i
인터넷 파일 또는 소켓을 선택합니다. 선택적 주소 매개변수와 함께 사용됩니다. 이 매개변수가 없으면 모든 소켓이 선택됩니다.
이 옵션을 사용하면 추가 필터를 사용하여 IPv4/IPv6, TCP/UDP 등을 선택할 수 있습니다. 맨페이지에는 몇 가지 예가 나열되어 있습니다.
-i 4
IPv4 소켓을 선택하고-i 6
IPv6 소켓을 선택합니다.-i TCP
아니면-i UDP
합의해서 선택하세요.-i @hostname
또는-i @ipaddress
소켓이 바인딩된 인터페이스의 이름/IP로 선택하세요.-i :port
특정 포트에 바인딩된 소켓을 선택합니다.
다른 두 가지 옵션을 설명하려면 다음 예를 고려하십시오. 이 항목은 내 시스템에서 가져온 것이며 두 개의 CUPS 포트를 보여줍니다.
cupsd 855 root 9u IPv6 25870 0t0 TCP localhost:ipp (LISTEN)
cupsd 855 root 10u IPv4 25871 0t0 TCP localhost:ipp (LISTEN)
포트가 ipp
인터넷 인쇄 프로토콜로 지정되어 있음을 알 수 있습니다. 다시 숫자로 변환하려면 -P
다음 옵션을 사용하세요.
cupsd 855 root 9u IPv6 25870 0t0 TCP localhost:631 (LISTEN)
cupsd 855 root 10u IPv4 25871 0t0 TCP localhost:631 (LISTEN)
호스트 이름은 여기에 localhost로 표시됩니다. 대규모 네트워크에서는 lsof
조회를 통해 호스트 이름을 나열하려는 노력이 이루어질 것입니다. 최적화로 호스트 이름 확인 단계 건너뛰기를 사용할 수 있습니다 -n
. 사용하면 -n
호스트 이름 대신 IP 주소가 표시됩니다.
cupsd 855 root 9u IPv6 25870 0t0 TCP [::1]:631 (LISTEN)
cupsd 855 root 10u IPv4 25871 0t0 TCP 127.0.0.1:631 (LISTEN)
그런데 저는 이 ss
명령을 사용하여 수신 포트를 추적하는 것을 좋아합니다. 내가 일반적으로 사용하는 구문은 ss -ltnp
1) 수신 포트 표시, 2) TCP 포트만 표시, 3) 호스트 이름을 조회하지 않음, 4) 프로세스 ID 표시를 의미합니다. 결과는 다음과 같습니다(동일한 CUPS 포트).
LISTEN 0 5 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=855,fd=10))
LISTEN 0 5 [::1]:631 [::]:* users:(("cupsd",pid=855,fd=9))