tee fazendo com que scripts do bash sejam interrompidos

2

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.

    
por Terry 31.07.2014 / 16:55

2 respostas

1

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 .     

por 31.07.2014 / 18:02
0

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 &
    
por 31.07.2014 / 22:38