předchozí odpovědi mi nefungovaly na terminálu winputty a připojení k serveru Amazon ssh.. ale tato funguje:
screen -S yourscreentitlehere -X stuff $'\003'
reference:
- Odeslání ctrl-c na konkrétní relaci obrazovky
- $'\003' je ctrl+c http://donsnotes.com/tech/charsets/ascii.html
- tato položka je https://www.gnu.org/software/screen/manual/screen.html#Paste
Použil jsem to k ukončení stovek chybných relací obrazovky vytvořených chybovým příkazem:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;
kde:grep -o -P "1\d+.tty"
je příkaz pro získání názvů relací s regulárním výrazem podobným Perlu "1\d+.tty"
který zachycuje všechny relace začínající číslem 1
, má některá další čísla (\d
) a končí .tty
Upozornění :Před použitím výše uvedeného příkazu byste měli nejprve otestovat tento příkaz, abyste viděli, že získáte přesný seznam relací, které chcete. Je to proto, abyste se vyhnuli ukončení nechtěných relací:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
Vždy souhlasím s tímto echo
test vždy, když je seznam v for
smyčka není jasná, například ta vygenerovaná dílčím příkazem v $()
rozšíření.
Existuje několik způsobů „obrazovky“, jak z příkazového řádku (neinteraktivně) ukončit určitou relaci obrazovky.
1) odešlete příkaz 'quit':
screen -X -S "sessionname" quit
2) odešlete Ctrl-C na relaci obrazovky se skriptem:
screen -X -S "sessionname" stuff "^C"
V obou případech byste museli použít 'screen -ls' k nalezení názvu relace obrazovky, kterou chcete ukončit ... pokud běží pouze jedna relace obrazovky, nemusíte zadávat -S " sessionname" parametr.
CTRL+a a poté 'k' ukončí relaci obrazovky.