OS X에서 일부 포트를 수신하는 특정 프로세스의 PID가 있으며이 프로세스가 수신하는 포트를 알아야합니다. 어떻게하니?
lsof
어떤 프로세스가 어떤 포트를 수신하고 있는지 알기 위해 사용할 수 있지만 역 연산을 수행해야합니다.
감사합니다.
UPD
OS X은 BSD utils를 사용하므로 netstat
Linux 가 아닌 BSD 가 netstat
있습니다. 리눅스 netstat
는 -p
PID를 보여줄 수있는 옵션을 가지고 있으며 , BSD netstat
는 -p
포트를 지정할 때 사용 하며 PID를 보여줄 수있는 옵션이 없습니다.
답변
나는 깊은 독서를 통해 스스로 해결책을 찾았습니다 man lsof
. (예, RT * M이 여전히 도움이됩니다.) 조준 해 주셔서 감사합니다.
해결책은 다음과 같습니다 lsof -aPi -p 555
(555는 PID입니다).
설명:
-p
PID 번호를 지정합니다.-i
네트워크 장치 만 표시합니다.-a
위의 두 가지 조건을 AND로 (그렇지 않으면 OR로 표시됨);-P
기본적으로 포트 이름 대신 포트 번호를 표시합니다.
또한, lsof -aPi4 -p 555
또는lsof -aPi6 -p 55
IPv4 또는 IP6 만 따라 해결합니다.
다른 프로그램 -Fn
옵션으로 출력을 구문 분석하는 경우 도움이 될 수 있습니다. 이 옵션 lsof
을 사용하면 멋진 형식의 출력 대신 “다른 프로그램의 출력”이 생성됩니다. lsof -aPi4 -Fn -p 555
다음과 같이 출력됩니다 :
p554
nlocalhost:4321
추신 :
OS X El Capitan에서 테스트했지만 Linux에서도 작동합니다.
답변
lsof
네트워크 포트를 포함하여 프로세스가 연 파일에 대한 정보를 제공합니다. OSX를 포함한 거의 모든 유닉스 시스템에서 사용할 수 있습니다 .
유닉스에 대한 로제타 스톤 OSX의 “파일이나 포트에 일치 과정”에 대한 다른 도구를 나열하지 않습니다.
TCP 포트에서 수신 대기중인 프로세스를 나열하려면 다음을 사용할 수 있습니다.
lsof -iTCP -sTCP:LISTEN
lsof -iUDP
UDP 소켓이 열린 프로세스를 나열합니다. lsof -i
모든 개방형 네트워크 소켓 (TCP 클라이언트, TCP 서버 및 기타 IP 프로토콜)을 나열합니다.
답변
어떤 포트가 수신 대기 중인지 알고 싶다면 netstat의 -p 옵션을 사용할 수 있습니다. 수퍼 유저 여야합니다.
$ sudo netstat -nlp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx
그것에 대해 더 알고 싶다면이 링크를 사용해보십시오.
답변
FreeBSD에서는 sockstat
이 정보를 사용할 수 있습니다 . sockstat
Mac이 없기 때문에 OS X에을 가지고 있는지 확실 하지 않습니다.
예를 들어, 모든 TCPv4 연결을 보려면
sockstat -4
답변
netstat를 grep, awk 및 sed와 연결하여 Linux 및 Cygwin에서 해당 pid와 함께 포트를 표시 할 수 있습니다.
$ netstat -ano | grep LISTENING | grep -v ‘\[::\]’ | sort -n | uniq -c | awk ‘ {print $3 “\t” $6}’ | sed ‘s/.*://’