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.