Ich habe versehentlich über 1000 Bildschirme erstellt. Wie kann ich sie alle mit einem Befehl töten? (Oder ein paar)
linux
bash
gnu-screen
kill
BrainStone
quelle
quelle
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Antworten:
Sie können verwenden:
Oder
In OSX heißt der Prozess in Großbuchstaben SCREEN. Also benutze:
Oder
quelle
Top
Wenn die Bildschirme tot sind, verwenden Sie:
quelle
quelle
Ich habe kürzlich begonnen, mich mit awk vertraut zu machen. Ich habe dies zusammengestellt und es hat seinen Zweck erfüllt. Ich habe es gepostet, da es ziemlich einfach zu verstehen ist.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Wo
screen -ls
listet alle aktuellen Bildschirme auf.grep 'pattern'
filtert alle übereinstimmenden Zeilen heraus. Wir können dann ein Handle für alle getrennten Bildschirme bekommen und mit demawk sys {command}
wir einen Befehl kopieren und zusammenfügen und ausführen könnensys
,$1
verweist auf das erste von awk aufgegriffene Argument. Zuletzt führen wir den Befehl quit mit ausscreen -X quit
.quelle
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
funktionierte besser für mich.Ich bin ein bisschen verwirrt darüber, wie Sie es geschafft haben, 1000 "Bildschirme" zu erstellen. Meinten Sie vielleicht 1000 Bildschirmfenster (1000 verschiedene Terminalfenster innerhalb einer Bildschirmsitzung)?
Wenn Sie 1000 Fenster in einer einzelnen Bildschirmsitzung meinten, wäre es eine elegantere Lösung, den Bildschirm mit dem Befehl
C-a \
(Strg-A, gefolgt von \) zu beenden .quelle
screen -m sleep 100000
. Dies geschah und ich bemerkte es nicht, bis es bereits über 1000 Bildschirmsitzungen erzeugt hatte.Der folgende Befehl beendet alle inaktiven Bildschirme:
quelle
quelle