le risposte precedenti non hanno funzionato per me su un terminale winputty e una connessione al server amazon ssh .. ma questo funziona:
screen -S yourscreentitlehere -X stuff $'\003'
riferimenti:
- Invio di ctrl-c a una specifica sessione dello schermo
- $'\003' è ctrl+c http://donsnotes.com/tech/charsets/ascii.html
- il materiale è https://www.gnu.org/software/screen/manual/screen.html#Paste
L'ho usato per chiudere centinaia di sessioni errate dello schermo create da un comando difettoso:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;
dove:il grep -o -P "1\d+.tty"
è il comando per ottenere i nomi delle sessioni con un nome simile a Perl regex "1\d+.tty"
che cattura tutte le sessioni che iniziano con il numero 1
, ha alcuni altri numeri (\d
) e termina con .tty
Avviso :Dovresti prima provare con questo comando per vedere di ottenere l'elenco esatto delle sessioni che desideri prima di applicare il comando precedente. Questo per evitare di uscire da sessioni indesiderate:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
Rispondo sempre a questo echo
prova ogni volta che l'elenco in for
loop non è chiaro, ad esempio quello generato dal sottocomando in $()
espansione.
Ci sono un paio di modi 'schermo' per terminare una specifica sessione di schermo dalla riga di comando (non interattivamente).
1) invia un comando 'quit':
screen -X -S "sessionname" quit
2) invia un Ctrl-C a una sessione dello schermo che esegue uno script:
screen -X -S "sessionname" stuff "^C"
In entrambi i casi, dovresti usare 'screen -ls' per trovare il nome della sessione dello schermo che vuoi terminare... se c'è solo una sessione dello schermo in esecuzione, non avrai bisogno di specificare -S " parametro nomesessione".
CTRL+a e poi 'k' interromperà una sessione dello schermo.