해당 소켓을 소유 한 프로세스를 종료하지 않으면 소켓을 닫을 수 없습니다. 소켓은 열린 프로세스에서 소유합니다. 따라서 유닉스 / 리눅스의 프로세스 ID (PID)를 찾으십시오. 다음과 같이 netstat를 사용하십시오.
netstat -a -n -p -l
다음과 같이 인쇄됩니다.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1879/sendmail: acce
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1860/xinetd
-a는 모든 소켓을 인쇄하고, -n은 포트 번호를, -p는 PID를, -l은 수신중인 항목 만 표시합니다 (이후에 따라 선택 사항 임).
실제 정보는 PID입니다. 이제 다음을 수행하여 해당 프로세스를 종료 할 수 있습니다.
kill 1879
서비스를 종료하는 경우 다음을 사용하는 것이 좋습니다.
service sendmail stop
Kill은 문자 그대로 해당 프로세스와 소유 한 모든 자식 만 죽입니다. service 명령을 사용하면 init.d 디렉토리에 등록 된 종료 스크립트가 실행됩니다. 서비스에서 kill을 사용하면 제대로 종료되지 않아 제대로 시작되지 않을 수 있습니다. 그것은 단지 서비스에 달려 있습니다.
불행히도 Mac은 이런 점에서 Linux / Unix와 다릅니다. netstat를 사용할 수 없습니다. Mac에 관심이 있다면이 튜토리얼을 읽으십시오.
http://www.tech-recipes.com/rx/227/find-out-which-process-is-holding-which-socket-open/
그리고 Windows를 사용하는 경우 TaskManager를 사용하여 프로세스를 종료하고 서비스 UI를 사용하여 서비스를 종료하십시오. Linux / Unix와 마찬가지로 Windows에서 netstat를 사용하여 PID를 식별 할 수 있습니다.
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netstat.mspx?mfr=true