usar name create como gnu-screen

gnu-screen - create - name screen



¿Cómo crear una pantalla, ejecutando un comando dado? (7)

Creas una pantalla con un nombre y en modo separado:

screen -S "mylittlescreen" -d -m

Luego envías el comando para ser ejecutado en tu pantalla:

screen -r "mylittlescreen" -X stuff $''ls/n''

El $ antes del comando es hacer que el shell analice el / n dentro de las comillas, y se requiere la nueva línea para ejecutar el comando (como cuando presionas Intro).

Esto está funcionando para mí en esta versión de pantalla:

$ screen -v

Versión de pantalla 4.00.03jw4 (FAU) 2-May-06

Por favor, vea la man screen para obtener detalles sobre los comandos.

Soy bastante nuevo en * nix. ¿Hay alguna forma de crear una pantalla que ejecute inmediatamente una secuencia de comandos determinada (con sus propios argumentos)? Dos horas de googlear no producen nada, tal vez, porque no puedo expresar claramente la pregunta.

Espero algo como

screen -dmS new_screen exec "cd /dir && java -version"

Estoy usando la pantalla v4.00.03 y CentOS 5.5 (versión del kernel 2.6.18-194.26.1.el5.028stab079.2)


Creo que puedes usar esto

function exec_in_screen() { name=$1 command=$2 screen -dmS $name sh; screen -S $name -X stuff "$command/n"; }

Entonces...

exec_in_screen "test" "ls"


El problema es que el uso del comando de pantalla ''exec'' no inicia un shell. ''cd'' es un shell incorporado, así que necesitas un shell para él. Además, necesita un shell que permanezca en ejecución para que la pantalla no finalice.

Puede usar la opción -X para enviar comandos a una sesión de pantalla en ejecución, y el comando ''stuff'' para enviar pulsaciones a la ventana actual. Prueba esto:

screen -dmS new_screen sh screen -S new_screen -X stuff "cd /dir " screen -S new_screen -X stuff "java -version "

Sí, debe colocar las comillas en la siguiente línea para que se ejecuten los comandos.


Otro enfoque

Primera linea de cd al directorio de tu. La segunda línea inicia una nueva sesión de pantalla llamada new_screen con bash. Tercera línea ejecutando java -version

cd /dir screen -dmS new_screen bash screen -S new_screen -p 0 -X exec java -version


Quería lanzar pantallas remotas desde un script de bash con algunas variables definidas dentro del script de bash y disponibles dentro de la pantalla. Así que lo que funcionó para mí fue

#!/bin/bash SOMEVAR1="test2" # quit existing if there is one running already, be careful screen -D -RR test1 -X quit || true screen -dmS test1 screen -r test1 -p 0 -X stuff $"echo ${SOMEVAR1} ^M"

Donde el carácter de retorno, ^ M, debe ingresar usando vim como

i CTRL-V ENTER ESCAPE


Sí, lo que quieres es el comando "cosas"

por ejemplo

screen -dmS new_screen -X stuff "cd / dir && java -version

"

la segunda cita está en la siguiente línea para que se ejecute cuando se envíe


screen -dmS screen_name bash -c ''sleep 100''

Esto creará una nueva pantalla llamada screen_name . Y dentro de la pantalla dormirá durante 100 segundos.

Tenga en cuenta que si escribe algún comando en lugar de la sleep 100 que termina inmediatamente después de la ejecución, la pantalla también terminará. Así que no podrás ver la pantalla que acabas de crear.