|
|
|
|
|
$ErrorActionPreference = "Continue" |
|
|
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path |
|
|
Set-Location $scriptPath |
|
|
|
|
|
|
|
|
$logFile = Join-Path $scriptPath "server.log" |
|
|
|
|
|
function Write-Log { |
|
|
param([string]$Message) |
|
|
$timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss' |
|
|
$logMessage = "[$timestamp] $Message" |
|
|
Write-Host $logMessage |
|
|
Add-Content -Path $logFile -Value $logMessage |
|
|
} |
|
|
|
|
|
function Start-ServerProcess { |
|
|
Write-Log "μλ² νλ‘μΈμ€ μμ μ€..." |
|
|
|
|
|
$processInfo = New-Object System.Diagnostics.ProcessStartInfo |
|
|
$processInfo.FileName = "python" |
|
|
$processInfo.Arguments = "run.py" |
|
|
$processInfo.WorkingDirectory = $scriptPath |
|
|
$processInfo.UseShellExecute = $false |
|
|
$processInfo.RedirectStandardOutput = $true |
|
|
$processInfo.RedirectStandardError = $true |
|
|
$processInfo.CreateNoWindow = $true |
|
|
|
|
|
$process = New-Object System.Diagnostics.Process |
|
|
$process.StartInfo = $processInfo |
|
|
|
|
|
|
|
|
$process.add_OutputDataReceived({ |
|
|
param($sender, $e) |
|
|
if ($e.Data) { |
|
|
Write-Log $e.Data |
|
|
} |
|
|
}) |
|
|
|
|
|
$process.add_ErrorDataReceived({ |
|
|
param($sender, $e) |
|
|
if ($e.Data) { |
|
|
Write-Log "ERROR: $($e.Data)" |
|
|
} |
|
|
}) |
|
|
|
|
|
$process.Start() | Out-Null |
|
|
$process.BeginOutputReadLine() |
|
|
$process.BeginErrorReadLine() |
|
|
|
|
|
return $process |
|
|
} |
|
|
|
|
|
|
|
|
Write-Log "=== μλ² μλ μ¬μμ μ€ν¬λ¦½νΈ μμ ===" |
|
|
|
|
|
while ($true) { |
|
|
$process = $null |
|
|
try { |
|
|
$process = Start-ServerProcess |
|
|
Write-Log "μλ² νλ‘μΈμ€ μμλ¨ (PID: $($process.Id))" |
|
|
|
|
|
|
|
|
$process.WaitForExit() |
|
|
|
|
|
$exitCode = $process.ExitCode |
|
|
Write-Log "μλ² νλ‘μΈμ€ μ’
λ£λ¨ (Exit Code: $exitCode)" |
|
|
|
|
|
|
|
|
if (!$process.HasExited) { |
|
|
$process.Kill() |
|
|
} |
|
|
$process.Dispose() |
|
|
} |
|
|
catch { |
|
|
Write-Log "μ€λ₯ λ°μ: $_" |
|
|
if ($process -and !$process.HasExited) { |
|
|
try { |
|
|
$process.Kill() |
|
|
} catch {} |
|
|
} |
|
|
} |
|
|
|
|
|
Write-Log "5μ΄ ν μλ²λ₯Ό μ¬μμν©λλ€..." |
|
|
Start-Sleep -Seconds 5 |
|
|
} |
|
|
|
|
|
|
|
|
|