여러 컴퓨터에서 이 문제가 발생했습니다. 차단된 포트를 해제할 수 있는 방법이 있나요? 예는 다음과 같습니다.
설명하겠습니다. 일부 포트가 열려 있는 SUSE Linux Enterprise Server 11 SP4에서 일부 JAVA 프로세스를 종료했습니다. 루트 사용자에 대해 "kill -9" 명령을 사용했습니다. 이제 포트가 여전히 차단되어 있으므로 프로세스를 다시 시작할 수 없습니다. 포트가 열려 있는 동안 애플리케이션이 종료됩니다. 그러나 그 과정은 확실히 사라졌습니다!
명령을 사용하여(루트 사용자도 사용하여) 보면
netstat -anop | grep -E "Sta|37941"
다음과 같은 결과를 얻습니다.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
[...]
tcp 0 0 172.21.63.27:42034 172.21.63.28:37941 ESTABLISHED - keepalive (2861.75/0/0)
[...]
PID가 표시되지 않습니다! 프로세스를 종료하기 전에 프로세스의 PID를 표시합니다. 이러한 "죽은" 포트를 해제할 수 있는 방법이 있습니까? 애플리케이션을 다시 시작하려면 항상 운영 체제를 다시 시작해야 합니다. 하지만 이는 고가용성 시스템에 있어 매우 중요합니다. 그러면 나중에 프로세스를 종료해야 한다면 어떻게 될까요? 이 문제는 과거에 다른 UNIX 운영 체제에서도 발생했습니다.
앞으로 이 문제를 해결하는 데 도움을 주시면 감사하겠습니다. 미리 모두 감사드립니다!
답변1
어떤 프로세스(PID 포함)가 포트를 사용하고 있는지 확인하세요.
netstat -tupln |grep ":<Your_Port_Here>"
그런 다음 PID(근처 프로세스 이름)를 정상적으로 종료합니다. 매개변수와 함께 kill 명령을 사용하지 마십시오.
kill <pid>
참고: 한 번도 시도해 본 적이 없다면 반대 투표를 하지 마세요!