Você precisa criar as guias primeiro e, em seguida, dizer à tela para executar algo nelas, usando -X stuff
.
Por exemplo:
#!/bin/bash
# start a new detached screen, create windows named tab3 and tab6
# with appuser's $SHELL running in them, running as user "appuser".
screen -c /dev/null -d -m -S mySession
screen -c /dev/null -S mySession -X screen -t tab3 sudo -u appuser -i
screen -c /dev/null -S mySession -X screen -t tab6 sudo -u appuser -i
# as root, you could use 'su - appuser', instead of sudo but that
# would ask for a password if this is run as non-root user. sudo
# can be configured to not ask for a password if required.
# run some programs in the already-created tab3 and tab6
# using screen's "stuff" command.
screen -c /dev/null -S mySession -p tab3 -X stuff $'top\n'
screen -c /dev/null -S mySession -p tab6 -X stuff $'htop\n'
Você pode anexar a essa tela com, por exemplo, screen -S mySession -d -RR
. Se você sair de top
ou htop
em suas respectivas guias, essas guias não serão fechadas, elas retornarão ao prompt do appuser .
Estou usando -c /dev/null
aqui para impedir que a tela leia meu ~/.screenrc
, o que cria várias guias e configura tudo como eu quero. Ou costumava querer, eu mudei para tmux
cerca de um ano atrás depois de usar screen
por décadas.
Outra maneira de fazer isso é criar um novo arquivo screenrc com os comandos screen
e stuff
necessários e, em seguida, executar apenas screen -c /path/to/newscreenrc