죽은 프로세스로 열린 포트를 어떻게 확보합니까? 해당 포트에 바인딩되는 것을 막는 문제가

내 동료가 최근에 사망 한 프로세스가 여전히 네트워크 포트에 바인딩되어 다른 프로세스가 해당 포트에 바인딩되는 것을 막는 문제가 발생했습니다. 특히 PID 4476으로 netstat -a -b명명 된 프로세스 System가 포트 60001을 열었다 고보고했습니다 .PID 4476이 있는 프로세스 는 적어도 내가 알 수있는 한 존재하지 않습니다.

프로세스 탐색기 및 작업 관리자는 PID 4476을 나열하지 않았습니다 ( SystemPID 4 라는 이름의 다른 프로세스 가 있었지만 60001을 포함하지 않는 자체 TCP 연결 세트를 가짐). taskkill /PID 4476또한 PID 4476을 찾을 수 없다고보고했습니다.

이 신비한 시스템 프로세스를 종료하여 현재 바인딩 된 포트를 비울 수있는 방법이 있습니까? 이것이 일어날 수있는 원인은 무엇입니까? 작업 관리자, 프로세스 탐색기 및 태스크 킬 중 누구도 모르는 프로세스가 어떻게있을 수 있습니까? 재부팅하면 문제가 해결되었지만 재부팅하지 않고 해결할 수있는 방법이 있는지 알고 싶습니다.



답변

나는 이것이 오래된 스레드라는 것을 알고 있지만 다른 사람이 같은 문제를 겪고있는 경우에 나는 …

일어날 수있는 일은 프로세스가 명시 적으로 닫히지 않고 충돌하거나 종료 될 때 TCP 포트가 열려 있다는 것입니다. 일반적으로 OS는 프로세스 레코드가 사라질 때만 이러한 종류의 것들을 정리합니다. 프로세스가 더 이상 실행되지 않는 것처럼 보일 수 있지만 PID 재사용을 방지하기 위해 레코드를 유지할 수있는 방법이 적어도 하나 있습니다. 이것은 부모로부터 분리되지 않은 자식 프로세스의 존재입니다.

프로그램이 실행되는 동안 프로세스를 생성 한 경우 종료하십시오. 프로세스 레코드가 해제되고 TCP 포트가 정리됩니다. 분명히 예상대로 프로세스가 종료되지 않을 때 레코드가 해제되면 Windows 가이 작업을 수행합니다.


답변

TCPView를 사용하고 연결을 닫으셨습니까? 설명하지 않은 시나리오에서 연결이 표시되는지 여부는 알 수 없습니다. 그러나 이것이 다시 발생하면 내가 생각할 수있는 유일한 것입니다.

프로세스는 무엇 이었습니까? 상용 소프트웨어입니까, 아니면 자체 개발 한 것입니까? 포트 60001은 일부 트로이 목마에 의해 사용되는 것으로 보입니다. 루트킷 일 수도 있고 OS에서 자신을 숨길 수있는 것일 수 있습니까? 부팅 가능한 미디어의 AV 일 수 있으므로 AV를 통해 한 번에 좋은 시스템을 제공 할 수 있습니다.


답변

관리자 권한으로 명령 프롬프트 열기

  1. C : \ WINDOWS \ system32> netstat -ano | findstr : 7895

*** 더 이상 하위 프로세스가 없을 때까지 2 단계를 반복하십시오.

  1. C : \ WINDOWS \ system32> wmic 프로세스 (ParentProcessId = 1091)가 캡션, ProcessId를 얻는 경우

    캡션 프로세스 아이디

    cmd.exe 1328

2.a. C : \ WINDOWS \ system32> (ParentProcessId = 1328)가 캡션, ProcessId를 얻는 wmic 프로세스

  Caption  ProcessId

  conhost.exe  1128

2.b. 더 이상 자식 프로세스를 찾을 수 없을 때까지 이것을 반복하십시오

그런 다음 모든 자식 프로세스를 종료하십시오.

  1. C : \ WINDOWS \ system32> taskkill / F / PID 1128 성공 : PID 9500의 프로세스가 종료되었습니다.

답변

netstat -a -n windows 명령으로 프로세스 ID가있는 열린 포트 목록을 제공했습니다. 그로부터 연결을 닫고 싶었던 포트 번호를 선택한 다음 TCPView 소프트웨어를 사용하여 해당 연결을 닫았습니다. 이것은 나를 위해 일했습니다.


답변

Windows 사용자 인 경우 아래 단계 1을 수행하십시오.이 경로로 이동하십시오. 제어판 \ 모든 제어판 항목 \ 관리 도구

2 단계 : 서비스 클릭

3 단계 : 원하는 포트에서 원하지 않는 서비스를 중지하십시오.


답변

ps -ef | grep 프로세스 이름

관련 프로세스를 종료

-9 pid pid를 죽여라

내 경우에 일했다