las respuestas anteriores no funcionaron para mí en una terminal winputty y una conexión de servidor ssh de Amazon... pero esta sí funciona:
screen -S yourscreentitlehere -X stuff $'\003'
referencias:
- Enviar ctrl-c a una sesión de pantalla específica
- $'\003' es ctrl+c http://donsnotes.com/tech/charsets/ascii.html
- las cosas son https://www.gnu.org/software/screen/manual/screen.html#Paste
Usé esto para salir de cientos de sesiones de pantalla erróneas creadas por un comando con errores:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;
donde:el grep -o -P "1\d+.tty"
es el comando para obtener nombres de sesión con un nombre similar a Perl regex "1\d+.tty"
que captura todas las sesiones que comienzan con el número 1
, tiene algunos otros números (\d
) y termina con .tty
Advertencia :Debe probar con este comando primero para ver si obtiene la lista exacta de sesiones que desea antes de aplicar el comando anterior. Esto es para evitar salir de sesiones no deseadas:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
Yo siempre a este echo
prueba cada vez que la lista en for
loop no está claro, por ejemplo, el generado por el subcomando en $()
expansión.
Hay un par de formas de 'pantalla' para eliminar una sesión de pantalla específica desde la línea de comandos (no interactivamente).
1) enviar un comando de 'salir':
screen -X -S "sessionname" quit
2) envía Ctrl-C a una sesión de pantalla que ejecuta un script:
screen -X -S "sessionname" stuff "^C"
En ambos casos, necesitaría usar 'screen -ls' para encontrar el nombre de la sesión de pantalla que desea eliminar... si solo se está ejecutando una sesión de pantalla, no necesitará especificar -S " parámetro sessionname".
CTRL+a y luego 'k' eliminarán una sesión de pantalla.