Ergebnis 1 bis 3 von 3

Linux - CLI Session übernehmen?

  1. #1 Zitieren
    Demigod
    Registriert seit
    Dec 2007
    Beiträge
    9.255
    Tag zusammen,


    ich hab folgendes Szenario. Ich lasse ein Headless Ubuntu Server laufen, auf dem beim Boot ein Minecraft-Server gestartet wird.
    Jetzt möchte ich aber die Möglichkeit haben, jederzeit sehen zu können was mir der Server in der Koimmandozeile ausgibt. Per SSH bekomme ich ja eine neue Sitzung, sodass ich da nichts sehen kann.

    Kann mir jemand da weiter helfen?

    MfG
    GRiva
    GRiva ist offline

  2. #2 Zitieren
    Ranger Avatar von Petrus
    Registriert seit
    Sep 2006
    Beiträge
    174
    Nur ein Versuch, ich hab von Servern keinen Plan:
    Code:
    ./server.x86_64 -logfile log.txt && tail -f log.txt
    Petrus ist offline

  3. #3 Zitieren
    Tieftöner Avatar von Lookbehind
    Registriert seit
    Dec 2007
    Beiträge
    15.176
    Starte den MC-Server in einer screen-Session. tmux geht auch, wenn dir das lieber ist.

    Ich hab grad mal meine alten Scripte raus gesucht. Bedenke aber, dass ich die seit Jahren nicht mehr benutzt habe.

    startscreensession.sh
    Code:
    #!/bin/bash
    
    script -c "screen -S minecraft $1" /dev/null
    minecraftserver.sh
    Code:
    #!/bin/bash
    
    exitstatus=0
    
    #Error-Funktion:
    function error_exit {
    	echo $1 >&2
    	exit $2
    }
    
    function error_status {
    	echo $1 >&2
    	exitstatus=$2
    }
    
    # Arbeitsverzeichnis wechseln
    cd ~/server/
    
    #Backup der Welt anlegen
    . ~/bin/backupworld.sh initial
    
    #Config laden
    echo '===================='
    echo 'Lade Config'
    echo '===================='
    . $HOME/bin/servercomunication.cfg
    
    #FiFos anlegen
    echo '===================='
    echo 'Erzeuge FiFos'
    echo '===================='
    mkfifo $inputfifo || error_exit "Fehler beim anlegen des Input-FiFo" 1
    mkfifo $outputfifo || error_exit "Fehler beim anlegen des Output-FiFo" 1
    
    #Server starten
    echo '===================='
    echo 'Starte Server'
    echo '===================='
    tail -f $inputfifo | java -Xmx1536M -Xms1536M -jar minecraft_server.jar nogui
    echo '===================='
    echo 'Server gestoppt'
    echo '===================='
    
    #FiFos löschen
    echo '===================='
    echo 'Entferne FiFos'
    echo '===================='
    rm $outputfifo || exit_status "Fehler beim löschen des output-FiFo" 1
    rm $inputfifo || exit_status "Fehler beim löschen des Input-FiFo" 1
    
    exit $exitstatus
    backupworld.sh
    Code:
    #!/bin/bash
    
    . $HOME/bin/servercomunication.cfg
    
    #Arbeitsverzeichnis wechseln
    cd ~/server/
    
    #Wenn Backup in laufendem Betrieb /save-all und /save-off ausführen
    if [ "$1" != "initial" ]; then
    	echo "/say [Backup] Starte Backup" > $inputfifo
    	logfilesize=`wc -l $serverlogfile | cut -f 1 -d " "`
    	logfilesize=`echo "+$logfilesize"`
    	foundresponse=1
    
    	echo "/save-all" > $inputfifo
    
    	for i in {1..100}; do
    		tail -n $logfilesize $serverlogfile | grep '\[Server thread\/INFO\]\: Saved the world' > /dev/null
    		if [ $? -eq 0 ]; then
    			foundresponse=0
    			break
    		fi
    		sleep 1
    	done
    
    	if [ $foundresponse -gt 0 ]; then
    		echo "Command didn't reach server /save-all" >&2
    		exit 2
    	fi
    
    	foundresponse=2
    	logfilesize=`wc -l $serverlogfile | cut -f 1 -d " "`
            logfilesize=`echo "+$logfilesize"`
    
    	echo "/save-off" > $inputfifo
    
    	for j in {1..100}; do
    		tail -n $logfilesize $serverlogfile | grep '\[Server thread\/INFO\]\: Turned off world auto-saving' > /dev/null
    		if [ $? -eq 0 ]; then
    			foundresponse=0
                            break
                    fi
    		sleep 1
    	done
    
    	if [ $foundresponse -gt 0 ]; then
                    echo "Command didn't reach server /save-off" >§2
                    exit 3
            fi
    fi
    
    #Backup der Welt erstellen
    echo '===================='
    echo 'Erstelle Backup'
    echo '===================='
    BACKUPDATE=`date +%d.%m.%Y-%H:%M`
    tar cfvz ./srv_worldbackup/$BACKUPDATE.tar.gz world
    echo '===================='
    echo 'Backup vollständig'
    echo '===================='
    
    #Wenn Backup im laufenden Betrieb /save-on ausführen
    if [ "$1" != "initial" ]; then
    	logfilesize=`wc -l $serverlogfile | cut -f 1 -d " "`
            logfilesize=`echo "+$logfilesize"`
            foundresponse=3
    
            echo "/save-on" > $inputfifo
    
            for k in {1..100}; do
                    tail -n $logfilesize $serverlogfile | grep '\[Server thread\/INFO\]\: Turned on world auto-saving' > /dev/null
                    if [ $? -eq 0 ]; then
                            foundresponse=0
                            break
                    fi
    		sleep 1
            done
    
    	if [ $foundresponse -gt 0 ]; then
                    echo "Command didn't reach server /save-on" >§2
                    exit 4
            fi
    	echo "/say [Backup] Backup abgeschlossen" > $inputfifo
    	exit 0
    fi
    servercomunication.cfg
    Code:
    ## Konfigurations-Datei für Kommunikation mit MineCraft-Server über FiFo
    
    ## Input-FiFo um Text an Server zu senden
    inputfifo="$HOME/server/serverinput.fifo"
    
    ## Output-FiFo um den Output vom Server lesen zu können
    outputfifo="$HOME/server/serveroutput.fifo"
    
    ## Pfad zum Server-Logfile
    serverlogfile="$HOME/server/logs/latest.log"
    
    ## Default Wartezeit bis Server runter fährt
    servershutdowntime=20
    servercommand.sh
    Code:
    #!/bin/bash
    
    . $HOME/bin/servercomunication.cfg
    echo "/$*" > $inputfifo
    exit 0
    servermsg.sh
    Code:
    #!/bin/bash
    
    . $HOME/bin/servercomunication.cfg
    echo "/say $*" > $inputfifo
    exit 0
    serverstop.sh
    Code:
    #!/bin/bash
    
    . $HOME/bin/servercomunication.cfg
    
    if [ "$1" == "now" ]; then
    	servershutdowntime=0
    fi
    
    if [ "$1" == "-t" ] && [[ "$2" =~ ^[0-9]+$ ]] ; then
    	servershutdowntime=$2
    fi
    
    if [ $servershutdowntime -gt 10 ]; then
    	shutdowntime=$(($servershutdowntime / 2))
    	/bin/echo "/say Server fährt in $servershutdowntime Sekunden runter." > $inputfifo
    	/bin/sleep $shutdowntime
    	while [ $shutdowntime -gt 1 ];
    	do
    		/bin/echo "/say Server fährt in $shutdowntime Sekunden runter." > $inputfifo
    		#/bin/sleep $shutdowntime
    		steptime=$(($shutdowntime / 2))
    		shutdowntime=$(($shutdowntime - $steptime))
    		/bin/sleep $shutdowntime
    	done
    	/bin/sleep 1
    else
    	/bin/sleep $servershutdowntime
    fi
    
    /bin/echo "/say Server fährt jetzt runter." > $inputfifo
    /bin/sleep 1
    
    /bin/echo "/stop" > $inputfifo
    
    inputTailPid=`/usr/bin/lsof -F p $inputfifo | cut -d "p" -f 2`
    
    for i in {0..100}; do
    	/usr/bin/lsof -F p $HOME/server/minecraft_server.jar > /dev/null
    	if [ $? != 0 ]; then
    		/bin/kill -s SIGKILL `/bin/echo $inputTailPid`
    		exit 0
    	fi
    	sleep 1
    done
    
    /bin/echo "Error shutting down Server."
    /bin/kill -s SIGKILL `/bin/echo $inputTailPid`
    
    exit 1
    resumescreensession.sh
    Code:
    #!/bin/bash
    
    script -c 'screen -dr minecraft' /dev/null
    Lookbehind ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •