Quero executar um script bash em uma tela desanexada. O script chama um programa algumas vezes, cada uma das quais leva muito tempo para esperar. Meu primeiro pensamento foi simplesmente abrir uma tela e depois chamar o script, mas parece que não consigo desconectar (por ctrl-a d
) enquanto o script está em execução. Então, fiz uma pesquisa e encontrei esta instrução para substituir o shebang pelo seguinte:
#!/usr/bin/screen -d -m -S screenName /bin/bash
Mas isso também não funciona (as opções não são reconhecidas). Alguma sugestão?
PS: Ocorre-me agora que screen -dmS name ./script.sh
provavelmente funcionaria para meus propósitos, mas ainda estou curioso sobre como incorporar isso ao script. Obrigado.
fonte
"$0"
aqui?screen
que chama o/bin/bash
que chama o script novamente.De acordo com as páginas de manual da tela:
screen -d -m
Tela inicial no modo desanexado. Isso cria uma nova sessão, mas não é anexada a ela. Isso é útil para scripts de inicialização do sistema.-S sessionname
Defina o nome da nova sessão como sessionname.Então, quando eu executei o comando que você forneceu:
screen -dmS name ./script.sh
Tela inicia uma janela chamada nome e executa automaticamente esse script.sh. Para voltar lá para ver o status, basta digitar:
screen -r test
Agora com o Ubuntu 14.04, os comandos são um pouco diferentes. Experimentar:
screen -d -m -S test
Agora, para executar o script, você precisará ir ao arquivo de configuração para fazê-lo:
sudo vim /etc/screenrc
Uma vez lá, role para baixo e você verá:
Esta é a seção em que você precisará adicionar o nome do script para executar e que deve permitir que você faça tudo o que precisa na tela.
fonte
screen -dmS ...
) não funciona para mim, mesmo que realmente deva. Eu corro e entãoscreen -ls
e nenhum soquete é encontrado. Pensamentos?Isso é um pouco antigo, mas um dos poucos tópicos que eu pude encontrar para fazer isso. Depois de brincar, a única maneira de fazer isso funcionar no modo desanexado com o ubuntu 14. é
O lançamento seria a segunda parte acima, que abriga os comandos java atuais e a versão do servidor. Eu corro baunilha.
fonte