没有完全重定向bas​​h中的stdout

时间:2016-07-29 18:03:41

标签: linux 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的部分日志。 不知道为什么......

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

谢谢,

2 个答案:

答案 0 :(得分:1)

这样做你想要的吗?

set_flag.sh 2>&1 | tee    $script_log >>$log
update.sh   2>&1 | tee -a $script_log >>$log
你的命令中出现

$log两次,你发布的问题可能不需要(所有stdout + stderr进入$log,只有set_flag.sh的stdout + stderr和update.sh中的$script_log

答案 1 :(得分:0)

我相信你想要 stdout& stderr set_flag.shupdate.sh加入$log$script_log

如果是这种情况,请将脚本输出重定向到名称为$log的{​​{1}}和create a symlink,然后将其指向$script_log

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