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