screen Session automatisch starten
screen Session automatisch starten
Hallo Debian-Community,
Ich habe lange nch einer Lösung gesucht, aber nichts brauchbares dazu gefunden, deshalb möchte ich hier mal nachfragen.
Ich habe einen GameServer laufen, den man erstmal mit ./server starten kann, dann ist er natürlich normal in der Konsole.
Ich starte ihn deshalb mit "screen -d -m -S GameServer ./server".
Nun habe ich aber das Problem, dass der Server manchmal einfach abschmiert, d.h. die Screen Session ist dann auch weg (bei screen -ls kommt nichts mehr).
Ich möchte nun, dass alle 10 Minuten überprüft wird, ob die Session vorhanden ist und wenn sie nicht vorhanden ist, mit dem o.g. Befehl neugestartet wird.
Könnte mir jemand von euch auf die Sprünge helfen?
Mit freundlichem Gruß
Trevit
Ich habe lange nch einer Lösung gesucht, aber nichts brauchbares dazu gefunden, deshalb möchte ich hier mal nachfragen.
Ich habe einen GameServer laufen, den man erstmal mit ./server starten kann, dann ist er natürlich normal in der Konsole.
Ich starte ihn deshalb mit "screen -d -m -S GameServer ./server".
Nun habe ich aber das Problem, dass der Server manchmal einfach abschmiert, d.h. die Screen Session ist dann auch weg (bei screen -ls kommt nichts mehr).
Ich möchte nun, dass alle 10 Minuten überprüft wird, ob die Session vorhanden ist und wenn sie nicht vorhanden ist, mit dem o.g. Befehl neugestartet wird.
Könnte mir jemand von euch auf die Sprünge helfen?
Mit freundlichem Gruß
Trevit
Re: screen Session automatisch starten
Kleines Bashscript, welches die Existenz der session überprüft und dann ggf. neu startet, das dann in die crontab des users schreiben mit 10-Minutenintervall.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: screen Session automatisch starten
Danke für die schnelle Antwort.
Das mit dem Crontab ist ja erstmal nicht schwierig, bloß
hab ich keine Ahnung wie dieses Bashscript aussehen sollte.
Das mit dem Crontab ist ja erstmal nicht schwierig, bloß
hab ich keine Ahnung wie dieses Bashscript aussehen sollte.
Re: screen Session automatisch starten
Beispielsweise:
Gestartet wird eine screen-Session mit der UID des Benutzers (ganz praktisch, um die zu unterscheiden)
screen -S game_xy_$(id -u) whateverinto-gameserver-dingens
edit: du kannst das natürlich auch "GameServer" nennen. Ist bloß ne Empfehlung für Multiuser-Betrieb.
Gestartet wird eine screen-Session mit der UID des Benutzers (ganz praktisch, um die zu unterscheiden)
screen -S game_xy_$(id -u) whateverinto-gameserver-dingens
Code: Alles auswählen
#!/bin/bash
if [[ -z $(screen -ls | grep game_XY_$(id -u)) ]]; then
# session existiert nicht
screen -d -m -S game_XY_$(id -u) xeyes
fi
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: screen Session automatisch starten
Vielen, vielen Dank.
Es funktioniert super. Danke für die schnelle und gute Hilfe.
Hat zwar nicht auf Anhieb geklappt, aber Fehler stehen ja
in var/mail.
Es funktioniert super. Danke für die schnelle und gute Hilfe.
Hat zwar nicht auf Anhieb geklappt, aber Fehler stehen ja
in var/mail.
Re: screen Session automatisch starten
Muss mich nochmal wegen eines kleinen Problems melden.
So sieht mein Code aus (Datei autostart.sh):
Folgende Pfade gehören dazu:
/home/game/autostart.sh
/home/game/server ( ist eine Datei )
Wenn ich nun in den Ordner navigiere und ./autostart.sh funktioniert es.
Der Crontab aber läuft einfach nicht mehr:
*/10 * * * * ./home/game/autostart.sh
So sieht mein Code aus (Datei autostart.sh):
Code: Alles auswählen
#!/bin/bash
if [[ -z $(screen -ls | grep Game_$(id -u)) ]]; then
# session existiert nicht
screen -d -m -S Game_$(id -u) ./server
fi
/home/game/autostart.sh
/home/game/server ( ist eine Datei )
Wenn ich nun in den Ordner navigiere und ./autostart.sh funktioniert es.
Der Crontab aber läuft einfach nicht mehr:
*/10 * * * * ./home/game/autostart.sh
Re: screen Session automatisch starten
Wie kommst du denn bitte auf ./home/? Lies mal http://de.wikipedia.org/wiki/Pfadname#A ... _Pfadnamen dann weißt du auch, warum dein Script nicht gestartet wird (und warum es selbst auch nur unter bestimmten Umständen funktionieren würde).
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: screen Session automatisch starten
Den . hab ich versehentlich mit kopiert.
*/10 * * * * /home/game/autostart.sh
*/10 * * * * /home/game/autostart.sh
Re: screen Session automatisch starten
Im Script selbst greifst du aber auch relativ zu. Weißt du denn, in welchem Kontext (Pfad, Umgebungsvariablen..) das Script ausgeführt wird?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: screen Session automatisch starten
Also ich habe die Datei im selben Ordner, wie die Datei server, um den Server zu starten der Crontab sieht dann so aus, wie ich ihn gerade gepostet habe.
Wenn ich den chmod der Datei autostart.sh auf 644 setze kommt auch eine Fehler, dass der crontab nicht ausgeführt werden kann. Somit hab ich der
Datei 777 gegeben, es kam kein Error, die Session startet trotzdem nicht
Wenn ich den chmod der Datei autostart.sh auf 644 setze kommt auch eine Fehler, dass der crontab nicht ausgeführt werden kann. Somit hab ich der
Datei 777 gegeben, es kam kein Error, die Session startet trotzdem nicht
Re: screen Session automatisch starten
Da fehlen wohl die ganzen Grundlagen...
1. Die Datei muss ausführbar sein
2. crontab-Scripte laufen im Homeverzeichnis des Users, es wird also bei ./server im Script /home/game/server ausgeführt. Wenn das so stimmt, ist mein Einwand no. 2 hinfällig. Ansonsten wäre das eine Erklärung für "Session startet trotzdem nicht". Schau ins syslog, da steht genau, warum.
1. Die Datei muss ausführbar sein
2. crontab-Scripte laufen im Homeverzeichnis des Users, es wird also bei ./server im Script /home/game/server ausgeführt. Wenn das so stimmt, ist mein Einwand no. 2 hinfällig. Ansonsten wäre das eine Erklärung für "Session startet trotzdem nicht". Schau ins syslog, da steht genau, warum.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht