[macos] Mac의 터미널에서 열린 포트를 어떻게 닫습니까?

클라이언트와 통신하기 위해 Java 클래스에서 포트 # 5955를 열었습니다. 완료 후이 포트를 어떻게 닫습니까? 또한 포트가 열려 있거나 닫혀 있으면 어떤 명령이 표시 될 수 있습니까?



답변

  1. 해제하려는 포트 번호 (예 : 5955)를 차지하는 프로세스 ID (PID)를 찾으십시오.

    sudo lsof -i :5955
    
  2. PID를 사용하여 현재 포트를 사용중인 프로세스를 종료하십시오.

    sudo kill -9 PID
    

답변

프로세스를 찾으려면 다음을 수행하십시오.

sudo lsof -i :portNumber

PID를 사용하여 현재 포트를 사용중인 프로세스를 종료하십시오.

kill PID

포트가 닫혔는지 확인하십시오. 그렇지 않은 경우 다음을 시도하십시오.

kill -9 PID

이전에 작동하지 않은 경우에만 다음을 수행합니다.

sudo kill -9 PID

안전합니다. 포트를 여는 방법에 따라이 문제는 중요하지 않을 수 있습니다.


답변

그러나 포트를 열었을 때 같은 방식으로 닫습니다. 예를 들어, 소켓을 작성하여 포트 0.0.0.0:5955에 바인드하고 청취라고하는 경우 동일한 소켓을 닫으십시오.

포트가 열린 프로세스를 종료 할 수도 있습니다.

포트가 열려있는 프로세스를 찾으려면 다음을 시도하십시오.

lsof -i :5955

포트가 열려 있는지 확인하려면 동일한 lsof 명령을 수행하거나 (프로세스가 열려 있으면 열려 있고 그렇지 않은 경우) 아니면 연결하려고 할 수 있습니다 (예 :

nc localhost 5955

출력없이 즉시 반환되면 포트가 열려 있지 않은 것입니다.

기술적으로 말해서 개방 된 포트가 아니라 호스트 : 포트 조합입니다. 예를 들어 LAN에 10.0.1.2로 연결된 경우 소켓을 다른 소켓에 영향을주지 않고 127.0.0.1:5955 또는 10.0.1.2:5955에 소켓을 바인딩하거나 0.0.0.0에 바인딩 할 수 있습니다. : 5955를 동시에 처리합니다. 이 ifconfig명령으로 컴퓨터의 모든 IPv4 및 IPv6 주소를 볼 수 있습니다 .


답변

매우 간단한 포트 5900 찾기 :

sudo lsof -i :5900

그런 다음 59553을 PID로 고려하십시오.

sudo kill 59553


답변

2018 년에 MacOS HighSierra를 사용하여 나를 위해 일한 것은 다음과 같습니다.

sudo lsof -nPi : yourPortNumber

그때:

sudo kill -9 yourPID 번호


답변

하나의 라이너가 최고

kill -9 $(lsof -i:PORT -t) 2> /dev/null

예 : Mac에서 포트 9604를 지우고 싶었습니다. 다음 명령은 참처럼 작동했습니다.

 kill -9 $(lsof -i:9604 -t) 2> /dev/null


답변

이 첫 번째 명령을 사용하여 특정 포트를 소유 한 프로세스를 종료 할 수도 있습니다.

sudo netstat -ap | grep :<port_number>

예를 들어이 프로세스에 포트가 있다고 가정하십시오. 8000 TCP를다음 명령을 실행.

sudo netstat -ap | grep :8000

프로세스 홀딩 포트에 해당하는 라인을 출력합니다 8000에.

tcp  0  0 *:8000   *:* LISTEN  4683/procHoldingPort

이 경우 procHoldingPort 는 포트를 연 프로세스의 이름입니다. 4683 은 pid이며 8000입니다. (TCP 임)은 보유하고있는 포트 번호입니다 (닫고 자 함).

그런 다음 위의 예제에 따라 프로세스를 종료하십시오.

kill  4683

다른 사람들이 여기에 언급했듯이, 그래도 작동하지 않으면 (-9를 인수로 사용하여 kill을 시도 할 수 있습니다)

kill -9 4683

다시 말하지만 일반적으로 가능하면 SIGKILL (-9)을 보내지 않는 것이 좋습니다.

건배,

사람.