Estoy trabajando en la automatización de una rutina de mantenimiento que implica iniciar y detener un script que se ejecuta en una sesión de pantalla. Mi enfoque es matar la sesión de la pantalla, y luego reiniciarla y ejecutar el comando desde un script usando las habilidades para crear una pantalla y pasar un comando sin necesidad de adjuntarlo a la pantalla.
Sin embargo, estoy teniendo dificultades con esto. Puedo crear la pantalla correctamente sin que se adjunte usando screen -d -m -S screen_name
. Sin embargo, si ejecuto un comando basado en:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
con el eco -ne '\ 015' envuelto con comillas invertidas en lugar de comillas simples. Es para simular al usuario presionando la tecla Intro ya que los comandos que uso se mueven a un directorio y ejecutan un script ubicado allí. Este comando funciona, pero solo si la pantalla se ha adjuntado una vez que se ha creado. Como estoy tratando de automatizar el proceso de creación de la pantalla y ejecutar los comandos dentro de ella, me gustaría evitar tener que adjuntar y desconectar dentro de un script. Intentaré la sugerencia de crear un script de shell que contenga los comandos que necesito ejecutar dentro de la pantalla y editar de acuerdo con mis resultados.
¿Hay alguna manera de crear una pantalla y ejecutar un comando dentro de la pantalla, ya sea en un comando o sin tener que adjuntarlo a la pantalla después de crear, pero antes de ejecutar el comando?
Gracias por adelantado.
** Actualización: después de probar la sugerencia de colocar los comandos que necesito ejecutar dentro de un script de shell, pude crear con éxito una pantalla y ejecutar los comandos desde dentro de la pantalla, pero obtengo el comportamiento que cuando el script deja de ejecutarse la pantalla también se cierra. Esto no debería ser un problema, ya que el script es un script de registro que solo debe detenerse con el conocimiento del administrador del sistema o mediante el script que estoy tratando de desarrollar, sin embargo, sería preferible configurar la pantalla de tal manera que la pantalla no desaparece si se detiene el script. ¿Es posible lograr este comportamiento? ** **
.screenrc
que contenga la línea zombie kr
, que mantendrá abierta una ventana terminada, y puede presionar k
para cerrar el winodw, o r
ejecutar el comando en la ventana nuevamente. Tengo esto para mi .screenrc predeterminado.