Windows 서비스를 명령줄로 관리하는 방법

Windows Services

저는 항상 터미널을 떠나지 않고 시스템 작업을 효율적으로 관리할 수 있는 방법을 찾습니다. Windows를 사용할 때도 마찬가지입니다. Windows에서는 서비스가 백그라운드에서 실행되어 시스템과 애플리케이션이 원활하게 작동합니다. 서비스 관리자를 여는 대신, 저는 명령줄을 통해 Windows 서비스를 관리하는 것을 선호합니다. 이 가이드에서는 이러한 방법을 살펴보고 터미널에서 직접 Windows 서비스를 관리하는 방법을 알아보겠습니다.

1. sc.exe로 Windows 서비스 관리하기

sc.exe는 Windows 서비스를 관리하기 위한 내장 명령줄 도구입니다. 이를 통해 터미널에서 직접 서비스를 구성, 조회 및 제어할 수 있습니다. sc.exe를 사용하면 그래픽 서비스 관리자 없이 Windows 서비스를 완전히 제어할 수 있습니다.

sc로 서비스 상태 확인하기

특정 서비스의 상태를 확인하기 위해 sc query serviceName 명령어를 사용할 수 있습니다. 예를 들어, sc query MySQL80 명령어를 실행하여 MySQL80 서비스에 대한 세부 정보를 검색할 수 있으며, 여기에는 상태가 포함됩니다:

check service status with sc

현재 우리의 머신에서 MySQL은 실행되고 있지 않습니다.

sc로 서비스 시작하기

sc.exe를 사용하여 특정 서비스를 시작하려면 sc start ServiceName 명령어를 사용할 수 있습니다. 예를 들어, sc start MySQL80을 실행하여 MySQL80 서비스를 시작합니다. 서비스가 성공적으로 시작되었는지 확인하기 위해 sc query MySQL80 명령어로 상태를 확인할 수 있습니다:

Start Service Sc

sc로 서비스 중지하기

시스템 자원을 확보하기 위해 서비스 중단할 수 있습니다. 예를 들어, sc stop MySQL80 명령어는 MySQL을 중지시키며, 이를 sc query MySQL80 명령어로 확인할 수 있습니다:

Stop Service Sc

sc로 새 서비스 생성하기

sc create 명령어를 사용하여 새 서비스를 생성할 수 있습니다. 이는 서비스 이름, 실행 파일 경로 및 시작 유형을 지정해야 합니다. 예를 들어, 자동으로 부팅될 “mte”라는 이름의 새 서비스를 생성하려면 다음과 같이 입력합니다:

sc create mte binPath="C:\Users\HP\Desktop\Examples\Service.exe" start= auto

sc로 서비스 업데이트하기

기존 서비스를 구성하기 위해 sc config 명령어를 사용할 수 있습니다. 예를 들어, 시작 유형을 수동으로 변경하려면 다음 명령어를 실행합니다:

sc config serviceName start= demand

sc로 서비스 삭제하기

더 이상 필요하지 않은 서비스는 다음 명령어를 사용하여 Windows에서 영구 제거할 수 있습니다:

sc delete srviceName

2. Net 명령어로 Windows 서비스 관리하기

Windows의 net 명령어를 사용하면 명령줄에서 서비스를 관리할 수 있습니다. 이를 통해 사용자는 그래픽 서비스 관리자를 사용하지 않고도 서비스를 시작, 중지, 일시 정지, 재개 및 확인할 수 있습니다.

net 명령어로 서비스 시작 및 중지하기

Windows 서비스를 시작하거나 중지하려면 각각 net start serviceNamenet stop serviceName 명령어를 사용할 수 있습니다:

Start or stop service with net command

net 명령어로 서비스 일시 정지 및 재개하기

일부 Windows 서비스는 완전 중단 대신 일시 정지 및 재개를 지원합니다. 이 경우, 각각 net pause ServiceNamenet continue ServiceName 명령어를 사용할 수 있습니다:

Pause and resume service net command

net 명령어로 서비스 상태 확인하기

net 명령어 자체는 특정 서비스의 상태를 직접 확인할 수 있는 방법을 제공하지 않지만, findstr 명령어와 함께 사용하여 결과를 필터링할 수 있습니다. 예를 들어, 지정된 서비스가 실행 중인지 확인하려면 다음과 같이 입력합니다:

net start | findstr "ServiceName"

지정된 서비스가 실행 중이면, 명령이 서비스 이름을 반환합니다; 그렇지 않으면 출력이 없습니다.

net 명령어로 원격으로 서비스 관리하기

net 명령어를 사용하여 컴퓨터 이름을 지정하면 원격 컴퓨터에서 서비스를 관리할 수 있습니다. 예를 들어, net start ServiceName /S RemotePCnet stop ServiceName /S RemotePC 명령어를 사용하여 원격 컴퓨터의 서비스를 시작하거나 중지합니다.

3. PowerShell Cmdlet로 Windows 서비스 관리하기

PowerShell은 Get-Service, Start-Service, Stop-Service 및 Restart-Service와 같은 내장 cmdlet을 사용하여 Windows 서비스를 보다 정교하게 제어할 수 있습니다. 이러한 cmdlet을 통해 사용자는 서비스의 상태를 확인하고, 시작하거나 중지하며, 필요할 때 재시작할 수 있습니다.

PowerShell cmdlet은 서비스 상태, 표시 이름 및 의존 서비스와 같은 세부 정보를 제공합니다. 이러한 cmdlet은 스크립팅 및 자동화를 가능하게 하여 여러 서비스를 효율적으로 관리하는 데 유용합니다.

PowerShell의 유연성과 강력한 기능은 Windows 서비스를 관리하는 관리자에게 선호되는 도구가 됩니다.

cmdlet로 서비스 상태 확인하기

Get-Service -Name ServiceName cmdlet을 사용하여 지정된 서비스에 대한 세부 정보를 확인할 수 있습니다. 예를 들어, 다음 명령어는 MySQL80 서비스의 상태를 반환하며, 서비스가 실행 중인지 중지되었는지를 보여줍니다:

Get-Service-Name MySQL80

Check Service Status Get Service

PowerShell cmdlet로 서비스 쿼리하기

Get-Service 명령어를 사용하여 특정 기준에 따라 서비스를 쿼리할 수 있습니다. 예를 들어, 현재 실행 중인 모든 서비스를 검색하려면 다음 명령어를 사용할 수 있습니다:

Get-Service|Where-Object{$_.Status -eq'Running'}

Query Specific Services

PowerShell cmdlet로 서비스 시작 및 중지하기

특정 서비스를 시작하거나 중지하려면 각각 Start-ServiceStop-Service cmdlet을 사용할 수 있습니다. 예를 들어, PowerShell 명령어를 사용하여 MySQL80 서비스를 시작, 중지 및 상태를 확인합니다:

Start-Service-Name MySQL80   
Stop-Service-Name MySQL80  
Get-Service-Name MySQL80

Start Stop Service Powershell

PowerShell cmdlet로 서비스 시작 유형 변경하기

PowerShell cmdlet을 사용하면 서비스 시작 유형을 업데이트할 수 있습니다. 예를 들어, 시스템과 함께 자동으로 시작되거나, 수동으로 시작해야 하거나, 비활성으로 설정되는 서비스를 구성하려면 다음 cmdlet을 실행할 수 있습니다:

Set-Service-Name ServiceName -StartupType Automatic  
Set-Service-Name ServiceName -StartupType Manual  
Set-Service-Name ServiceName -StartupType Disabled

이러한 cmdlet은 관리자들이 서비스 동작을 효율적으로 관리하도록 도와주어, 필수 서비스가 필요할 때 시작되고 불필요한 서비스는 실행되지 않도록 하는 데 기여합니다.

cmdlet로 원격 서비스 관리하기

PowerShell은 원격 컴퓨터의 서비스를 관리할 수 있도록 원격 컴퓨터 이름을 지정할 수 있습니다. 예를 들어, Get-Service -Name ServiceName -ComputerName RemotePC 명령어는 원격 컴퓨터인 RemotePC에서 실행 중인 특정 서비스의 상태를 검색하여 관리자가 원격으로 서비스를 모니터링할 수 있도록 합니다.

마찬가지로, Restart-Service -Name ServiceName -ComputerName serviceName 명령어는 원격 컴퓨터에서 지정된 서비스를 재시작하도록 시도합니다. 이를 통해 기계에 직접 접근하지 않고도 서비스가 재시작되도록 할 수 있습니다. 그러나 원격 서비스 관리는 적절한 권한과 PowerShell 원격 사용이 활성화되어야 합니다.

4. 서비스 관리 작업 자동화

PowerShell 스크립트를 사용하면 서비스 관리 작업을 자동화할 수 있어, 수동 개입 없이 Windows 서비스를 모니터링하고 제어하기가 더 쉬워집니다. 특정 서비스의 상태를 지속적으로 확인하고 정지된 경우 재시작하는 스크립트를 작성할 수 있습니다.

예를 들어, 다음 스크립트는 MySQL80 서비스가 실행 중인지 확인하고 중지된 경우 이를 재시작합니다:

$serviceName = "MySQL80"  
$service = Get-Service-Name $serviceName  
if($service.Status -ne"Running"){  
    Restart-Service-Name $serviceName -Force  
    Write-Output"$serviceName was stopped and has been restarted."  
}else{  
    Write-Output"$serviceName is already running."  
}

기본적으로 Windows는 스크립트 실행을 제한합니다. 실행을 허용하려면 먼저 다음 명령어를 실행합니다:

Set-ExecutionPolicy RemoteSigned

이제 스크립트 위치로 이동하여 .\serviceScript.ps1 명령어를 실행하여 스크립트를 실행할 수 있습니다:

명령줄에서 Windows 서비스를 관리하면 그래픽 서비스 관리자에 의존하지 않고도 완전한 제어를 제공합니다. sc.exe, net, PowerShell cmdlet 중 어떤 방법을 사용하든, 각 방법은 서비스를 시작하고 중지하며 구성할 수 있는 효율적인 방법을 제공합니다.

PowerShell의 스크립팅 기능은 자동화를 용이하게 하여 서비스를 매끄럽게 모니터링하고 관리할 수 있게 합니다. 이러한 도구를 마스터함으로써 문제를 해결하고 시스템 성능을 최적화하며 중요한 서비스가 원활하게 실행되도록 보장할 수 있습니다.

Windows 시스템을 최적화하고 일반적인 문제를 해결하는 방법에 대한 더 많은 안내를 원하신다면, Windows 문제 해결 및 PC 성능 최적화에 대한 가이드를 확인해 보세요.