Computer >> 컴퓨터 >  >> 문제 해결 >> 컴퓨터 유지 보수

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

IT 업무에 본격적으로 뛰어든 이후 가장 자주 하게 되는 일 중 하나가 바로 회사 내 여러 컴퓨터에서 실행 중인 서비스의 상태를 점검하고 모니터링하는 것입니다.

서비스를 관리하는 가장 일반적인 방법은 제어판이나 관리 도구에서 '서비스' 유틸리티를 찾아 필요한 작업을 수행하는 것입니다. 잘 알려져 있고 비교적 쉽기 때문에 대부분의 사람들이 이 방법을 사용합니다.

네트워크에 있는 다른 컴퓨터나 서버의 서비스를 관리하려면 컴퓨터 관리를 열어 원격 컴퓨터에 연결한 뒤 해당 서비스를 관리해야 합니다.

물론 이 방식이 나쁜 것은 전혀 아닙니다. 실제로 전 세계의 시스템 관리자들이 이러한 표준 Windows 유틸리티를 활용해 기업 인프라를 관리하고 있습니다. 하지만 명령 프롬프트에서 단 한 줄만 입력하면 서비스를 모니터링하고, 중지하고, 시작할 수 있다면 어떨까요?

명령줄에서 서비스 제어하기

클라이언트 컴퓨터에서 소프트웨어를 다시 설치하기 위해 서비스를 중지해야 할 때가 있습니다. 또는 서버에서 실행 중인 서비스가 정상 작동하지 않아 재시작해야 하는 경우도 있죠.

지금까지는 표준 서비스 유틸리티를 사용해 네트워크상 클라이언트 머신의 서비스를 관리해 왔을 것입니다. 이는 제어판의 관리 도구 섹션에서 실행하는 서비스 도구입니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

관리 도구에서 서비스 도구로 바로 이동하거나, 네트워크상의 다른 컴퓨터에 접근하려면 컴퓨터 관리를 열면 됩니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

다른 컴퓨터에 접속하려면 '동작' 메뉴에서 "다른 컴퓨터에 연결"을 클릭하고 해당 컴퓨터의 네트워크 이름을 입력하기만 하면 됩니다. 그런 다음 서비스 도구를 열 수 있습니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

더 쉬운 서비스 관리 방법

이것이 긴 방법이라면, 더 짧고 빠른 방법은 바로 "SC" 명령을 사용하는 것입니다.

NET 명령은 이미 익숙할 겁니다. SC 명령은 NET과 거의 동일하지만, 모니터링·중지·시작뿐 아니라 새로운 서비스를 생성할 수도 있습니다. 무엇보다 좋은 점은 (관리자 권한이 있다면) 네트워크를 통해 다른 컴퓨터에도 SC 명령을 실행할 수 있다는 것입니다.

컴퓨터에 대해 SC query를 실행하면 설치된 모든 서비스와 각각의 실행 여부를 확인할 수 있습니다. "SC \\컴퓨터-이름 query |more" 명령을 입력하면 다음과 같은 출력 결과를 얻습니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

보시다시피 서비스 상태, 서비스 유형 및 기타 매개변수를 확인할 수 있습니다. 여기서는 서비스의 상태에만 주목하겠습니다.

현재 실행 중이지 않은(중지된) 서비스만 나열하려면 "SC \\컴퓨터-이름 query state= "inactive" |more" 명령을 사용합니다.

명령 끝의 |more 부분은 출력이 화면마다 멈추도록 해서 스크롤하며 천천히 확인할 수 있게 해줍니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

모든 서비스를 일일이 뒤질 필요 없이, 서비스 이름을 알고 있다면 "SC \\컴퓨터-이름 query 서비스-이름" 명령만으로 해당 서비스의 현재 상태만 깔끔하게 보고받을 수 있습니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

원격으로 서비스를 중지하려면 "SC \\컴퓨터-이름 stop 서비스-이름" 명령을 입력하기만 하면 됩니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

출력에는 "STOP-PENDING"(중지 대기 중) 상태가 표시되지만, 잠시 후 해당 서비스를 다시 조회하면 더 이상 실행 중이지 않은 것을 확인할 수 있습니다. 다시 시작하려면 동일한 명령에서 "stop"을 "start"로 바꾸기만 하면 됩니다.

서비스 조회·중지·시작 자동화 스크립트 만들기

기본기를 익혔다면, 이제 명령 문자열을 일일이 외우지 않고도 원하는 서비스를 중지할 수 있는 스크립트를 작성할 차례입니다. 믿음직한 Windows 스크립트를 활용하면 다음과 같이 구현할 수 있습니다.

스크립트를 실행하면 먼저 중지하거나 시작할 서비스 이름을 입력하라고 요청합니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

그리고 해당 서비스를 중지할지 시작할지 묻습니다.

SC 명령어 하나로 Windows 서비스 제어하기 – 조회부터 시작·중지·자동화까지

">> c:\temp\results.txt" 구문을 사용하면 중지 및 시작 결과와 오류 내역이 텍스트 파일로 저장되므로, 명령이 제대로 작동했는지 나중에 확인할 수 있습니다.

실제로 위 스크립트를 실행할 때, 저는 스크립트 실행 전후로 서비스 상태를 빠르게 조회해 비교해 보았습니다.

보시다시피 제가 중지한 서비스인 helpsvc는 처음에 실행 중이었습니다. Windows 스크립트를 실행해 중지한 뒤 다시 조회하니 중지된 상태로 바뀌어 있었습니다.

더 한층 발전시키고 싶다면, PC에 설치된 모든 서비스 목록을 텍스트 파일로 출력하는 기능을 스크립트에 추가할 수도 있습니다. 그렇게 하면 어떤 서비스를 중지하거나 시작할지 결정하기 전에 목록을 미리 검토할 수 있습니다. 이때 사용하는 명령은 "sc \\" & strComputer & " query > c:\temp\services.txt"입니다.

이처럼 SC 명령은 어떤 컴퓨터에서든 서비스를 강력하고 효율적으로 관리할 수 있는 훌륭한 방법입니다. Windows 스크립팅에 능숙하다면 이 과정을 자동화해 업무를 한층 더 수월하게 만들 수도 있습니다.

여러분은 SC 명령이 유용하게 쓰일 것 같나요? 명령을 자동으로 실행하는 스크립트에 대한 생각은 어떠신가요? 아래 댓글로 의견을 공유해 주세요.

이미지 출처: Shutterstock