[macos] Mac OS X에서 주어진 TCP 포트를 듣고있는 사람은 누구입니까?

리눅스에서 내가 사용할 수 있습니다 netstat -pntl | grep $PORT또는 fuser -n tcp $PORT(PID) 지정된 TCP 포트에서 수신되는 과정을 알아. Mac OS X에서 동일한 정보를 얻으려면 어떻게합니까?



답변

macOS High Sierra 이상에서 다음 명령을 사용하십시오.

lsof -nP -iTCP:$PORT | grep LISTEN

또는 단지 IPv4 만 보려면 :

lsof -nP -i4TCP:$PORT | grep LISTEN

이전 버전에서는 다음 형식 중 하나를 사용하십시오.

lsof -nP -iTCP:$PORT | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

$PORT포트 번호 또는 쉼표로 구분 된 포트 번호 목록으로 대체 하십시오.

sudo# 1024 미만의 포트에 대한 정보가 필요한 경우 앞에 추가하십시오 (공백 이옵니다 ).

-n플래그는 호스트 이름 대신 IP 주소를 표시하기위한 것입니다. 호스트 이름을 얻기위한 DNS 조회가 느려질 수 있기 때문에 (많은 호스트의 경우 몇 초 또는 1 분) 명령이 훨씬 빠르게 실행됩니다.

-P플래그는 원시 포트 번호 대신 같은 확인 된 이름 표시하기위한 것입니다 http, ftp또는 같은 난해한 서비스 이름을 dpserve, socalia.

더 많은 옵션에 대해서는 주석을 참조하십시오.

자주 함께 사용되므로 완전성을 위해 :

PID를 종료하려면

kill -9 <PID>
# kill -9 60401


답변

Snow Leopard (10.6), 최대 Mojave (10.14) 및 Catalina (10,15) 부터 macOS의 모든 버전은 다음을 지원합니다.

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

개인적으로 나는이 간단한 기능으로 끝났습니다 ~/.bash_profile.

listening() {
    if [ $# -eq 0 ]; then
        sudo lsof -iTCP -sTCP:LISTEN -n -P
    elif [ $# -eq 1 ]; then
        sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
    else
        echo "Usage: listening [pattern]"
    fi
}

그런 다음 listeningcommand는 일부 포트에서 수신 대기하는 프로세스 목록을 제공 listening smth하고 일부 패턴에 대해 grep합니다.

이를 통해 특정 프로세스 (예 : listening dropbox포트 또는 포트)를 쉽게 물어볼 수 listening 22있습니다.

lsofcommand에는 포트, 프로토콜, 프로세스 등을 묻는 몇 가지 특수 옵션이 있지만 개인적으로 위의 기능을 훨씬 더 편리하게 찾을 수 있습니다.이 모든 하위 수준 옵션을 기억할 필요가 없기 때문입니다. lsof매우 강력한 도구이지만 불행히도 사용하기에 편안하지 않습니다.


답변

다음을 사용할 수도 있습니다.

sudo lsof -i -n -P | grep TCP

이것은 매버릭스에서 작동합니다.


답변

2016 년 1 월 업데이트

아무도 제안하지 않은 것이 놀랍습니다.

lsof -i :PORT_NUMBER

필요한 기본 정보를 얻습니다. 예를 들어 포트 1337을 확인하십시오.

lsof -i :1337

상황에 따라 다른 변형 :

sudo lsof -i :1337
lsof -i tcp:1337

PID 자체를 추출하기 위해이를 쉽게 구축 할 수 있습니다. 예를 들면 다음과 같습니다.

lsof -t -i :1337

또한이 명령과 동일합니다.

lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID

빠른 그림 :

여기에 이미지 설명을 입력하십시오

자주 함께 사용되므로 완전성을 위해 :

PID를 종료하려면

kill -9 <PID>
# kill -9 60401

또는 하나의 라이너로 :

kill -9 $(lsof -t -i :1337)


답변

이것은 Mavericks (OSX 10.9.2)에서 작동합니다.

sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN


답변

LISTEN, ESTABLISHED 및 CLOSED 포트

sudo lsof -n -i -P | grep TCP

LISTEN 포트만

sudo lsof -n -i -P | grep LISTEN

특정 LISTEN 포트의 경우 예 : 포트 80

sudo lsof -n -i -P | grep ':80 (LISTEN)'

또는 간단한 요약 [서비스 / 앱 설명 없음]을 원하면 NETSTAT로 이동하십시오. 여기서 좋은 점은 sudo가 필요 없다는 것입니다.

netstat -a -n | grep 'LISTEN '

사용 된 항목 설명 :

-n 호스트 이름을 억제합니다

IPv4 및 IPv6 프로토콜의 경우 -i

-P 포트 이름을 생략

모든 소켓에 대해 -a [over netstat]

-n [over netstat]는 이름을 확인하지 않고 네트워크 주소를 숫자로 표시합니다.

High Sierra 10.13.3 및 Mojave 10.14.3 에서 테스트

  • 마지막 구문 netstat 는 Linux에서도 작동합니다.

답변

OS X에서 netstat에 -v 옵션을 사용하여 연관된 pid를 제공 할 수 있습니다.

유형:

netstat -anv | grep [.]PORT

출력은 다음과 같습니다.

tcp46      0      0  *.8080                 *.*                    LISTEN      131072 131072   3105      0

PID는 마지막 열 이전의 숫자입니다 (이 경우 3105).