usar como commands comando gnu-screen

gnu screen - como - Elimina todas las sesiones de pantalla separadas



screen linux (5)

Aquí hay una solución que combina todas las respuestas: .bashrc a su .bashrc o .bash_profile :

killscreens () { screen -ls | grep Detached | cut -d. -f1 | awk ''{print $1}'' | xargs kill }

  • esta es una función conveniente, fácil de recordar
  • mata solo las pantallas separadas, para evitar que hagas algo tonto
  • recuerde abrir un nuevo terminal bash o ejecutar source .bashrc para hacer que killscreens esté disponible

Gracias a @Rose Perrone, @Milind Shah, y @schatten

Cuando ejecuto screen -ls , veo lo siguiente. ¿Cómo puedo matar todas las sesiones separadas?

Hay pantallas en:

84918.ttys002.ros-mbp (Detached) 84944.ttys008.ros-mbp (Detached) 84970.ttys013.ros-mbp (Attached) 84998.ttys002.ros-mbp (Detached) 85024.ttys002.ros-mbp (Detached)

5 zócalos en /var/folders/86/062qtcyx2rxbnmn8mtpkyghs0r0r_z/T/.screen.


Incluye esta función en tu .bash_profile:

killd () { for session in $(screen -ls | grep -o ''[0-9]/{4/}'') do screen -S "${session}" -X quit; done }

Para ejecutarlo, llama a killd . Esto matará todas las sesiones de pantalla, separadas o no.


Si las pantallas están muertas, use:

screen -wipe


screen -ls | grep pts | cut -d. -f1 | awk ''{print $1}'' | xargs kill

Elimina solo sesiones de pantalla separadas (crédito @schatten):

screen -ls | grep Detached | cut -d. -f1 | awk ''{print $1}'' | xargs kill


''[0-9]/{3,/}''

en caso de

There is a screen on: 20505.blabla (03/05/2014 22:16:25) (Detached) 1 Socket in /var/run/screen/S-blabla.

coincidirá tanto con 20505 como con 2014, donde el año 2014 dejará de funcionar "No se encontró sesión de pantalla".

[0-9]/{3,/}/./S*

Podría funcionar.

Siempre me he encontrado con el patrón 20505. name , donde el nombre es el nombre de host o el nombre de sesión si la pantalla se inició con el indicador -S. Funciona en OS X y Debian, puede que no sea universal.