GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Senden von Texteingaben an einen abgetrennten Bildschirm?

Ich versuche, einen Minecraft-Server auf meinem UnRAID-Server auszuführen.

Der Server läuft in der Shell und wartet dann dort auf Eingaben. Um es zu stoppen, muss ich „Stopp“ eingeben und die Eingabetaste drücken, und dann rettet es die Welt und wird elegant beendet, und ich bin wieder in der Shell. Das funktioniert alles, wenn ich es per Telnet in die NAS-Box starte, aber ich möchte es direkt auf der Box ausführen.

Folgendes hatte ich zuvor als ersten Versuch:

#define USER_SCRIPT_LABEL Start Minecraft server
#define USER_SCRIPT_DESCR Start minecraft server. needs sde2 mounted first
cd /mnt/disk/sde2/MCunraid
screen -d -m -S minecraft /usr/lib/java/bin/java -Xincgc -Xmx1024M -jar CraftBukkit.jar

MCunraid ist der Ordner, in dem ich die Craftbukkit.jar und alle World-Dateien usw. habe. Wenn ich diese Bildschirmzeile direkt eingebe, wird der Bildschirm getrennt eingerichtet und der Server gestartet. Wenn ich diese Zeile innerhalb des Skripts ausführe, scheint es keinen Bildschirm einzurichten

Um den Server zu stoppen, muss ich STOP eingeben und dann die Eingabetaste drücken. Mein Ansatz war

screen -S minecraft -X stuff "stop $(echo -ne 'r')"

um den Text s-t-o-p und einen Wagenrücklauf an den Bildschirm „Minecraft“ zu senden. Aber das funktioniert nicht, auch wenn ich es direkt in die Kommandozeile eingebe. Aber wenn ich „screen -r“ verwende, kann ich bei laufendem Server zum Bildschirm gelangen, dann „stop“ eingeben und er wird ordnungsgemäß heruntergefahren.

Der Server läuft gut, wenn ich mich per Telnet einlogge und es manuell mache, ich muss ihn nur ausführen, ohne von meinem Remote-Computer aus verbunden zu sein.

Akzeptierte Antwort:

Ich kann zumindest einen Teil des Problems lösen:warum das stop Teil funktioniert nicht. Experimentell, wenn Sie eine Screen-Sitzung im getrennten Modus starten (screen -d -m ), kein Fenster ausgewählt, also Eingabe später mit screen -X stuff gesendet ist einfach verloren. Sie müssen explizit angeben, dass Sie die Tastenanschläge an Fenster 0 senden möchten (-p 0 ). Dies ist sowieso eine gute Idee, falls Sie aus irgendeinem Grund andere Fenster in dieser Screen-Sitzung erstellen.

screen -S minecraft -p 0 -X stuff "stop^M"

(Bildschirmübersetzung ^M an control-M, das ist das Zeichen, das von Enter gesendet wird Schlüssel.)

Das Problem beim Starten der Sitzung aus einem Skript hängt wahrscheinlich mit unMENU zusammen.

Verwandte:Wie kann verhindert werden, dass der Begrüßungsbildschirm / Sperrbildschirm nach dem Leerlauf in Windows 8 angezeigt wird?
Linux
  1. Installieren Sie ownCloud 5 auf Linux Mint 14

  2. Senden von Eingaben an eine Bildschirmsitzung von außen?

  3. Administrations-Linux-Server

  4. So booten Sie ein Linux-System ohne grafischen Server

  5. Senden von Texteingaben an einen abgesetzten Bildschirm

Kali HTTP-Server einrichten

So verwenden Sie den Linux-Bildschirm

So verwenden Sie den Vim-Editor, um Text überall in Linux einzugeben

Installieren Sie Velociraptor unter Linux

Müll schwarzer Text auf weißem Bildschirm auf einem Server?

Graylog-Überwachungsserver unter Ubuntu Linux für Überwachungsserver/-dienste