Ho creato accidentalmente oltre 1000 schermi. Come posso ucciderli tutti con un comando? (O pochi)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Ho creato accidentalmente oltre 1000 schermi. Come posso ucciderli tutti con un comando? (O pochi)
screen -ls | grep "<name>" | cut -d. -f1 | tr --delete "\t" | xargs kill -9; screen -wipe; screen -ls;
Risposte:
Puoi usare :
pkill screen
O
killall screen
In OSX il processo è chiamato SCREEN in maiuscolo. Quindi, utilizzare:
pkill SCREEN
O
killall SCREEN
Top
Recentemente ho iniziato a familiarizzare con Awk, l'ho messo insieme e ha funzionato allo scopo. L'ho pubblicato da quando è abbastanza facile da capire.
screen -ls | grep '(Detached)' | awk 'sys {screen -S $1 -X quit}'
Dove screen -ls
elenca tutte le schermate correnti.
grep 'pattern'
filtra tutte le righe corrispondenti. Possiamo quindi ottenere un handle per tutte le schermate distaccate e con awk sys {command}
possiamo copiare e incollare un comando ed eseguirlo con sys
, si $1
riferisce al primo argomento raccolto da awk. Infine eseguiamo il comando quit con screen -X quit
.
screen -ls | grep '(Detached)' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
ha funzionato meglio per me.
Sono un po 'perplesso su come sei riuscito a creare 1000 "schermi". Forse intendevi 1000 finestre di schermo (1000 finestre di terminali differenti in una singola sessione di schermo)?
Se intendevi 1000 finestre in una singola sessione dello schermo, una soluzione più elegante sarebbe quella di uscire dallo schermo usando il comando C-a \
(ctrl-a seguito da \).
screen -m sleep 100000
. Questo è successo e non me ne sono accorto fino a quando non ha già creato oltre 1000 sessioni di schermate.
Il seguente comando terminerà tutte le schermate inattive:
perl -e 'while (map { kill 9, [split /\./]->[0] } grep { /Detached/ } split /\n/, qx{screen -ls}) { sleep 1 } exec qw(screen -wipe)'
for scr in $(screen -ls | awk '{print $1}'); do screen -S $scr -X kill; done
screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill