
Ich versuche, einen getrennten Bildschirm zu erstellen und ihm dann einen Befehl zu senden, aber das scheint nicht zu funktionieren.
Wenn ich folgende Befehle eingebe:
$ screen -ls
No Sockets found in /var/run/screen/S-ec2-user.
$ screen -dmS myscreen
$ screen -ls
There is a screen on:
9175.myscreen (Detached)
1 Socket in /var/run/screen/S-ec2-user.
$ screen -S myscreen -X ls
Dann habe ich mich an den Bildschirm angeschlossen, um zu sehen, ob der Befehl ausgeführt wurde:
$ screen -r myscreen
Ich bekomme nur eine leere Befehlszeile, als ob nichts passiert wäre.
Weiß jemand, warum dies fehlschlägt und welche Befehle ich verwenden kann, um den Befehl tatsächlich auf dem Bildschirm auszuführen?
Hinweis: Ich möchte möglichst unabhängig vom Bildschirm bleiben und nur Befehle von außen an den Bildschirm senden. Dies liegt daran, dass ich vorhabe, mehrere Bildschirme mithilfe automatisierter Mittel (z. B. Bash-Skript) auszuführen.
Antwort1
Endlich hat es funktioniert.
Anschaueneinige Codebeispiele zur screen
Verwendung, es scheint, dass der Parameter -X das Wort: stuff
vor dem eigentlichen Befehl erwartet und dass der Befehl außerdem in Anführungszeichen ("xyz") eingeschlossen werden muss.
Damit der Befehl ausgeführt werden kann, Entermuss der Tastendruck gleichzeitig gesendet werden.dieser Artikel zum Einfügen von Sonderzeichen, die Eingabe des Tastendrucks gelang mir durch Drücken Ctrlvon + V, Enter.
Die Befehlszeile sah folgendermaßen aus:
$ screen -S myscreen -X stuff 'ls^M'