답변:
netstat -ap tcp | grep -i "listen"
Achive Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.25035 *.* LISTEN
sudo lsof -PiTCP -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
GitHub 850 grgarside 6u IPv4 0x23c345381d089301 0t0 TCP localhost:25035 (LISTEN)
sudo lsof ...
합니다. sudo가 없으면 lsof는 사용자가 소유 한 프로세스 만 볼 수 있으므로 시스템 프로세스가 연 포트를 표시하지 않습니다. 또한 lsof에게 LISTEN 상태의 포트만보고 싶다고 말함으로써 grep 명령을 건너 뛸 수 있습니다 sudo lsof -PiTCP -sTCP:LISTEN
.
grep -i "listen"
2 가지 예제 의 효과에주의하십시오 .
netstat
를 사용하면 각 포트를 연 프로세스의 pid를 선택적으로 나열 할 수 있습니다. BSD netstat
에서도 그 행동을 취할 수있는 방법이 있습니까?
-v
플래그를 켭니다. pid는 마지막 두 번째 열에 있습니다.
아마도 당신은 lsof를 사용할 수 있습니다 :
lsof -Pn -i4
-i4는 ipv4 주소 및 포트만 표시 함을 의미합니다. -P 및 -n 빠른 출력
이 같은 출력
➜ lsof -Pn -i4 | grep LISTEN
QQPlatfor 22767 xxxx 15u IPv4 0x36c2bfa04e49385d 0t0 TCP *:49969 (LISTEN)
GoAgentX 33377 xxxx 4u IPv4 0x36c2bfa06e68b12d 0t0 TCP *:56154 (LISTEN)
GoAgentX 33377 xxxx 20u IPv4 0x36c2bfa04e492f8d 0t0 TCP 127.0.0.1:56155 (LISTEN)
lsof
열린 파일을 나열합니다. 네트워크 소켓은 파일로 계산되므로 열려있는 각 네트워크 소켓 (듣거나 사용중인 활성)이에 나열됩니다 lsof
.
lsof -Pn -i6
for IPV6
-i4
IPv4 주소 만 보는 스위치입니다.
가장 간단한 방법은 다음을 사용하는 것입니다 netstat
.
$ netstat -ap tcp
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 10.0.2.23.58792 17.172.233.109.5223 ESTABLISHED
tcp4 87 0 my_iMac__at_home.55481 stackoverflow.co.http ESTABLISHED
tcp4 116 0 my_iMac__at_home.55478 stackoverflow.co.http ESTABLISHED
tcp4 58 0 my_iMac__at_home.63452 stackoverflow.co.http ESTABLISHED
tcp4 87 0 my_iMac__at_home.63429 stackoverflow.co.http ESTABLISHED
tcp4 0 0 localhost.63173 localhost.773 ESTABLISHED
tcp4 0 0 localhost.773 localhost.63173 ESTABLISHED
tcp4 0 0 localhost.63173 *.* LISTEN
tcp4 0 0 localhost.63172 *.* LISTEN
tcp4 0 0 localhost.ipp *.* LISTEN
tcp6 0 0 localhost.ipp *.* LISTEN
… 올바른 헤더를 얻고 두 서버의 수신 대기와 이미 양방향으로 설정된 연결을 확인하기 위해 필터링을 추가하지 않고도. 이 예에서 첫 번째 줄은 내 Mac에서으로의 연결을 보여줍니다
17.172.233.109
.
whois 17.172.233.109
그것이 애플에 있다고 가르쳐주었습니다.
첫째, 저는 BSD 전문가는 아니지만 OP와 마찬가지로 * nix 상자에서 다음을 실행하는 것과 동등한 것을 원했습니다.
netstat -tulpn
MacOS에서 lsof * 및 netstat *를 제공하는 다른 질문 / 응답을 읽었으며 여전히 더 컴팩트 한 출력을 원했습니다. 그래서 이것은 내가 함께 정리 한 것입니다.
netstat -Watnlv | grep LISTEN | awk '{"ps -o comm= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print cred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname; }' | column -t -s "|"
약간 과잉이므로 출력을 측정하기 위해 색상을 추가했습니다. 이 거대 함을 기억하거나 입력하고 싶지 않기 때문에. 나는 그것을 bash 함수에 넣은 다음 필요할 때 호출합니다. bash 함수는 다음과 같습니다.
macnst (){
netstat -Watnlv | grep LISTEN | awk '{"ps -o comm= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print colred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname; }' | column -t -s "|"
}
~ / .bash_profile 또는 ~ / .zshrc에서 제공하는 파일에 이러한 편의 함수의 작은 컬렉션이 있습니다. 컬렉션에 추가되고 있습니다. 이것을 더 좋고 희미하게 만드는 다른 기회를 보는 것이 흥미로울 것입니다.
샘플 출력 :
> macns
proto: tcp4 addr.port: 127.0.0.1.9999 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.35729 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.62087 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.62070 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.62085 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp4 addr.port: *.61993 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/MacOS/idea
proto: tcp46 addr.port: *.61992 pid: 70065 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.42329 pid: 70065 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.61983 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.63342 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.6942 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.3075 pid: 67931 name: /Applications/electerm.app/Contents/Frameworks/electerm Helper.app/Contents/MacOS/electerm Helper
proto: tcp6 addr.port: *.58640 pid: 320 name: /usr/libexec/rapportd
proto: tcp4 addr.port: *.58640 pid: 320 name: /usr/libexec/rapportd
proto: tcp4 addr.port: 127.0.0.1.9770 pid: 71 name: /Applications/Pritunl.app/Contents/Resources/pritunl-service
lsof
조금 더 좋습니다.