클라이언트와 통신하기 위해 Java 클래스에서 포트 # 5955를 열었습니다. 완료 후이 포트를 어떻게 닫습니까? 또한 포트가 열려 있거나 닫혀 있으면 어떤 명령이 표시 될 수 있습니까?
클라이언트와 통신하기 위해 Java 클래스에서 포트 # 5955를 열었습니다. 완료 후이 포트를 어떻게 닫습니까? 또한 포트가 열려 있거나 닫혀 있으면 어떤 명령이 표시 될 수 있습니까?
답변:
해제하려는 포트 번호 (예 : 5955)를 차지하는 프로세스 ID (PID)를 찾으십시오.
sudo lsof -i :5955
PID를 사용하여 현재 포트를 사용중인 프로세스를 종료하십시오.
sudo kill -9 PID
kill PID
-15를 의미하는 -2와 -1을 사용해보십시오. -9는 다른 모든 옵션이 작동하지 않는 경우에만 최후의 수단 입니다.
그러나 포트를 열었을 때 같은 방식으로 닫습니다. 예를 들어, 소켓을 작성하여 포트 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 주소를 볼 수 있습니다 .
2018 년에 MacOS HighSierra를 사용하여 나를 위해 일한 것은 다음과 같습니다.
sudo lsof -nPi : yourPortNumber
그때:
sudo kill -9 yourPID 번호
lsof -nPi
포트 번호가 실제로 출력에 표시되고 죽이는 것에 대한 느낌이 좋아지기 때문에 약간 더 좋습니다.
sudo lsof -nPi | grep LISTEN
이 첫 번째 명령을 사용하여 특정 포트를 소유 한 프로세스를 종료 할 수도 있습니다.
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)을 보내지 않는 것이 좋습니다.
건배,
사람.
나는 lsof
함께 사용kill
위에서 언급했듯이 . 그러나이 과정을 자동화하기 위해 빠른 작은 bash 스크립트를 작성했습니다.
이 스크립트를 사용하면 killport 3000
어디에서나 간단히 입력 할 수 있으며 포트에서 실행중인 모든 프로세스가 종료됩니다.3000
.
lsof
와 함께 kill
아무것도 반환하지 않고 macOS Sierra에서 스크립트를 중단했습니다. 그러나 killport
매력처럼 작동하고 더 빠릅니다. 감사!
이 목적을 위해 함수를 만들었습니다.
function free_port() {
if [ -z $1 ]
then
echo no Port given
else
PORT=$1;
PID=$(sudo lsof -i :$PORT) # store the PID, that is using this port
if [ -z $PID ]
then
echo port: $PORT is already free.
else
sudo kill -9 $PID # kill the process, which frees the port
echo port: $PORT is now free.
fi
fi
}
free_port 80 # you need to change this port number
이 코드 블록을 터미널에 복사하여 붙여 넣으면 원하는 포트가 해제됩니다. 마지막 줄에서 포트 번호를 변경하십시오.