Die vorherigen Antworten haben bei mir auf einem Winputty-Terminal und einer Amazon-SSH-Serververbindung nicht funktioniert. Aber diese funktioniert:
screen -S yourscreentitlehere -X stuff $'\003'
Referenzen:
- Senden von Strg-C an eine bestimmte Bildschirmsitzung
- $'\003' ist Strg+C http://donsnotes.com/tech/charsets/ascii.html
- Zeug ist https://www.gnu.org/software/screen/manual/screen.html#Paste
Ich habe dies verwendet, um Hunderte von fehlerhaften Bildschirmsitzungen zu beenden, die durch einen fehlerhaften Befehl erstellt wurden:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;
wo:die grep -o -P "1\d+.tty"
ist der Befehl zum Abrufen von Sitzungsnamen mit Perl-ähnlicher Namensregex "1\d+.tty"
die alle Sitzungen erfasst, die mit der Nummer 1
beginnen , hat einige andere Nummern (\d
) und endet mit .tty
Warnung :Sie sollten zuerst mit diesem Befehl testen, um zu sehen, ob Sie die genaue Liste der gewünschten Sitzungen erhalten, bevor Sie den obigen Befehl anwenden. Dies soll verhindern, dass unerwünschte Sitzungen beendet werden:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
Ich immer zu diesem echo
test wann immer die Liste in for
Schleife ist nicht klar, zum Beispiel die durch den Unterbefehl in $()
erzeugte Erweiterung.
Es gibt ein paar 'Bildschirm'-Möglichkeiten, um eine bestimmte Bildschirmsitzung von der Befehlszeile aus (nicht interaktiv) zu beenden.
1) Senden Sie einen 'Quit'-Befehl:
screen -X -S "sessionname" quit
2) Senden Sie ein Strg-C an eine Bildschirmsitzung, auf der ein Skript ausgeführt wird:
screen -X -S "sessionname" stuff "^C"
In beiden Fällen müssten Sie 'screen -ls' verwenden, um den Sitzungsnamen der Bildschirmsitzung zu finden, die Sie beenden möchten ... wenn nur eine Bildschirmsitzung ausgeführt wird, müssen Sie das -S nicht angeben " Sitzungsname"-Parameter.
STRG+a und dann 'k' beendet eine Bildschirmsitzung.