윈도우 서비스 종료시 참고사항
윈도우용 서버 프로그램 개발시 서비스모드로 작동하게 하는데 이를 중지시키고자 하는 경우는 매우 빈번하다.
패치를 하려해도 서비스를 중지해야 하고 시작하고 서버에 무슨 작업을 하려하든 어쨌튼 서버를 중지해야 한다.
서비스 중지 명령은 기본적으로는 sc top
명령어가 있다. 이를 이용해 서버를 중지시켜도 되지만 이 경우에는 서비스가 제대로 중지되지 않는 경우가 있었다. 윈도우의 ‘서비스’에서는 중지된 것으로 보이는데 실제로는 중지되지 않은 상태인 것이다.
젠킨스에서 윈도우 배치 파일로 빌드 후 패치까지 만들었으나 이렇게 중지되지 않는 서비스 때문에 Sharing violation 에러와 함께 패치가 작동되지 않았다.
이런 경우 taskkill
명령어를 쓰면 된다. taskkill /f /im xxxx.exe
의 형태로 서비스를 강제종료 시킬 수 있었다.
다만, 인터럽트로 강제종료하는 것이므로 서버종료에 대한 처리등에서 문제가 생길 소지가 있으니 주의할 것.
그리고 이 명령은 프로세스의 파일명을 이용하여 서비스를 죽이게 된다. 만약 실행파일명이 같다면 모든 서비스가 한번에 다 죽게 되므로 조심할 것. 만약, 베타서버, 개발서버 등이 경로만 다르되 실행파일명을 동일하게 쓰고 있다면 한번에 모두 죽어버린다.