Como faço para criar várias sessões de tela na inicialização do Linux?

Como faço para criar várias sessões de tela na inicialização do Linux?

Em primeiro lugar, qual é a melhor maneira de executar comandos na inicialização, cron? Posso usar suum script de shell para alternar entre diferentes usuários, em caso afirmativo, como?

Como posso criar várias screensessões desanexadas na inicialização? screen -A -m -d -S test ./script.shparece que deveria funcionar, mas usá-lo em um script iniciado pelo cron não mostra nenhuma sessão de tela em execução após a inicialização.

Parece que a sessão da tela é fechada após a execução do comando. Posso mantê-la aberta para ver a saída?

Obrigado!

Responder1

Para executar um comando quando o sistema inicializar, agende-o @rebootno cron. Veja man 5 crontabpara detalhes. Isso significa que sua linha crontab deve se parecer com

@reboot screen -m ...

Não use supara isso, coloque o comando no crontab do usuário que deverá executar o comando. Dessa forma, o usuário pode gerenciar os comandos sem a intervenção do root. (Mas se você quiser executar um comando como usuário do sistema sem permitir que o usuário do sistema altere o comando por motivos de segurança, algo como su -c /path/to/command www-dataseria /etc/rc.localmelhor.)

Screen fecha uma janela quando seu comando termina e encerra a sessão quando sua última janela é fechada. Se você quiser ver a saída do script após sua conclusão, execute outro comando depois dele para aguardar a entrada. Por exemplo, para deixar a janela aberta até pressioná- Enterla:

screen sh -c './script.sh; read'

Lembre-se de que a tela mantém apenas um número finito de linhas do histórico. A menos que script.shàs vezes exija interação, seria melhor redirecionar sua saída para um arquivo. Se exigir interação, você pode usar logo comando da tela para enviar a saída para um arquivo (e então não será um problema se a sessão da tela terminar quando não exigir entrada).

Responder2

Você tentou screen -AmdS test bash -i ./script.sh?

Imagino que o que está acontecendo é que ele inicia a tela, que executa o script, e quando o script termina, a tela termina. a bash -iparte diz à tela para iniciar o bash no modo interativo e, em seguida, fazer com que o bash execute o script. Depois que o script for executado, o bash continuará aguardando em um prompt de comando, mantendo a sessão de tela aberta para você anexar assim que fizer login no sistema.

Responder3

Crie um script que faça o que você deseja. Se estiver alternando entre usuários para apenas um único comando, vá em frente e use su -c. Caso contrário, crie um script separado e chame-o.

Então, para que seu comando seja executado na inicialização, coloque o comando para executar seu script em/etc/rc.d/rc.local

informação relacionada