Para executar um comando quando o sistema é inicializado, agende-o para @reboot
no cron. Veja man 5 crontab
para detalhes. Isso significa que sua linha crontab deve se parecer com
@reboot screen -m ...
Não use su
para isso, coloque o comando no crontab do usuário que deve 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-data
in /etc/rc.local
seria melhor.)
A tela fecha uma janela quando seu comando termina e termina a sessão quando sua última janela é fechada. Se você quiser ver a saída do script após a conclusão, execute outro comando após ele para aguardar a entrada. Por exemplo, para deixar a janela aberta até você pressionar Enter :
screen sh -c './script.sh; read'
Lembre-se de que a tela mantém apenas um número finito de linhas de histórico. A menos que script.sh
às vezes exija interação, você seria mais bem servido redirecionando sua saída para um arquivo. Se isso requer interação, você pode usar o comando log
da tela para enviar a saída para um arquivo (e então não é um problema se a sessão da tela terminar quando não requer entrada).