특정 PID가 수신하는 포트를 확인하는 방법은 무엇입니까? 연산을 수행해야합니다. 감사합니다. UPD OS

OS X에서 일부 포트를 수신하는 특정 프로세스의 PID가 있으며이 프로세스가 수신하는 포트를 알아야합니다. 어떻게하니?

lsof어떤 프로세스가 어떤 포트를 수신하고 있는지 알기 위해 사용할 수 있지만 역 연산을 수행해야합니다.

감사합니다.

UPD

OS X은 BSD utils를 사용하므로 netstatLinux 가 아닌 BSD 가 netstat있습니다. 리눅스 netstat-pPID를 보여줄 수있는 옵션을 가지고 있으며 , BSD netstat-p포트를 지정할 때 사용 하며 PID를 보여줄 수있는 옵션이 없습니다.



답변

나는 깊은 독서를 통해 스스로 해결책을 찾았습니다 man lsof. (예, RT * M이 여전히 도움이됩니다.) 조준 해 주셔서 감사합니다.

해결책은 다음과 같습니다 lsof -aPi -p 555 (555는 PID입니다).

설명:

  1. -p PID 번호를 지정합니다.
  2. -i 네트워크 장치 만 표시합니다.
  3. -a 위의 두 가지 조건을 AND로 (그렇지 않으면 OR로 표시됨);
  4. -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 -iUDPUDP 소켓이 열린 프로세스를 나열합니다. 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이 정보를 사용할 수 있습니다 . sockstatMac이 없기 때문에 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/.*://’

자세한 내용은


답변