tag editar easytag linux bash command-line gnu-screen

editar - linux easytag



¿Cómo listar sesiones de pantalla en ejecución? (9)

Tengo un montón de servidores, en los que ejecuto experimentos usando la screen . El procedimiento es el siguiente:

  1. ssh al servidor XXX
  2. screen inicio
  3. iniciar experimentos en unas pocas pestañas
  4. separar la screen
  5. desconectar del servidor

Mientras se están ejecutando los experimentos, puedo encontrar fácilmente en qué servidores están haciendo ssh a todos los servidores y enumerando mis procesos en ejecución (usando top o ps ).

Sin embargo, una vez finalizados los experimentos, ¿cómo puedo encontrar en qué servidores tengo una sesión de pantalla abierta (para poder ver la salida, relanzarlos, etc.)?

PD: mis experimentos también imprimen su salida a archivos ... pero este no es el punto de mi pregunta.


ps x | pantalla de grep

para ver qué es esa pantalla corriendo en caso de que haya usado el comando

pantalla -A -m -d php make_something.php


En la mayoría de los casos, una screen -RRx $username/ será suficiente :)

Si aún desea enumerar todas las pantallas, coloque el siguiente script en su ruta y llámelo a la pantalla o como quiera:

#!/bin/bash if [[ "$1" != "-ls-all" ]]; then exec /usr/bin/screen "$@" else shopt -s nullglob screens=(/var/run/screen/S-*/*) if (( ${#screens[@]} == 0 )); then echo "no screen session found in /var/run/screen" else echo "${screens[@]#*S-}" fi fi

Se comportará exactamente igual que la pantalla, excepto cuando se muestran todas las sesiones de pantalla, cuando se da la opción -ls-all como primer parámetro.


Entonces, ¿estás usando la pantalla para mantener los experimentos ejecutándose en segundo plano, o qué? Si es así, ¿por qué no empezar solo en segundo plano?

./experiment &

Y si está preguntando cómo obtener la notificación del trabajo que hice, ¿qué le parece encadenar el experimento con un comando de correo?

./experiment && echo "the deed is done" | mail youruser@yourlocalworkstation -s "job on server $HOSTNAME is done"


La lista de pantalla de comandos puede ser lo que quieras.

Ver al man


Múltiples personas ya han señalado que

$ screen -ls

Enumeraría las sesiones de pantalla.

Aquí hay otro truco que puede ser útil para usted.

Si agrega el siguiente comando como última línea en su archivo .bashrc en el servidor xxx, entonces se volverá a conectar automáticamente a su sesión de pantalla al iniciar sesión.

screen -d -r

Esperamos que te sea útil.


No estoy muy seguro de tu pregunta, pero si lo que realmente deseas es una sesión de pantalla abierta actualmente, prueba:

screen -ls


Para enumerar todas las sesiones de pantalla para un usuario, ejecute el siguiente comando como ese usuario:

screen -ls

Para ver todas las sesiones de pantalla en una máquina específica puede hacer:

ls -laR /var/run/screen/

Tengo esto en mi máquina:

gentle ~ # ls -laR /var/run/screen/ /var/run/screen/: total 1 drwxrwxr-x 4 root utmp 96 Mar 1 2005 . drwxr-xr-x 10 root root 840 Feb 1 03:10 .. drwx------ 2 josh users 88 Jan 13 11:33 S-josh drwx------ 2 root root 48 Feb 11 10:50 S-root /var/run/screen/S-josh: total 0 drwx------ 2 josh users 88 Jan 13 11:33 . drwxrwxr-x 4 root utmp 96 Mar 1 2005 .. prwx------ 1 josh users 0 Feb 11 10:41 12931.pts-0.gentle /var/run/screen/S-root: total 0 drwx------ 2 root root 48 Feb 11 10:50 . drwxrwxr-x 4 root utmp 96 Mar 1 2005 ..

Este es un uso un tanto brillante de Unixy de Unix Sockets envuelto en permisos de sistemas de archivos para manejar la seguridad, el estado y las secuencias.


Si bien la respuesta de joshperry es correcta, me parece muy molesto que no te diga el nombre de la pantalla (el que configuraste con la opción -t), que en realidad es lo que usas para identificar una sesión. (No es su culpa, por supuesto, eso es un defecto de pantalla)

Por eso, en cambio, uso un script como este: ps auxw|grep -i screen|grep -v grep


For windows system Open putty then login in server

Si desea ver la pantalla en la consola, entonces tiene que escribir el comando

Screen -ls

Si tiene que acceder a la pantalla, entonces tiene que usar el siguiente comando

screen -x screen id

Escriba PWD en la línea de comando para verificar en qué carpeta está actualmente