Estou trabalhando para automatizar uma rotina de manutenção que envolve iniciar e parar um script que está sendo executado em uma sessão de tela. Minha abordagem é matar a sessão da tela e, em seguida, reiniciá-la e executar o comando a partir de um script, usando as habilidades para criar uma tela e transmitir um comando sem a necessidade de anexar à tela.
No entanto, estou tendo dificuldades com isso. Eu posso criar a tela corretamente sem anexá-la usando screen -d -m -S screen_name
. No entanto, se eu executar um comando com base em:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
com o eco -ne '\ 015' sendo embrulhado com reticulares em vez de aspas simples. É para simular o usuário pressionando a tecla Enter, pois os comandos que eu uso estão se movendo para um diretório e executando um script localizado lá. Este comando funciona, mas somente se a tela tiver sido anexada uma vez criada. Como estou tentando automatizar o processo de criação da tela e execução dos comandos nela, gostaria de evitar ter que anexar e desanexar em um script. Tentarei sugerir a criação de um script de shell contendo os comandos que preciso executar na tela e editar de acordo com meus resultados.
Existe uma maneira de criar uma tela e executar um comando dentro da tela em um comando ou sem ter que se conectar à tela após a criação, mas antes da execução do comando?
Desde já, obrigado.
** Atualização - tendo tentado a sugestão de colocar os comandos que preciso executar em um script de shell, consegui criar uma tela com êxito e executar os comandos de dentro da tela, mas estou tendo o comportamento de que, quando o script parar de ser executado a tela também fecha. Isso não deve ser um problema, pois o script é um script de log que deve parar apenas com o conhecimento do administrador do sistema ou através do script que estou tentando desenvolver, no entanto, seria preferível ter a tela configurada de forma que a tela não desaparece se o script estiver parado. É possível alcançar esse comportamento? **
.screenrc
que contenha a linha zombie kr
, que manterá uma janela concluída aberta, e você pode pressionar k
para fechar o winodw ou r
executar o comando na janela novamente. Eu tenho isso para o meu padrão .screenrc.