윈도우 서비스 강제 종료 taskkill 명령어 사용법

윈도우에서 정상적으로 서비스를 종료하는 방법은 서비스 앱에서 중지를 클릭하는 것입니다. 그러나 어떤 이유로든 프로세스가 종료되지 않거나 서비스를 중지하는 중이라는 상태가 너무 길게 이어지는 등 문제가 발생할 수 있습니다. 이런 경우에 서비스를 강제종료하기 위해 taskkill 명령어를 사용할 수 있습니다. taskkill 명령어 사용 방법과 일반적인 종료와 taskkill 강제종료의 차이를 알아보겠습니다.

taskkill

taskkill을 통한 프로세스 종료는 프로세스 이름이나 PID를 기준으로 합니다. PID를 이용하는 게 더 좋습니다.

taskkill /IM 프로세스명
taskkill /PID PID
  • /IM : 종료할 프로세스의 이름을 지정합니다.
  • /PID : 종료할 프로세스의 프로세스 ID를 지정합니다.
  • /FI : 프로세스 이름이나 상태 등을 기준으로 프로세스를 필터링합니다.
  • /T : 프로세스와 하위 프로세스를 종료합니다.
  • /F : 프로세스를 강제로 종료합니다.

예시) lmhosts 서비스 강제 종료

예를 들어, lmhosts라는 서비스를 강제 종료한다고 가정해 보겠습니다. (예시일 뿐 실제로 이 서비스를 종료하시면 안 됩니다)

 

1. 작업관리자를 실행합니다.

2. 서비스 탭으로 이동합니다. lmhosts의 PID를 확인합니다. 제 경우 15776입니다.

 

서비스 lmhosts

 

3. cmd 창을 관리자권한으로 실행합니다.

4. taskkill로 강제종료합니다. /F 옵션을 추가합니다.

taskkill /F /PID 15776

taskkill 사용 vs 서비스 앱에서 중지 차이점

서비스에서 앱을 우클릭 > 중지 버튼을 클릭하는 것과 taskkill을 사용하는 건 애플리케이션이 종료되는 방식에 차이가 있습니다.

 

서비스에서 중지 버튼을 클릭하면 서비스가 사용 중인 모든 리소스를 정리하고 순서대로 실행을 중지합니다. 데이터 손실을 방지할 수 있기 때문에 특별한 문제가 있는 게 아니면 이 방법을 사용합니다.

 

taskkill로 강제종료하면 리소스를 정리하거나 순서대로 실행을 중지하지 않고 곧장 프로세스를 종료합니다. 종종 사용되긴 하지만 일반적으로 종료되지 못하는 경우가 아니면 권장되지 않는 방법입니다.

리소스 정리란?

위에서 언급한 리소스 정리라는 건 애플리케이션이 사용하고 있는 리소스를 해제하는 과정을 의미합니다. 리소스는 메모리, 파일 핸들, 소켓, 기타 시스템 리소스 등이 포함됩니다.

 

예를 들어, 응용 프로그램으로 A라는 파일을 열고 닫는 경우에 애플리케이션이 작업을 마치면 A라는 파일을 다른 애플리케이션이 액세스 할 수 있도록 파일 핸들을 해제합니다. 웹 사이트에 로그인된 사용자가 로그아웃하는 경우엔 연결됐던 데이터베이스의 연결을 닫는 것도 리소스 정리의 예시입니다.

반응형

댓글

Designed by JB FACTORY