리눅스에서 내가 사용할 수 있습니다 netstat -pntl | grep $PORT
또는 fuser -n tcp $PORT
(PID) 지정된 TCP 포트에서 수신되는 과정을 알아. Mac OS X에서 동일한 정보를 얻으려면 어떻게합니까?
netstat -anv
는 Mac OS X에 포트를 표시합니다 (출처 : @SeanHamiliton의 솔루션)
리눅스에서 내가 사용할 수 있습니다 netstat -pntl | grep $PORT
또는 fuser -n tcp $PORT
(PID) 지정된 TCP 포트에서 수신되는 과정을 알아. Mac OS X에서 동일한 정보를 얻으려면 어떻게합니까?
netstat -anv
는 Mac OS X에 포트를 표시합니다 (출처 : @SeanHamiliton의 솔루션)
답변:
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
sudo
소유하지 않은 프로세스를 보려면 접두사를 붙 입니다.
sudo lsof -i TCP:$PORT | grep LISTEN
grep
.sudo lsof -iTCP:$PORT -sTCP:LISTEN
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
}
그런 다음 listening
command는 일부 포트에서 수신 대기하는 프로세스 목록을 제공 listening smth
하고 일부 패턴에 대해 grep합니다.
이를 통해 특정 프로세스 (예 : listening dropbox
포트 또는 포트)를 쉽게 물어볼 수 listening 22
있습니다.
lsof
command에는 포트, 프로토콜, 프로세스 등을 묻는 몇 가지 특수 옵션이 있지만 개인적으로 위의 기능을 훨씬 더 편리하게 찾을 수 있습니다.이 모든 하위 수준 옵션을 기억할 필요가 없기 때문입니다. lsof
매우 강력한 도구이지만 불행히도 사용하기에 편안하지 않습니다.
-pntl
합니다. 모든 서비스가 나열됩니다. 허용 된 답변은 하나 이상의 포트 번호를 지정하도록 요청합니다. 이는 원격으로 동일하지 않습니다.
다음을 사용할 수도 있습니다.
sudo lsof -i -n -P | grep TCP
이것은 매버릭스에서 작동합니다.
-i
옵션을 사용하면 훨씬 빨라집니다. 0.02 초 대 2 초 내 응용 프로그램에서 이것은 큰 차이를 만들었습니다.
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)
lsof -t -i :1338
. -t
프로세스 ID를 반환하므로 awk / head 할 필요가 없습니다.
kill -9 $(lsof -t -i :5000)
엘 캐피 탄
whatsonport() { ps -ef | grep `lsof -t -i :$1` }
, 그래서 :⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
lsof -i :PORT_NUMBER
나를 위해 일을했다.
이것은 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).
grep LISTEN
리스너 만 표시하려면 추가해야합니다 .
lsof
포트를 찾을 수 없습니다. 그러나 netstat
그것이 열려 있음을 보여주었습니다. -v
내가 부족했던 비밀 소스였습니다.
macOS에서는 netstat 을 사용하여 특정 포트에서 수신 대기하는 프로세스 ID를 얻는 쉬운 방법이 있습니다. 이 예제는 포트 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 모드의 포트, 즉 서버에 대해서만 정보 제공
최신 macOS 버전에서는 다음 명령을 사용할 수 있습니다.
lsof -nP -i4TCP:$PORT | grep LISTEN
기억하기 어려운 경우 bash
함수를 작성 하고 친숙한 이름으로 내 보내야합니다.
vi ~/.bash_profile
그런 다음 해당 파일에 다음 줄을 추가하고 저장하십시오.
function listening_on() {
lsof -nP -i4TCP:"$1" | grep LISTEN
}
이제 listening_on 80
터미널에 입력 하고 포트에서 수신중인 프로세스를 확인할 수 있습니다 80
.
lsof -n -i | awk '{ print $1,$9; }' | sort -u
누가 무엇을하고 있는지 표시합니다. 호스트 이름을 보려면 -n을 제거하십시오 (약간 느림).
If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
-sTCP:LISTEN
로lsof
나는 어디에서 누가 듣고 있는지를 알 수있을뿐만 아니라 확립 된 연결과 어떤 국가를 표시 할 수있는 작은 스크립트를 만들었습니다. 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)
북한에 연결되어 있는지 확인하는 데 유용 할 수 있습니다! ;-)
이것은 macOS High Sierra에서 좋은 방법입니다.
netstat -an |grep -i listen
netstat -p tcp | grep $PORT
맥 OS X에 NETSTAT는 PID를 표시 할 수 없기 때문에 PID를 표시하지 않습니다.