Script für automatischen server start nach crash

Akkulaus

Lt. Commander
Registriert
Nov. 2014
Beiträge
2.039
Hallo. Hoffe ich bin hier richtig.

Und zwar suche ich für Windows einen Script der einen GameServer automatisch startet sobald der Server mal abgestürzt ist.
Der Server läuft über die UnrealEngine und der Server wird über eine .bat Datei gestartet.
 
Würde für solche Dinge inzwischen ChatGPT herziehen.

Beispiel meiner Frage an ChatGPT:



Schreibe mir ein PowerShellscript, dass einen Windwosdienst anlegt der folgendes macht:- Überwachung einer laufender test.bat- Stürzt die überwachte test.bat ab, bleibt stehen oder wird geschlossen, warte 30 Sekunden- Nach den gewarteten 30 Sekunden starte die test.bat

Antwort:
PowerShell:
Hier ist ein PowerShell-Skript, das einen Windows-Dienst erstellt, der eine Testbatchdatei überwacht und bei einem Absturz oder einem Hängen für 30 Sekunden wartet, bevor er die Batchdatei erneut startet:

```powershell
# Überwachungsintervall in Sekunden
$MonitoringInterval = 5

# Pfad zur Testbatchdatei
$BatchFilePath = "C:\Pfad\zur\test.bat"

# Dienstname
$ServiceName = "TestBatchService"

# Dienstbeschreibung
$ServiceDescription = "Überwacht die Testbatchdatei und startet sie neu, falls erforderlich."

# Dienst startet die Batchdatei
$ServiceScript = @"
while($true) {
    if (-not (Test-Path -Path $BatchFilePath)) {
        Write-Output "Batch-Datei nicht gefunden. Überwachung wird fortgesetzt."
        Start-Sleep -Seconds $MonitoringInterval
        continue
    }

    $process = Get-Process -Name "test" -ErrorAction SilentlyContinue
    if ($process -eq $null) {
        Write-Output "Die Batchdatei wurde beendet oder ist abgestürzt. Warten auf Neustart..."
        Start-Sleep -Seconds 30
        Start-Process -FilePath $BatchFilePath -NoNewWindow
    }

    Start-Sleep -Seconds $MonitoringInterval
}
"@

# Dienst installieren
New-Service -Name $ServiceName -BinaryPathName "powershell.exe -ExecutionPolicy Bypass -Command $ServiceScript" -Description $ServiceDescription -StartupType Automatic

# Dienst starten
Start-Service -Name $ServiceName
```

Bitte ersetzen Sie `C:\Pfad\zur\test.bat` durch den tatsächlichen Pfad Ihrer Testbatchdatei. Stellen Sie sicher, dass die Batchdatei mit dem Namen "test.bat" vorliegt. Das Skript erstellt einen Dienst mit dem Namen "TestBatchService", der die Batchdatei überwacht und neu startet, wenn sie beendet wird oder abstürzt.
 
@airwave Du hast aber schon bedacht, dass Batchdateien nicht selbst, sondern über die cmd.exe ausgeführt werden? Heißt, dieser von ChatGPT gelieferte Dienst ist auf eine Batchdatei gesehen unbrauchbar.

Das Script würde theoretisch nur funktionieren, wenn man die Variable $BatchFilePath so anpasst, dass dort der komplette Inhalt der Batch drin steht. Beispiel
Code:
$BatchFilePath = "C:\test\start.exe -minimized -Port 123"
 
Akkulaus schrieb:
Und zwar suche ich für Windows einen Script der einen GameServer automatisch startet sobald der Server mal abgestürzt ist.
Im Windows Scheduler angeben, daß deine .bat nach'm Neustart ausgeführt wird.
 
@Micke Mein GameServer läuft auf einem Windows Server. Windows selbst stürzt nicht ab sondern der GameServer mit Pech.

Da ich nicht immer Kontrollieren kann ob der Server noch läuft wegen Arbeit. Genau deswegen suche ich ja nach einen Script. Kann der Windows Scheduler das auch? bzw. erkennt es, wenn der Server einfach abstürzt? Es kommt ja keine Fehlermeldung. CMD Konsole geht dann einfach zu.
 
ah, das geht aber auch - du kannst angeben: GameServer (also die .bat) alle x Minuten starten, sofern der Task nicht bereits läuft

edit: als Dienst wie in #8 spart man sich dieses Tricksen
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: qiller
Da ich mich mit sowas noch nie beschäftigt habe, ist das ganze für mich alles neu. Daher weiß ich nicht was alles an Methoden gibt.
 
Zurück
Oben