O comando screen -S test -X screen command
é o que você precisa para adicionar janelas à sua sessão daemon, mas não pelas razões que você dá. Isso funciona porque -X recebe um comando screen e não um comando shell, e o comando screen para criar uma janela é chamado, confusamente, de screen. Não há comando de tela exec. Não há encadeamento, a menos que você construa seu comando usando scripts de shell (como este: screen -S script -X screen sh -c 'command1; command2;'
).
Chamar screen -S test -X screen
sem comando é inútil porque o comando padrão é um shell e, depois de gerar um shell, você não tem uma maneira não-interativa (e não-desonesta) de executar comandos dentro desse shell. É melhor executar o comando sozinho, sem um shell interativo. Um efeito colateral é que quando o comando sai, a janela de tela não tem mais um filho e será fechada.
Agora, você pode pedir que a tela mantenha a janela aberta de qualquer maneira, depois que o comando for encerrado. Use o comando zombie
screen para ativar isso. Sua sequência se parece com:
screen -d -m -S script
screen -S script -X zombie qr
screen -S script -X screen tail -f /var/log/messages
screen -S script -X screen tail -f /var/log/xinetd.log
Para reativar interativamente:
screen -S script -r
E, finalmente, você pode reescrever esses comandos -X como um script screenrc.
Screenrc:
zombie qr
screen tail -f /var/log/messages
screen tail -f /var/log/xinetd.log
Script:
screen -d -m -S script -c screenrc