¿Cómo comprobar si la sesión de pantalla se está ejecutando?

¿Cómo comprobar si la sesión de pantalla se está ejecutando?

¿Hay alguna forma de comprobar si se está ejecutando una sesión de pantalla en bash?
Por ejemplo:

if [screen is running]
  then
    screen -r          #if session is running then resume the session
  else
    screen "command"   #else start a new session
fi

Respuesta1

Aproveche la variable de entorno PPID(Parent PID) y comience con

$ ps -fp$PPID
UID        PID  PPID  C STIME TTY          TIME CMD
w3       19305 19304  0 00:00 ?        00:00:00 SCREEN
+w3@aardvark:~(0)$ 

o,

ps -fp$PPID | head -n 2 | tail -n 1 | egrep -q SCREEN
screen_is_running=$((1 - ${PIPESTATUS[-1]}))
# screen_is_running == 1 for yes, 0 for No, -1 for egrep error

Por supuesto, esto no funcionará si has generado, ejecutado, no activado o algo así, y $PPIDno eres PANTALLA.

Si ese es el caso, podrías construir algo con pgrep, pstreeque egreppodría seguir la $PPIDcadena hacia atrás (detenerse cuando $PPIDsea 1).

Respuesta2

Al leer man screenencuentras COMMAND LINE OPTIONS:

COMMAND-LINE OPTIONS
       Screen has the following command-line options:

    ...snip...

       -d -r   Reattach a session and if necessary detach it first.

       -d -R   Reattach a session and if necessary detach or even create it first.

       -d -RR  Reattach a session and if necessary detach or create it. Use the first session if more than one session is available.

       -D -r   Reattach a session. If necessary detach and logout remotely first.

       -D -R   Attach  here  and now. In detail this means: If a session is running, then reattach. If necessary detach and logout remotely first.  If it was not running create it and notify
               the user. This is the author's favorite.

       -D -RR  Attach here and now. Whatever that means, just do it.

            Note: It is always a good idea to check the status of your sessions by means of "screen -list".

Seguramente alguno de estos haría lo que quieras sin la variable.

información relacionada