Windows 서비스를 만드는 방법

때때로 컴퓨터에 로그인했는지 여부에 관계없이 계속 실행하려면 앱이나 스크립트가 필요합니다. 포트를 모니터링 하는 PowerShell 스크립트(PowerShell script to monitor ports) 또는 홈 네트워크의 페이지를 호스팅하는 웹 서버일 수 있습니다(web server hosting a page on your home network) .

요점은 컴퓨터가 켜져 있는 동안 프로세스, 스크립트 또는 프로그램을 실행하려면 Windows 서비스(Windows Service) 를 만들어야 한다는 것 입니다.

Windows 서비스를 생성하려면 무엇이 필요합니까?(What Do I Need to Create a Windows Service?)

Windows 10 에서 (Windows 10)Windows 서비스 를 만들려면 몇 가지 전제 조건이 있습니다. 

  • 컴퓨터에 대한 관리자(Administrator) 액세스
  • 서비스로 실행할 항목( PowerShell Script , 프로그램 등)
  • Non- Sucking Service Manager ( NSSM ) 설치

비 빠는 서비스 관리자 란 무엇입니까?(What Is the Non-Sucking Service Manager?)

예, 설명 없이는 그런 이름을 삭제할 수 없습니다. 물론 이름은 불행하지만 정확합니다. NSSM ( Non- Sucking (NSSM)Service Manager )은 틀림없이 매우 안정적이고 구성 가능한 Windows 서비스 를 만드는 가장 쉬운 방법 입니다. 또한 무료이며 오픈 소스 소프트웨어(Open Source Software) (OSS)입니다.

NSSM은 Windows 명령 프롬프트 또는 (Windows Command Prompt)GUI (그래픽 사용자 인터페이스 ) 를 통해 사용할 수 있습니다 . 즉, 누구나 사용할 수 있습니다. NSSM은 Windows 2000 을 포함한 모든 버전의 Windows 에서 사용할 수 있습니다 . 32비트와 64비트(32-bit and 64-bit) 버전 이 있습니다. 64비트 컴퓨터를 사용하는 경우 먼저 해당 버전을 사용해 보십시오. 작동하지 않으면 32비트 버전으로 돌아가십시오. 

웹사이트 에서 NSSM 을 다운로드 하거나 (download NSSM from the website)Git(clone NSSM from Git) 에서 NSSM을 복제하거나 Chocolatey로 NSSM을 설치할 수(install NSSM with Chocolatey) 있습니다. Chocolatey는 Windows용 패키지 관리자입니다(Chocolatey is a package manager for Windows) . 어떤 경로를 선택하느냐에 따라 설치(Installation) 방법이 달라집니다. NSSM 의 지침을 참조하십시오 . (Please)이 예에서는 NSSM 웹 사이트에서 다운로드하여 (NSSM)C:\WINDOWS\system32 WINDOWSsystem32 에 설치합니다 .

NSSM으로 Windows 서비스 생성(Create a Windows Service With NSSM)

이 예에서는 PowerShell 스크립트 에서 서비스를 만들어 (PowerShell script)CPU 평균 로드 백분율(CPU average load percentage) 을 기록 합니다. 

  1. 이 스크립트 를 다른 사람이 액세스할 가능성이 없는 위치에 log-CPULoadPercentage.ps1 로 복사하여 저장합니다 . C:/Scripts 디렉토리를 생성하고 거기에 저장해 보십시오. 또한 Logs(Logs) 라는 Scripts 폴더를 만듭니다 . 스크립트 경로는 C:/Scripts/log-CPULoadPercentage.ps1 입니다. 나중에 필요합니다.

참고(Note) : 아래의 모든 행 뒤에 # 기호는 주석이며 스크립트에 영향을 주지 않습니다.

CLS #Optional. I like to use this to clear the terminal when testing.

#Make sure you have a folder called Logs in the same directory as this script
#The log is where the records will be stored.
Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append

#While loop keeps it running until manually stopped
While ($True){
     #Creates a timestamp to know when the measurement was taken
     $timeStamp = get-date -f yyyy-MM-h:mm:ss

     #Gets the average load percentage at that time, then waits 5 seconds to do it again.
     $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5

     #Isolates just the average so there isn't a weird @{Average=13} string
     $cpuLoadPercent = $cpuLoadPercent.Average

     #writes results to screen, or in this case to the log
     Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent"
}

Stop-Transcript
  1. 이 작업은 Windows 명령 프롬프트(Windows Command Prompt) 또는 PowerShell에서 수행할 수 있습니다. (PowerShell. )관리자로 엽니다(Open it as Administrator) .
  2. nssm install logCPUAvg 명령을 입력 하고 실행합니다. NSSM 서비스 설치 프로그램(NSSM service installer) 창이 열립니다.

  1. (Click)경로:(Path:) 필드 옆에 있는 줄임표 버튼을 클릭 하고 일반적으로 C:\Windows\System32\powershell.exe 로 이동합니다 . powershell.exe를 선택합니다. 경로:(Path:) 및 시작 디렉터리:(Startup directory:) 필드가 자동으로 채워집니다.

  1. 인수:(Arguments:) 필드 에 다음을 입력합니다 . -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , 여기서 마지막 부분은 PowerShell 스크립트의 경로와 스크립트 이름입니다.  

  1. 세부 정보(Details) 탭을 선택합니다 . 표시 이름:(Display name: ) 필드 에 Windows 서비스(Services) 관리자에 표시할 서비스를 입력 합니다. 그런 다음 설명:(Description:) 필드에 수행할 작업을 입력합니다. 시작 유형:(Startup type: ) 자동 ,(Automatic) 자동 (지연된 시작)(Automatic (Delayed Start)) , 수동(Manual) 또는 비활성화(Disabled) 로 설정할 수 있습니다 . 이 연습에서는 자동(Automatic) 이 좋습니다.

  1. 로그온(Log on ) 탭 을 선택합니다 . 이 계정(This account) : 라디오 버튼을 선택 하고 서비스를 실행할 계정과 암호를 입력합니다. 서비스를 실행할 계정을 선택해야 합니다. 이상적으로는 이 서비스를 실행하기 위한 Windows 계정이 생성됩니다. 이 계정의 권한은 서비스에서 수행해야 하는 작업으로만 제한되어야 합니다. 로컬 시스템 계정(Local System account) 을 선택할 수 있지만 보안상의 이유로 권장하지 않습니다.

서비스를 사용자 정의하는 데 사용할 수 있는 몇 가지 다른 탭이 있습니다. 이 연습에서는 해당 탭의 기본값으로 충분합니다. 서비스 설치(Install service ) 버튼을 선택 합니다.

  1. Service “logCPUAvg” installed successfully! 것을 볼 수 있습니다 ! 창문. 확인(OK) 을 선택 하여 닫습니다. 이상으로 설치를 마칩니다.

  1. Windows 서비스 관리자(Windows Services Manager ) 를 열고 서비스가 있는지 확인하십시오.

  1. 서비스를 실행(Run) 하여 실행되도록 합니다.

  1. 이 서비스가 실행 중인지 확인하려면 파일 탐색기(File Explorer ) 를 사용하여 로그가 저장되어야 하는 위치로 이동하여 존재하는지 확인하십시오.

nssm-check-log.png

NSSM을 사용하여 Windows 서비스 제거(Removing a Windows Service With NSSM)

더 이상 CPU 부하를 모니터링할(monitor your CPU) 필요가 없으므로 서비스를 제거하고 싶을 수도 있습니다. 다행히도 NSSM 은 이를 쉽게 만듭니다. 

  1. Windows 서비스 관리자(Windows Services Manager) 에서 서비스를 중지합니다. 로그 CPU 평균 로드(Log CPU Average Load ) 서비스를 선택한 다음 도구 모음에서 사각형 중지 버튼을 선택하거나 왼쪽에 있는 서비스 중지 링크를 선택하여 이 작업을 수행합니다.(Stop the service)

  1. Windows 명령 프롬프트(Windows Command Prompt ) 또는 PowerShell 을 관리자로 엽니다 .
  2. nssm remove logCPUAvg 명령을 입력하고 명령 을 실행합니다. 

  1. NSSM 에서 확인을 요청할 것입니다. (Yes) 를 선택 합니다.

  1. Service “logCPUAvg” removed successfully! 것을 볼 수 있습니다 ! 확인. 확인(OK) 을 선택 하면 완료됩니다.

그게 다야. 서비스 관리자를 확인하여 서비스가 더 이상 존재하지 않는지 확인하는 것이 좋습니다. 서비스가 계속 표시되면 화면을 새로 고쳐야 할 수 있으며 사라집니다.

서비스는 항상 실행해야 하는 앱 또는 스크립트를 실행하거나, 실패할 경우 자체적으로 다시 시작하거나, 현재 사용자와 다른 권한이 필요한 훌륭한 방법입니다. 이러한 모든 작업을 수행하는 데 앱이나 스크립트가 필요하지 않은 경우 대신 예약된 작업을 사용하는(using a Scheduled Task) 것이 좋습니다.



About the author

저는 Edge 경험이 있는 숙련된 Windows 10 및 Windows 11/10 관리자입니다. 저는 이 분야에서 제공할 수 있는 풍부한 지식과 경험을 가지고 있습니다. 그렇기 때문에 제 기술이 귀사에 귀중한 자산이 될 것이라고 생각합니다. Windows 10과 Edge 모두에서 다년간의 경험을 통해 새로운 기술을 빠르게 배우고 문제를 신속하게 해결하며 비즈니스 운영에 대한 책임을 질 수 있습니다. 또한 Windows 10 및 Edge에 대한 경험을 통해 운영 체제의 모든 측면에 대해 매우 잘 알고 있으므로 서버 관리 또는 소프트웨어 응용 프로그램 관리에 도움이 될 것입니다.



Related posts