Screen frage

Tealk

New Member
Hi ich weiß nicht ob das hier richtig ist aber ich versuch es einfach mal, ich habe für einen Server ein Startscript geschrieben das über screen läuft
hier der code
[np]35117[/np]

nun will ich aber, wenn ich den Server stoppe dass,
1. in den screen der befehl save-all geschrieben wird
2. der server villeicht nicht gekillt wird sondern der screen beendet
Code:
kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`

weiß jemand wie ich das schreiben muss?
 
Was willst du nun ?

das mit dem an Screen senden kannst du so erledigen


screen -dr $Servername -X stuff "save-all"
screen -dr $Servername -X stuff $'\n'
screen -d $Servername


das ist (falls ich dich richtig verstanden habe) alles :)


und das greppen kannst du dir eigentlich ersparen

- start
screen -dmSL name ./anwendung

- stop
screen -r $name -X quit

nur als Beispiel


Mfg
Impact
 
Last edited by a moderator:
vielen dank für deine schnelle Antwort

habe das jetzt so eingefügt und diese meldung bekommen
Code:
sh-3.2$ ./startserver stop
Stopping Minecraft Server: mcserverThere is a screen on:
        9623.mcserver   (11/22/10 21:19:59)     (Detached)
There is no screen to be detached matching mcserver.
 ... done.
sh-3.2$

hier noch mein startscript

es geht um einen Minecraft server, ich weiß nicht ob das jetzt wer kennt, dort währe es halt eben wichtig dass man save-all vor den server shotdown gemacht wird

Code:
#!/bin/sh 

DIR="/home/minecraft/bin"
DAEMON="java"
PARAMS="-Xmx3072M -Xms3072M -jar"
DATA="Minecraft_Mod.jar"
PARAMS2="nogui"

NAME="mcserver"
DESC="Minecraft Server"

case "$1" in
start)
	if [[ `screen -ls |grep $NAME` ]]; then
		echo "found running prozess: $DESC: $NAME"
		echo "Dont start the Server twice"
		exit 1
		else
			if [ "$UID" = "0" ]; then
				echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
				for c in $(seq 1 10); do
					echo -n "!"
					sleep 1
				done
				echo !
			fi
			echo "starting the $DESC"
			if [ -e $DIR ];then
				if [ -x $DIR ]; then
					cd $DIR
					if [ ! -x $DATA ]; then
						echo "$DATA is not executable, trying to set it"
						chmod u+x $DATA
					else
						screen -d -m -S $NAME $DAEMON $PARAMS $DATA $PARAMS2
					fi
				else
					echo "No such directory: $DIR!"
				fi
			fi
	fi
;;

stop)
	if [[ `screen -ls |grep $NAME` ]]; then
		echo -n "Stopping $DESC: $NAME"
		screen -dr $NAME -X stuff "save-all"
		screen -dr $NAME -X stuff $'\n'
		screen -d $NAME
		echo " ... done."
		sleep 5
	else
		echo "Coulnd't find a running $DESC"
	fi
;;

restart)
	$0 stop && $0 start || exit 1
;;
	
status)
	if [[ `screen -ls |grep $NAME` ]]; then
		echo "found running prozess: $DESC: $NAME"
		else
		echo "no running prozess: $DESC: $NAME"
	fi
;;

*)
	echo "Usage: $0 {start|stop|restart|status}"
	exit 2
	esac
	
	exit 0
 
Hey


also erstmal du hast ziemlich viel unnötigen Mist in deinem Script ;)


9623.mcserver (11/22/10 21:19:59) (Detached)
There is no screen to be detached matching mcserver.


In der Aktion ist kein Stoppen des Server vorhanden :/


Versuch mal folgendes

screen -dr $NAME -X stuff "save-all"
screen -dr $NAME -X stuff $'\n'
sleep 10 # das speichern dauert sicher oder ?
screen -r $NAME -X quit


Müsste so eigentlich klappen

Mfg
Impact
 
Last edited by a moderator:
kann gut sein mach das auch noch nicht lange ist glaub ich mein 2tes^^

was ich noch nicht ganz verstehe, ist dass im ordner
/dev/pts
die dateien alle die rechte 620 haben so kann man mit denen doch nichtmal was als user anfangen, also user meine ich den user der zugewiesen ist
kann man das irgendwo eisntellen? allein wenn ich in die screen console will muss ich immer die rechte ändern

das mit dem sleep ist eine sehr gute idee

das script funktioniert soweit super, dank dir für deine Hilfe
 
Last edited by a moderator:
Kein Problem ;)


also meine Dateien haben auch die Rechte 620 und ich habe komischerweise keine Probleme :/


Mfg
Impact
 
Code:
root@gserver:~# su mine
sh-3.2$ screen -r mcserver
Cannot open your terminal '/dev/pts/2' - please check.
sh-3.2$

dies heißt ja das die datei 2 nicht ausreichende rechte hat damit ich auf den screen zugreife, wenn ich die rechte erhöhe dann geht es.

Der screen läuft unter dem Benutzer mine
 
Das liegt daran das du mit "su" arbeitest
das hatte bei mir noch nie funktioniert

log dich erneut als "mine" ohne su ein und dann wird alles klappen :)


Mfg
Impact
 
Back
Top