NSSM (Non-Sucking Service Manager) β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ ΠΈ IT-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ Windows. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ srvany.exe ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, NSSM ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ Π² Windows 10, 11 ΠΈ Π³ΡΡΠ΄ΡΡΠ΅ΠΉ Windows 12.β
π‘ ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° NSSM
ΠΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
NSSM ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΡΠ»ΡΠΆΠ± ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΡ , ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅Ρ ΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΡ Π΅ΠΌΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²:β
- Ctrl+C ΡΠΈΠ³Π½Π°Π»Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- WM_CLOSE ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΊΠΎΠ½
- WM_QUIT ΡΠΎΠ±ΡΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- TerminateProcess() Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡββ
Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
- ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ CLI Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈββ
- ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ I/O ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ°ΠΉΠ»Ρ Π»ΠΎΠ³ΠΎΠ²β
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»ΡΠΆΠ±β
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²β
βοΈ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π±Π°Π·ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° NSSM
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
β οΈ ΠΠΠΠΠΠΠΠ: Π‘ΠΊΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ NSSM ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° https://nssm.cc Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.β
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΡΠ΅Π· Chocolatey (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ)
Set-ExecutionPolicy Bypass -Scope Process -Force
choco install nssm
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΡΡΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π°ΡΡ ΠΈΠ² Ρ https://nssm.cc/downloadβ
- Π Π°ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ C:\Tools\nssm\
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΡΡΡ ΠΊ 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"
π¨ ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΡΠΊΠ°Ρ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
β οΈ ΠΠ ΠΠ’ΠΠ§ΠΠ‘ΠΠΠ ΠΠ ΠΠΠ£ΠΠ ΠΠΠΠΠΠΠ―:
- ΠΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°: ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠ°Π² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΡΡΡΠΎΠ²: Π‘Π»ΡΠΆΠ±Ρ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΈΡΡΠ΅ΡΠΏΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: ΠΠ΅Π· ΡΠΎΡΠ°ΡΠΈΠΈ Π»ΠΎΠ³ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΄ΠΈΡΠΊ
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ: Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ 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 - Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
π― ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
NSSM ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² ΠΈ DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² Windows-ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅. ΠΠ³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡΡ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌ ΡΠΈΠΏΠ° srvany.exe.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° NSSM Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ IT-ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ:
- π ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ ΡΠ»ΡΠΆΠ±
- π‘οΈ Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°
- π ΠΠ΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°ΡΠ΄ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ»ΡΠΆΠ±
- β‘ ΠΡΠΎΡΡΠΎΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· PowerShell ΠΈ CLI
- π§ ΠΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
π ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΊΠ°Π½Π°Π» T.E.X.H.O Windows & Linux Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π³Π°ΠΉΠ΄ΠΎΠ² ΠΏΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Windows 10/11/12 ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ ΡΠ°Π±ΠΎΡΡ Ρ Linux!
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΆΠ΅Π»Π΅Π·Π° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ! π‘π
#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