etc./StackOverFlow

Mac OS X의 지정된 TCP 포트에서 누가 듣고 있습니까?

청렴결백한 만능 재주꾼 2022. 1. 8. 01:38
반응형

질문자 :pts


Linux에서는 netstat -pntl | grep $PORT 또는 fuser -n tcp $PORT 지정된 TCP 포트에서 어떤 프로세스(PID)가 수신 대기 중인지 확인합니다. Mac OS X에서 동일한 정보를 얻으려면 어떻게 해야 합니까?



macOS Big Sur 및 이후 버전에서는 다음 명령을 사용합니다.

 sudo lsof -i -P | grep LISTEN

또는 IPv4만 보려면:

 sudo lsof -nP -i4TCP:$PORT | grep LISTEN

이전 버전에서는 다음 형식 중 하나를 사용합니다.

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

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

#1024 미만의 포트에 대한 정보가 필요한 경우 앞에 sudo

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

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

더 많은 옵션은 댓글을 참조하세요.

완전성을 위해 자주 함께 사용되기 때문에:

PID를 죽이려면:

 sudo kill -9 <PID> # kill -9 60401

pts

Snow Leopard 부터 Catalina 및 Big Sur 까지 모든 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 }

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

이를 통해 특정 프로세스(예: listening dropbox 또는 포트(예: listening 22 대해 묻는 것이 매우 쉽습니다.

lsof 명령에는 포트, 프로토콜, 프로세스 등에 대해 묻는 몇 가지 특수 옵션이 있습니다. 그러나 개인적으로 이러한 저수준 옵션을 모두 기억할 필요가 없기 때문에 위의 기능이 훨씬 더 편리하다는 것을 알았습니다. lsof 는 매우 강력한 도구이지만 불행히도 사용하기가 그렇게 편하지는 않습니다.


Michał Kalinowski

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

 sudo lsof -i -n -P | grep TCP

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


Rog182

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)

arcseldon

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

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

Charley Wu

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 호스트 이름을 억제합니다.

-i IPv4 및 IPv6 프로토콜용

-P 포트 이름 생략

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

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

High Sierra 10.13.3 및 Mojave 10.14.3에서 테스트됨

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

PYK

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

유형:

 netstat -anv | grep [.]PORT

출력은 다음과 같습니다.

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

PID는 마지막 열 앞의 숫자이며 이 경우 3105입니다.


Sean Hamilton

macOS에서 netstat 를 사용하여 특정 포트에서 수신 대기하는 프로세스 ID를 얻는 쉬운 방법은 다음과 같습니다. 이 예에서는 포트 80에서 콘텐츠를 제공하는 프로세스를 찾습니다.

포트 80에서 실행 중인 서버 찾기

 netstat -anv | egrep -w [.]80.*LISTEN

샘플 출력

 tcp4 0 0 *.80 *.* LISTEN 131072 131072 715 0

마지막 열에서 두 번째는 PID입니다. 위의 경우 715 입니다.

옵션

-a - 서버에서 사용하는 포트를 포함하여 모든 포트 표시

-n - 숫자를 표시하고 이름을 조회하지 않습니다. 이것은 명령을 훨씬 빠르게 만듭니다.

-v - 자세한 출력, 프로세스 ID 가져오기

-w - 검색어. 그렇지 않으면 명령은 "80"뿐만 아니라 포트 8000 및 8001에 대한 정보를 반환합니다.

LISTEN - LISTEN 모드의 포트(예: 서버)에 대한 정보만 제공


johntellsall

최신 macOS 버전에서는 다음 명령을 사용할 수 있습니다.

 lsof -nP -i4TCP:$PORT | grep LISTEN

기억하기 어렵다면 bash 함수를 만들고 다음과 같이 더 친숙한 이름으로 내보내야 합니다.

 vi ~/.bash_profile

그런 다음 해당 파일에 다음 줄을 추가하고 저장합니다.

 function listening_on() { lsof -nP -i4TCP:"$1" | grep LISTEN }

이제 listening_on 80 80 에서 어떤 프로세스가 수신 대기하는지 확인할 수 있습니다.


arturgrigor

Snow Leopard(OS X 10.6.8)에서 'man lsof'를 실행하면 다음이 생성됩니다.

 lsof -i 4 -a

(실제 수동 입력은 'lsof -i 4 -a -p 1234')

이전 답변은 Snow Leopard에서 작동하지 않았지만 pts의 답변에서 'lsof'를 사용하는 것을 볼 때까지 'netstat -nlp'를 사용하려고 했습니다.


Brent Self

저는 리눅스 사람입니다. netstat -ltpn 또는 이러한 문자의 조합을 사용하면 매우 쉽습니다. 그러나 Mac OS X에서는 netstat -an | grep LISTEN 이 가장 인간적입니다. 다른 것들은 문제를 해결할 때 매우 못생기고 기억하기가 매우 어렵습니다.


edib

lsof -n -i | awk '{ print $1,$9; }' | sort -u

이것은 누가 무엇을 하고 있는지를 표시합니다. 호스트 이름을 보려면 -n을 제거하십시오(약간 느림).


Misha Tavkhelidze

이것은 내가 필요로하는 것을했습니다.

 ps -eaf | grep `lsof -t -i:$PORT`

Frank

나는 누가 어디에서 듣고 있는지뿐만 아니라 확립 된 연결과 국가를 표시하기 위해 작은 스크립트를 만들었습니다. OSX 시에라에서 작동

 #!/bin/bash printf "\nchecking established connections\n\n" for i in $(sudo lsof -i -n -P | grep TCP | grep ESTABLISHED | grep -v IPv6 | grep -v 127.0.0.1 | cut -d ">" -f2 | cut -d " " -f1 | cut -d ":" -f1); do printf "$i : " & curl freegeoip.net/xml/$i -s -S | grep CountryName | cut -d ">" -f2 | cut -d"<" -f1 done printf "\ndisplaying listening ports\n\n" sudo lsof -i -n -P | grep TCP | grep LISTEN | cut -d " " -f 1,32-35 #EOF

 Sample output checking established connections 107.178.244.155 : United States 17.188.136.186 : United States 17.252.76.19 : United States 17.252.76.19 : United States 17.188.136.186 : United States 5.45.62.118 : Netherlands 40.101.42.66 : Ireland 151.101.1.69 : United States 173.194.69.188 : United States 104.25.170.11 : United States 5.45.62.49 : Netherlands 198.252.206.25 : United States 151.101.1.69 : United States 34.198.53.220 : United States 198.252.206.25 : United States 151.101.129.69 : United States 91.225.248.133 : Ireland 216.58.212.234 : United States displaying listening ports mysqld TCP *:3306 (LISTEN) com.avast TCP 127.0.0.1:12080 (LISTEN) com.avast TCP [::1]:12080 (LISTEN) com.avast TCP 127.0.0.1:12110 (LISTEN) com.avast TCP [::1]:12110 (LISTEN) com.avast TCP 127.0.0.1:12143 (LISTEN) com.avast TCP [::1]:12143 (LISTEN) com.avast TCP 127.0.0.1:12995 (LISTEN) com.avast [::1]:12995 (LISTEN) com.avast 127.0.0.1:12993 (LISTEN) com.avast [::1]:12993 (LISTEN) Google TCP 127.0.0.1:34013 (LISTEN)

이것은 당신이 북한에 연결되어 있는지 확인하는 데 유용할 수 있습니다! ;-)


0x00

사용자 Brent Self에서 영감:

lsof -i 4 -a | grep LISTEN


Punnerud

macOS의 경우 두 개의 명령을 함께 사용하여 시스템에서 수신 대기하는 프로세스와 원격 서버에 연결하는 프로세스에 대한 정보를 표시합니다. 즉, 호스트의 수신 포트와 현재(TCP) 연결을 확인하려면 다음 두 명령을 함께 사용할 수 있습니다.

 1. netstat -p tcp -p udp 2. lsof -n -i4TCP -i4UDP

내 의견을 추가할 것이라고 생각했는데, 결국 누군가를 도울 수 있기를 바랍니다.


Boschko

이것은 macOS High Sierra에서 좋은 방법입니다.

 netstat -an |grep -i listen

tr4nc3

이 프로젝트/도구 체크아웃: procs

MacO에 설치: brew install procs

procs 로 표시할 내용을 제어할 수 있습니다.

TCP/UDP 포트를 보려면 도구를 설치한 후 ~/.procs.toml

 [[columns]] kind = "TcpPort" style = "BrightYellow|Yellow" numeric_search = true nonnumeric_search = false align = "Left" [[columns]] kind = "UdpPort" style = "BrightGreen|Green" numeric_search = false nonnumeric_search = true align = "Left"

다음은 샘플 출력입니다.

여기에 이미지 설명 입력


Robert Ranjan

출처 : http:www.stackoverflow.com/questions/4421633/who-is-listening-on-a-given-tcp-port-on-mac-os-x

반응형