刷新命名管道

刷新命名管道

我使用以下命令将脚本的输出重定向到终端和日志文件,同时将日期附加到日志文件的每一行:

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  

现在,我使用同一个脚本将日志文件上传到服务器。本地设备(嵌入式)上的日志文件看起来完整,但服务器上的日志文件始终是部分的。

我感觉当我发送日志时管道仍然被清空并且仍然保存着内容,也许我缺少某种刷新命令但我找不到类似的东西。

有什么建议吗?

答案1

我相信您需要关闭管道:

exec 1>&-
exec 2>&-

然后,上传日志文件后,您需要启动一个新tee进程:

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

相关内容