2012-06-18 14 views
10

"screen -R -D-test" creará una sesión llamada test si no existe, o conéctese si lo hacePantalla GNU: ¿Cómo puedo crear una pantalla en el fondo si no existe?

"screen -d -m -S test" creará un nuevo sesión individual denomina prueba, si existe o no, que puede dar lugar a múltiples sesiones de prueba con nombre:

There are several suitable screens on: 
    9705.test (06/18/2012 06:42:58 PM) (Detached) 
    9639.test (06/18/2012 06:42:57 PM) (Detached) 

¿Cómo puedo crear una sesión separada llamada prueba, pero sólo si uno no existe ya?

Respuesta

13

Creo que usted está buscando la combinación -d -R:

screen -d -R -S test 

De man screen:

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

EDITAR

Si lo que desea es crear una pantalla de fondo sólo si no existe, una pequeña función de shell en su ~/.bashrc o ~/.zshrc funcionará:

function bgsc { 
    if screen -list | awk '{print $1}' | grep -q "$1$"; then 
    echo "screen $1 already exists" > &2 
    else 
    screen -d -m -S $1 
    fi 
} 

Luego solo llame al bgsc test.

+3

Pero no quiero volver a conectarlo, solo quiero crearlo separado y _no_ adjuntarlo. –

+0

@ user939259: Ah, no entendí bien. No veo nada en el manual, pero actualicé mi respuesta con una función de shell corta para crear una nueva pantalla separada si no existe. – jmdeldin

Cuestiones relacionadas