Das Starten eines Befehls in einer neuen Bildschirmsitzung funktioniert nicht

Das Starten eines Befehls in einer neuen Bildschirmsitzung funktioniert nicht

Ich möchte einen Befehl in einer neuen Bildschirmsitzung ausführen (und mich davon trennen), aber ich bekomme es nicht zum Laufen. Ich habe versucht, einen Prozess in einer neuen Bildschirmsitzung zu starten und mich davon zu trennen, und zwar folgendermaßen:

screen -d -m mycommmand

Aber wenn ich versuche, eine Verbindung zu dieser Bildschirmsitzung herzustellen mit

screen -r

Ich erhalte die Meldung "Es gibt keinen Bildschirm, der fortgesetzt werden kann". Ich habe auch versucht, einen Befehl in einer neuen Bildschirmsitzung mit zu starten

screen mycommand

Wenn ich das tue, wird eine neue Bildschirmsitzung gestartet, aber der Befehl wird nicht ausgeführt.

Der Befehl ist ein .sh-Skript, das einen Spieleserver startet, aber der Spieleserver startet nicht.

[Bearbeiten] Da einige Leute nach dem genauen Befehl gefragt haben, hier ist er: Es ist ein Bash-Skript, das einen Minecraft-Server in einer separaten Bildschirmsitzung starten soll.

./startServer.sh

Hier ist das .sh-Skript:

cd "/home/tim/minecraft/survivalServer"
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui

Das Problem besteht nun darin, dass beim Ausführen des Skripts die Erstellung der neuen Bildschirmsitzung fehlschlägt. Warum ist das so?

Hilfe wird sehr geschätzt. Danke

Antwort1

Das Problem besteht darin, dass Sie versuchen, eine verschachtelte, getrennte Bildschirminstanz innerhalb einer getrennten Bildschirminstanz zu starten. Ihr Skript enthält die Zeile:

screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui

Dadurch wird screen gestartet, die screen-Sitzung wird benannt, minecraft-server-1-14-4dann wird minecraft gestartet und die Verbindung wird getrennt. Sie versuchen aber auch, auszuführen screen -d -m ./startserver.sh. Bevor die screen-Sitzung im Skript erstellt wird, führen Sie das Skript also bereits in einer getrennten screen-Sitzung aus. Das ... funktioniert normalerweise nicht so gut.

Es ist funktional dasselbe wie dies hier:

wolferz@khaos ~ $ screen -m -d screen -S 'mysession' -m -d top
wolferz@khaos ~ $ screen -r
There is a screen on:
        24850.mysession (07/24/2019 10:47:46 PM)        (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed.

Sie möchten das Skript direkt ausführen. Führen Sie dazu einfach den Befehl aus ./startserver.sh. Dadurch sollten Sie zur Eingabeaufforderung zurückkehren. Sie können dann wie gewohnt eine Verbindung zu Ihrer Minecraft-Konsole herstellen screen -r.

verwandte Informationen