Liberando um pipe nomeado

2

Estou usando o seguinte para redirecionar a saída do meu script para o terminal e o arquivo de log, acrescentando data a todas as linhas que vão para o arquivo de log:

NPIPE=/tmp/$$_$RANDOM.tmp  
mknod $NPIPE p  
tee <$NPIPE /dev/tty | ( while read line; do echo "$(date): ${line}"; done ) >> $LOG_FILE &
exec 1>&-  
exec 1>$NPIPE  
exec 2>&-  
exec 2>$NPIPE  

Agora, neste mesmo script, eu carrego o arquivo de log em um servidor. O arquivo de log no dispositivo local (incorporado) parece completo, mas o arquivo de log no servidor é sempre parcial.

Tenho a sensação de que o pipe ainda é esvaziado em blocos e ainda mantém conteúdo quando eu enviar o log, talvez eu esteja faltando algum tipo de comando flush, mas não consigo encontrar nada parecido.

Algum conselho?

    
por user223217 09.05.2013 / 17:12

1 resposta

2

Acredito que você precisará fechar o canal:

exec 1>&-
exec 2>&-

Depois de fazer o upload do arquivo de registro, você precisará iniciar um novo processo tee :

tee <$NPIPE /dev/tty | ( while read line; do echo "$(date): ${line}"; done ) >> $LOG_FILE &
exec 1>$NPIPE
exec 2>$NPIPE
    
por 10.05.2013 / 01:51