没有完全重定向 Bash 中的标准输出



我正在尝试将stdout&stderr存储到$log和$script_log中。$log有所有其他进程日志,所以使用了>>$script_log 只需要从 set_flag.sh 和 update.sh 记录。

set_flag.sh 2>&1 >> $log | tee -a $log > $script_log 
update.sh 2>&1 >> $log | tee -a $log >> $script_log

$log很好。我可以看到来自set_flag.sh和 update.sh 的所有进程日志,但不知何故,$script_log 有来自set_flag的日志,但来自 update.sh 的部分日志。不知道为什么....

有人可以解释和帮助我吗?

谢谢

这能做到你想要的吗?

set_flag.sh 2>&1 | tee    $script_log >>$log
update.sh   2>&1 | tee -a $script_log >>$log

$log 出现在您的命令中两次,这对于您发布的问题可能不需要(所有 stdout+stderr 都进入$log,只有 stdout+stderr 的 set_flag.shupdate.sh$script_log (。

我相信您希望 stdout 和 stderrset_flag.shupdate.sh 进入$log$script_log

如果是这种情况,请将脚本输出重定向到$log,并创建一个名称为 $script_log 的符号链接,并将其指向您的$log

这样,您可以节省磁盘空间[没有重复的文件]并保持$log$script_log完全相同。

最新更新