Esta pode não ser a melhor resposta, mas você pode fazer tee script3.log &
(com um e comercial no final), para que o script possa terminar sem ser interrompido. Ele tem o efeito colateral de terminar o script antes de terminar script3.sh
.
Eu tenho um script que chama vários outros scripts de instalação
./script1.sh 2>&1 | tee script1.log<br>
./script2.sh 2>&1 | tee script2.log<br>
./script3.sh 2>&1 | tee script3.log<br>
Todos eles parecem ok até o último que faz uma chamada para um script de inicialização personalizado. Este script de inicialização executa o daemon
as /usr/local/daemon
& amp ;. ou seja, coloca em segundo plano.
Combine isso com tee
e o script principal trava quando o% final tee
nunca sai.
O script de inicialização é um aplicativo .NET executado em mono, então tenho muito pouco controle sobre ele. Se eu não usar tee
, tudo parece ok. Executar o último comando na linha de comando tem o mesmo efeito.
Se alguém puder sugerir uma maneira de fazer o script sair de forma limpa, eu ficaria grato. Por enquanto eu mudei a chamada para o script init do script3 para o script pai e ele funciona bem, mas é claro que não está logado.
Esta pode não ser a melhor resposta, mas você pode fazer tee script3.log &
(com um e comercial no final), para que o script possa terminar sem ser interrompido. Ele tem o efeito colateral de terminar o script antes de terminar script3.sh
.
O tee não sairá normalmente até que o stdout do processo pai e filho seja fechado. Tente redirecionar o stdout do daemon
/usr/local/daemon > /dev/null 2>&1 &