screen Session automatisch starten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Trevit
Beiträge: 28
Registriert: 03.12.2010 21:37:25

screen Session automatisch starten

Beitrag von Trevit » 17.05.2012 11:35:23

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

Benutzeravatar
TRex
Moderator
Beiträge: 8375
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: screen Session automatisch starten

Beitrag von TRex » 17.05.2012 11:41:39

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 nichtDon't break debian!Wie man widerspricht

Trevit
Beiträge: 28
Registriert: 03.12.2010 21:37:25

Re: screen Session automatisch starten

Beitrag von Trevit » 17.05.2012 11:43:26

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.

Benutzeravatar
TRex
Moderator
Beiträge: 8375
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: screen Session automatisch starten

Beitrag von TRex » 17.05.2012 11:56:35

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

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

edit: du kannst das natürlich auch "GameServer" nennen. Ist bloß ne Empfehlung für Multiuser-Betrieb.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Trevit
Beiträge: 28
Registriert: 03.12.2010 21:37:25

Re: screen Session automatisch starten

Beitrag von Trevit » 17.05.2012 12:24:53

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.

Trevit
Beiträge: 28
Registriert: 03.12.2010 21:37:25

Re: screen Session automatisch starten

Beitrag von Trevit » 18.05.2012 12:09:03

Muss mich nochmal wegen eines kleinen Problems melden.

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
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

Benutzeravatar
TRex
Moderator
Beiträge: 8375
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: screen Session automatisch starten

Beitrag von TRex » 18.05.2012 12:15:05

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 nichtDon't break debian!Wie man widerspricht

Trevit
Beiträge: 28
Registriert: 03.12.2010 21:37:25

Re: screen Session automatisch starten

Beitrag von Trevit » 18.05.2012 12:57:47

Den . hab ich versehentlich mit kopiert.
*/10 * * * * /home/game/autostart.sh

Benutzeravatar
TRex
Moderator
Beiträge: 8375
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: screen Session automatisch starten

Beitrag von TRex » 18.05.2012 13:21:44

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 nichtDon't break debian!Wie man widerspricht

Trevit
Beiträge: 28
Registriert: 03.12.2010 21:37:25

Re: screen Session automatisch starten

Beitrag von Trevit » 18.05.2012 13:28:12

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

Benutzeravatar
TRex
Moderator
Beiträge: 8375
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: screen Session automatisch starten

Beitrag von TRex » 18.05.2012 14:17:06

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.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Antworten