Найти Π² Π”Π·Π΅Π½Π΅
Π’.Π•.Π₯.Н.О Windows & Linux

πŸš€ NSSM: ЭкспСртноС руководство ΠΏΠΎ созданию ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ слуТбами Windows для профСссионалов IT

ОглавлСниС

NSSM (Non-Sucking Service Manager) β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт систСмным администраторам ΠΈ IT-спСциалистам ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ прилоТСния Π² ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ слуТбы Windows. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стандартных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ srvany.exe ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, NSSM обСспСчиваСт Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, автоматичСский пСрСзапуск ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности управлСния слуТбами Π² Windows 10, 11 ΠΈ грядущСй Windows 12.​

πŸ’‘ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства NSSM

Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ процСссов

NSSM отслСТиваСт состояниС Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… слуТб ΠΈ автоматичСски пСрСзапускаСт ΠΈΡ… ΠΏΡ€ΠΈ сбоях, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. БистСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ схСму Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСссов:​

  1. Ctrl+C сигналы для ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
  2. WM_CLOSE сообщСния для графичСских ΠΎΠΊΠΎΠ½
  3. WM_QUIT события для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² с ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ сообщСний
  4. TerminateProcess() для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡβ€‹β€‹

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности управлСния

  • ГрафичСский интСрфСйс ΠΈ CLI для максимальной гибкости​​
  • ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ I/O ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Ρ„Π°ΠΉΠ»Ρ‹ логов​
  • Настройка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния для слуТб​
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ процСссов​

βš™οΈ Установка ΠΈ базовая настройка NSSM

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ установка

⚠️ Π’ΠΠ˜ΠœΠΠΠ˜Π•: Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ NSSM Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта https://nssm.cc для обСспСчСния бСзопасности.​

# Установка Ρ‡Π΅Ρ€Π΅Π· Chocolatey (рСкомСндуСтся для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ)
Set-ExecutionPolicy Bypass -Scope Process -Force
choco install nssm

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ β€” ручная установка:

  1. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΠ² с https://nssm.cc/download​
  2. РаспакуйтС Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ C:\Tools\nssm\
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ NSSM Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния PATH
Π”Ρ€ΡƒΠ·ΡŒΡ. Π’Π°ΡˆΠΈ Π»Π°ΠΉΠΊΠΈ, подписки ΠΈ рСпосты, Π»ΡƒΡ‡ΡˆΠ°Ρ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ. НС ΡΠΊΡƒΠΏΠΈΡ‚Π΅ΡΡŒ, это бСсплатно! ΠœΡ‹ стараСмся для Вас. Бпасибо ΠΈ приятного Π’Π°ΠΌ чтСния ΠΈ ΡƒΠ΄Π°Ρ‡ΠΈ Π² настройках своСго ПК. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€ΡƒΠ±Π»Ρ‘ΠΌ Π² ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒ ΠΊΠ°Π½Π°Π»Π°. Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄Π° T.Π•.Π₯.Н.О Windows & Linux / Be smarter with us!

πŸ’°ΠšΠžΠŸΠ˜Π›ΠšΠ ΠšΠΠΠΠ›Π, ЀИН. ΠŸΠžΠ”Π”Π•Π Π–ΠšΠπŸ’°

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слуТбы Ρ‡Π΅Ρ€Π΅Π· GUI

# Запуск графичСского интСрфСйса создания слуТбы
nssm install Π˜ΠΌΡΠ‘Π»ΡƒΠΆΠ±Ρ‹

ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ настройки с нСсколькими Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ:

Application (ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹)

  • Path: ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ
  • Startup directory: Рабочая дирСктория (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” ΠΏΠ°ΠΏΠΊΠ° с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ)
  • Arguments: АргумСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Details (Π”Π΅Ρ‚Π°Π»ΠΈ слуТбы)

  • Display name: ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя Π² services.msc
  • Description: ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° слуТбы
  • Startup type: Automatic/Manual/Disabled

Log on (УчСтная запись)

# Для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… слуТб рСкомСндуСтся LOCALSYSTEM
# Для слуТб, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… сСтСвого доступа:
# NetworkService ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ учСтная запись

πŸ”§ ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CLI

Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слуТбами

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слуТбы с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
nssm install MyService "C:\Apps\myapp.exe" "--config=production"

# Настройка Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
nssm set MyService AppDirectory "C:\Apps\config"

# Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слуТбой
nssm start MyService
nssm stop MyService
nssm restart MyService
nssm status MyService

# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ слуТбы
nssm remove MyService confirm

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ настройки Ρ‡Π΅Ρ€Π΅Π· рССстр

# Настройка автоматичСского пСрСзапуска с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ
nssm set MyService AppThrottle 5000

# ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ²
nssm set MyService AppStdout "C:\Logs\myservice-output.log"
nssm set MyService AppStderr "C:\Logs\myservice-error.log"

# Ротация Π»ΠΎΠ³ΠΎΠ² (Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ…)
nssm set MyService AppStdoutCreationDisposition 4
nssm set MyService AppRotateFiles 1
nssm set MyService AppRotateOnline 1
nssm set MyService AppRotateSeconds 86400
nssm set MyService AppRotateBytes 10485760

πŸ›‘οΈ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ оптимизация слуТб

Настройки рССстра для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности

# ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ слуТбС Ρ‡Π΅Ρ€Π΅Π· рССстр
$servicePath = "HKLM:\SYSTEM\CurrentControlSet\Services\MyService"
$securityDescriptor = "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)"

Set-ItemProperty -Path $servicePath -Name "Security" -Value $securityDescriptor

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ слуТб

# PowerShell скрипт для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° слуТб NSSM
$nssmServices = Get-Service | Where-Object { $_.ServiceName -like "*nssm*" }

foreach ($service in $nssmServices) {
$process = Get-Process -Name "nssm" -ErrorAction SilentlyContinue
if ($process) {
Write-Host "Π‘Π»ΡƒΠΆΠ±Π°: $($service.Name)" -ForegroundColor Green
Write-Host "ИспользованиС памяти: $($process.WorkingSet64 / 1MB) MB" -ForegroundColor Yellow
Write-Host "CPU Time: $($process.TotalProcessorTime)" -ForegroundColor Cyan
}
}

Автоматизация создания слуТб Ρ‡Π΅Ρ€Π΅Π· PowerShell

function New-NSSMService {
param(
[string]$ServiceName,
[string]$ExecutablePath,
[string]$Arguments = "",
[string]$WorkingDirectory = "",
[string]$Description = "",
[string]$StartupType = "Automatic"
)

$nssmPath = (Get-Command nssm.exe).Source

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слуТбы
& $nssmPath install $ServiceName $ExecutablePath $Arguments

# Настройка Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
if ($WorkingDirectory) {
& $nssmPath set $ServiceName AppDirectory $WorkingDirectory
}

if ($Description) {
& $nssmPath set $ServiceName Description $Description
}

# Настройка автозапуска
if ($StartupType -eq "Automatic") {
& $nssmPath set $ServiceName Start SERVICE_AUTO_START
}

Write-Host "Π‘Π»ΡƒΠΆΠ±Π° $ServiceName ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ создана! πŸš€" -ForegroundColor Green
}

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
New-NSSMService -ServiceName "WebApp" -ExecutablePath "C:\WebApp\app.exe" -Arguments "--port=8080" -Description "Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ"

πŸ”„ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с систСмами ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

Настройка логирования для Π°Π½Π°Π»ΠΈΠ·Π°

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ структурированных Π»ΠΎΠ³ΠΎΠ²
nssm set MyService AppStdout "C:\Logs\MyService\stdout-%Y%m%d%.log"
nssm set MyService AppStderr "C:\Logs\MyService\stderr-%Y%m%d%.log"

# Настройка Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ
nssm set MyService AppRotateFiles 1
nssm set MyService AppRotateOnline 1
nssm set MyService AppRotateSeconds 3600
# ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ час
nssm set MyService AppRotateBytes 52428800
# 50MB

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Windows Event Log

# Настройка записи событий Π² ΠΆΡƒΡ€Π½Π°Π» Windows
$logName = "Application"
$sourceName = "MyNSSMService"

# РСгистрация источника событий
New-EventLog -LogName $logName -Source $sourceName -ErrorAction SilentlyContinue

# Π‘ΠΊΡ€ΠΈΠΏΡ‚ для записи событий
function Write-ServiceEvent {
param([string]$Message, [string]$EntryType = "Information")
Write-EventLog -LogName "Application" -Source "MyNSSMService" -EntryType $EntryType -EventId 1001 -Message $Message
}

⚑ Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ сцСнарии использования

Запуск PowerShell скриптов ΠΊΠ°ΠΊ слуТб

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слуТбы для PowerShell скрипта
$scriptPath = "C:\Scripts\MonitoringScript.ps1"
$arguments = "-ExecutionPolicy Bypass -NoProfile -File `"$scriptPath`""

nssm install PSMonitor "powershell.exe" $arguments
nssm set PSMonitor Description "Π‘Π»ΡƒΠΆΠ±Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° систСмы Π½Π° PowerShell"
nssm set PSMonitor AppStdout "C:\Logs\PSMonitor.log"

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слуТб для Node.js ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

# Настройка Node.js прилоТСния ΠΊΠ°ΠΊ слуТбы
$nodePath = "C:\Program Files\nodejs\node.exe"
$appPath = "C:\WebApp\server.js"

nssm install NodeWebApp $nodePath $appPath
nssm set NodeWebApp AppDirectory "C:\WebApp"
nssm set NodeWebApp AppEnvironmentExtra "NODE_ENV=production PORT=3000"

Π‘Π»ΡƒΠΆΠ±Π° для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ настройки Redis ΠΊΠ°ΠΊ слуТбы Windows
nssm install RedisService "C:\Redis\redis-server.exe" "C:\Redis\redis.conf"
nssm set RedisService Description "Redis сСрвСр ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ"
nssm set RedisService AppPriority NORMAL_PRIORITY_CLASS

πŸ” Диагностика ΠΈ устранСниС нСисправностСй

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π‘Π»ΡƒΠΆΠ±Π° Π½Π΅ запускаСтся

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса слуТбы
nssm status MyService

# ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π»ΠΎΠ³ΠΎΠ² запуска
Get-Content "C:\Logs\MyService\stderr-*.log" -Tail 20

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π² доступа
icacls "C:\Apps\myapp.exe" /verify

⚠️ Π’ΠΠ–ΠΠž: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ учСтная запись слуТбы ΠΈΠΌΠ΅Π΅Ρ‚ достаточныС ΠΏΡ€Π°Π²Π° для доступа ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ВысокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов

# ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ использования памяти (Ρ‡Π΅Ρ€Π΅Π· рССстр)
$servicePath = "HKLM:\SYSTEM\CurrentControlSet\Services\MyService\Parameters"
Set-ItemProperty -Path $servicePath -Name "AppMemoryLimit" -Value 536870912
# 512MB

ΠžΡ‚Π»Π°Π΄ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Event Viewer

# Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ событий NSSM Π² ΠΆΡƒΡ€Π½Π°Π»Π΅
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'} |
Where-Object { $_.Message -like "*MyService*" } |
Select-Object TimeCreated, LevelDisplayName, Message

πŸ› οΈ Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для систСмных администраторов

1. Бтандартизация развСртывания

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ шаблонного скрипта развСртывания
function Deploy-StandardService {
param(
[string]$ServiceName,
[string]$AppPath,
[string]$Environment = "production"
)

$standardLogPath = "C:\Logs\Services\$ServiceName"
New-Item -Path $standardLogPath -ItemType Directory -Force

nssm install $ServiceName $AppPath
nssm set $ServiceName Description "ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ слуТба: $ServiceName"
nssm set $ServiceName AppStdout "$standardLogPath\output.log"
nssm set $ServiceName AppStderr "$standardLogPath\error.log"
nssm set $ServiceName AppRotateFiles 1
nssm set $ServiceName AppRotateBytes 10485760
nssm set $ServiceName AppThrottle 5000

Write-Host "Π‘Π»ΡƒΠΆΠ±Π° $ServiceName Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Π° ΠΏΠΎ стандартам! βœ…" -ForegroundColor Green
}

2. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ состояния слуТб

# Π‘ΠΊΡ€ΠΈΠΏΡ‚ СТСнСдСльного Π°ΡƒΠ΄ΠΈΡ‚Π° слуТб NSSM
$services = Get-Service | Where-Object { $_.ServiceName -match "nssm" }
$report = @()

foreach ($service in $services) {
$report += [PSCustomObject]@{
ServiceName = $service.Name
Status = $service.Status
StartType = $service.StartType
LastRestart = (Get-EventLog -LogName System -Source "Service Control Manager" |
Where-Object { $_.Message -like "*$($service.Name)*started*" } |
Select-Object -First 1).TimeGenerated
}
}

$report | Export-Csv "C:\Reports\NSSM_Services_$(Get-Date -Format 'yyyy-MM-dd').csv" -NoTypeInformation

3. БСзопасная конфигурация

# Настройка бСзопасности для критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… слуТб
function Secure-NSSMService {
param([string]$ServiceName)

# Запуск ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи
nssm set $ServiceName ObjectName "NT SERVICE\$ServiceName"

# Настройка зависимостСй ΠΎΡ‚ систСмных слуТб
nssm set $ServiceName DependOnService "Eventlog Winmgmt"

# ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ дСйствий ΠΏΡ€ΠΈ сбоС
nssm set $ServiceName AppExit Default Restart
nssm set $ServiceName AppRestartDelay 60000
# 1 ΠΌΠΈΠ½ΡƒΡ‚Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ
}

πŸ”„ Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Windows 10/11/12

NSSM ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстим с соврСмСнными вСрсиями Windows ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ бСзопасности:

  • Windows 10: Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСх рСдакций​
  • Windows 11: Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π½ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ бСзопасности​
  • Windows 12 (готовящаяся ΠΊ выпуску): ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ полная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° основС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости Windows​

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ для Windows 11/12

# Настройка слуТб с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ бСзопасности Windows 11
nssm set MyService AppNoConsole 1
# ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ консольного ΠΎΠΊΠ½Π°
nssm set MyService AppAffinity "0x3"
# ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π²ΡƒΠΌ ядрам CPU

πŸ“Š Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с соврСмСнным ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для систСм с NVIDIA RTX 4070/5070

# Настройка GPU-зависимых слуТб
function Configure-GPUService {
param([string]$ServiceName)

# Настройка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния для CUDA
$gpuEnv = "CUDA_VISIBLE_DEVICES=0 NVIDIA_VISIBLE_DEVICES=0"
nssm set $ServiceName AppEnvironmentExtra $gpuEnv

# Высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ для GPU-интСнсивных Π·Π°Π΄Π°Ρ‡
nssm set $ServiceName AppPriority HIGH_PRIORITY_CLASS

# Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² NVIDIA
nssm set $ServiceName DependOnService "NVDisplay.ContainerLocalSystem"
}

Π Π°Π±ΠΎΡ‚Π° с соврСмСнными процСссорами

# ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для многоядСрных CPU (Intel 13-14 ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅, AMD Ryzen 7000)
nssm set MyService AppAffinity "0xFF"
# ИспользованиС всСх 8 ядСр
nssm set MyService AppPriority "ABOVE_NORMAL_PRIORITY_CLASS"

🚨 ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ рисках ΠΈ бСзопасности

⚠️ ΠšΠ Π˜Π’Π˜Π§Π•Π‘ΠšΠ˜Π• ΠŸΠ Π•Π”Π£ΠŸΠ Π•Π–Π”Π•ΠΠ˜Π―:

  1. ΠŸΡ€Π°Π²Π° доступа: ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ настройка ΠΏΡ€Π°Π² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ систСмы
  2. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ рСсурсов: Π‘Π»ΡƒΠΆΠ±Ρ‹ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°Ρ‚ΡŒ систСмныС рСсурсы
  3. Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π‘Π΅Π· Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ диск
  4. ОбновлСния: РСгулярно провСряйтС обновлСния NSSM для исправлСния уязвимостСй​

# Базовая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° бСзопасности слуТбы
function Test-ServiceSecurity {
param([string]$ServiceName)

$service = Get-Service -Name $ServiceName
$process = Get-WmiObject -
Class Win32_Service -Filter "Name='$ServiceName'"

Write-Host "πŸ”’ Анализ бСзопасности слуТбы: $ServiceName" -ForegroundColor Yellow
Write-Host "УчСтная запись: $($process.StartName)" -ForegroundColor Cyan
Write-Host "Π’ΠΈΠΏ запуска: $($process.StartMode)" -ForegroundColor Cyan

if ($process.StartName -eq "LocalSystem") {
Write-Warning "⚠️ Π‘Π»ΡƒΠΆΠ±Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ LocalSystem - рассмотритС использованиС ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи"
}
}

πŸ“‹ FAQ - Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

-2

🎯 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

NSSM прСдставляСт собой Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ инструмСнт для систСмных администраторов ΠΈ DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Windows-инфраструктурС. Π•Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности управлСния Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ прСвосходной Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ Ρ‚ΠΈΠΏΠ° srvany.exe.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства NSSM для соврСмСнной IT-инфраструктуры:

  • πŸ”„ АвтоматичСский ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ пСрСзапуск критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… слуТб
  • πŸ›‘οΈ Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности бСзопасности ΠΈ управлСния ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа
  • πŸ“Š Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°ΡƒΠ΄ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ слуТб
  • ⚑ ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· PowerShell ΠΈ CLI
  • πŸ”§ ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты диагностики ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

πŸ”” ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π» T.E.X.H.O Windows & Linux для получСния Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π³Π°ΠΉΠ΄ΠΎΠ² ΠΏΠΎ систСмному Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Windows 10/11/12 ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Linux!

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ сообщСству экспСртов ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ настройкС соврСмСнного ΠΆΠ΅Π»Π΅Π·Π° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния! πŸ’‘πŸš€

-3

#NSSM #WindowsServices #SystemAdministration #WindowsServer #IT #DevOps #PowerShell #WindowsOptimization #ServiceManager #Windows10 #Windows11 #Windows12 #SystemSecurity #Automation #ITInfrastructure #ServiceMonitoring #WindowsTools #ProfessionalIT #SystemTuning #EnterpriseWindows #ITExpert #WindowsManagement #ServiceDeployment #ITSolutions #TechnicalGuides #WindowsAdministration #ITAutomation #SystemOptimization #WindowsTips #ITSupport