lsof 및 청취 포트


50

Mac OS X에서 네트워크 연결을 수신하는 모든 프로세스를 얻으려고 netstat합니다. -p옵션 이 없으며 lsof로 시도하고 있습니다.

lsof -i -sTCP:LISTEN

청취 프로세스의 공정한 목록을 제공하지만 전부는 아닙니다. 예를 들어 연결을 수신하는 프로세스가있는 포트 10080에 대한 텔넷을 수행 할 수 있지만이 출력에는 표시되지 않습니다 lsof. 내가 무엇을 놓치고 있습니까?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

그러나

$ sudo lsof -n -i | grep 10080
$

3
lsof의 결과 amanda가 10080 대신 말하는가 ?
Jon Lin

3
@ JonLin 나는 -n포트가 아닌 주소에만 영향을 미친다 는 것을 알지 못했습니다 . 포트 번호 를 얻으려면 -P너무 사용해야 합니다. 감사합니다
Matteo

3
@ JonLin :하지만 당신은 post를 가지고 lsof -i -sTCP:LISTEN있으며 그것 없이는 -n10080도 공개하지 않았습니다. 따라서를 사용해야합니다 -P.
Hanan N.

답변:


75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

모두 ... | wc -l많이 사용 된 Lion MBP 에서 동일한 32 개의 항목 ( )을 반환합니다 .

-P -nlsof이름 확인을 방해 하지 않으며 차단하지 않습니다. 이 중 하나가 없으면 매우 느려질 수 있습니다.

UDP의 경우 : sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. -n및이 없으면 -P시간이 오래 걸립니다.

알림 : 방화벽 설정은 포함되어 있지 않습니다.


3
그렇습니다. 문제는 실종 된 것 -P입니다. -nIP뿐만 아니라 포트 번호에도 적용 되었다고 잘못 가정했습니다 .
Matteo

-1
  1. 먼저 필요한 포트 (예 : 5434)를 점유 한 프로세스 ID (pid)를 찾으십시오.

    ps aux | grep 5434
    
  2. 그 과정을 죽여라 :

    kill -9 <pid>
    

5
ps aux프로세스가 사용중인 포트를 나열하지 않음
Matteo

Matteo에 동의합니다. netstat -anp와 같은 작업을 수행하지 않았습니까? grep 5434 (5434에서 청취중인 항목의 목록을 리턴하며 첫 번째 또는 두 번째 열은 pid입니까?)
Foon

6
따라서 프로세스가 실행 문자열에 명시 적으로 지정된 포트 번호로 호출되고 문자열의 해당 부분이 grep과 일치하는 상황에서만 작동 할 수 있습니다.
techraf

1
kill -9프로세스를 제거하기위한 첫 번째 옵션으로 사용 하는 것은 극단적 인 선택입니다. 또한 이것은 실제로 질문에 대답하지 않으며, 이는 사물을 죽이는 것이 아니라 실행중인 것을 찾는 것입니다.
lindes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.