Wie kann ich eine neue Bildschirmsitzung erstellen und einen Befehl ausführen, den Bildschirm aber dort belassen?

Wie kann ich eine neue Bildschirmsitzung erstellen und einen Befehl ausführen, den Bildschirm aber dort belassen?

Hallo Leute, ich versuche, meinen Minecraft-Server mit meinem Server zu starten. Ich werde cron verwenden, sobald ich die richtigen Befehle herausgefunden habe. Ich möchte, dass Minecraft in einem neuen Bildschirm mit dem Titel „Minecraft“ startet, und ich möchte, dass an diese Sitzung ein Befehl gesendet wird, der den Server startet. Jeden Morgen um 3 Uhr möchte ich den Befehl „stop“ senden, um den Minecraft-Server zu stoppen, und dann den Befehl zum Starten des Servers senden (Minecraft wird fehlerhaft, wenn es nicht ab und zu neu gestartet wird). Ich habe mit den Bildschirmoptionen herumgespielt und Minecraft für ein paar Sekunden gestartet und es dann per Bildschirmabbruch beendet. Nach dem, was ich online lese, sollte dieser Befehl funktionieren.

screen -dmS Minecraft java -Xmx12G -Xms12G -jar /home/alan/minecraft/forge-1.16.5-36.2.30.jar --nogui

Ich möchte mich erneut mit dieser Sitzung verbinden, um Befehle einzugeben oder den Minecraft-Server neu zu starten, da ich eine Änderung vorgenommen habe. Alle von mir ausgeführten Befehle haben nicht funktioniert. Ich gebe „screen -ls“ ein und meine „Minecraft“-Sitzung ist nicht da. Ich weiß, wie man cron verwendet, aber ich verstehe screen offensichtlich nicht. In meiner Gegend kommt es häufig zu Stromausfällen, daher lasse ich meinen Server über eine USV herunterfahren und ein Raspberry PI schaltet ihn wieder ein, wenn die Stromversorgung wiederhergestellt ist. Es wäre schön, Minecraft in meinen Start einzubeziehen. Danach werden alle meine Dienste automatisch gestartet und gestoppt, ohne dass ich eingreifen muss.

Antwort1

Da Sie Ihren Bildschirm benannt haben Minecraft,

# Tell Minecraft to gracefully stop.
# Ending Minecraft will terminate Java
# systemd will kill Screen after the 10-second delay. No explicit kill for Screen needed
screen -p 0 -S Minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
screen -p 0 -S Minecraft -X eval 'stuff "save-all"\\015'
screen -p 0 -S Minecraft -X eval 'stuff "stop"\\015'
sleep 10

Es ist einfach, Ihre Befehle in einen systemd-Dienst einzubinden, der Ihnen außerdem einen automatischen Start beim Booten, eine Statusüberwachung und eine einfache Start-/Stopp-/Neustart-Steuerung mit systemctl ermöglicht.

Im Allgemeinen müssen Sie den Bildschirm nicht geöffnet lassen, da die gesamte Ausgabe protokolliert wird und alle Serverbefehle über die Administratorkonsole eingegeben werden können.

Ich habe vor ein paar Jahren einen ganzen Blog-Beitrag über den gesamten Prozess geschrieben: Es ist der erste Abschnitt vonhttp://cheesehead-techblog.blogspot.com/2019/08/toggling-minecraft-server-using-systemd.html

verwandte Informationen