lsof 및 수신 포트

lsof 및 수신 포트

Mac OS X에서 네트워크 연결을 수신하도록 모든 프로세스를 얻으려고 합니다. netstat해당 옵션이 없으면 -plsof를 사용하려고 합니다.

lsof -i -sTCP:LISTEN

나에게 청취 세션의 공정한 목록을 제공했지만 전부는 아닙니다. 예를 들어, 연결을 수신하는 프로세스가 있는 포트 10080에 텔넷을 연결할 수 있지만 이것이 표시되지 않습니다 lsof. 무엇을 놓치고 있습니까?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

하지만

$ sudo lsof -n -i | grep 10080
$

답변1

sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

... | wc -l내가 정기적으로 사용하는 Lion MBP에서는 모두 동일한 32개 항목( )을 반환합니다.

-P -n이름 확인이 발생하지 않도록 lsof하며 차단하지 않습니다. 이들 중 어느 하나라도 없으면 속도가 매우 느려질 수 있습니다.

UDP의 경우: sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. -n합계가 없으면 -P시간이 오래 걸립니다.

알림: 여기에는 방화벽 설정이 포함되지 않습니다.

답변2

sudo lsof -nP -iTCP -sTCP:듣기

이 명령은 모든 네트워크 파일을 표시하고 TCP 프로토콜을 사용하여 열려 있는 모든 포트를 수신합니다.

sudo lsof -nP -iTCP: 5432-sTCP:LISTEN

이 명령은 수신 대기 중인 포트만 표시합니다.5432


답변3

저는 이 쉘 함수를 작성했습니다. 이를 붙여넣으면 ~/.bashrc멋진 보고서가 제공됩니다.

ports() {
    (
        echo 'PROC PID USER x IPV x x PROTO BIND PORT'
        (
            sudo lsof +c 15 -iTCP -sTCP:LISTEN -P -n | tail -n +2
            sudo lsof +c 15 -iUDP -P -n | tail -n +2 | egrep -v ' (127\.0\.0\.1|\[::1\]):'
        ) | sed -E 's/ ([^ ]+):/ \1 /' | sort -k8,8 -k5,5 -k1,1 -k10,10n
    ) | awk '{ printf "%-16s %-6s %-9s %-5s %-7s %s:%s\n",$1,$2,$3,$5,$8,$9,$10 }'
}

관련 정보