0

在我的程序中,程序会在几秒钟内将数据写入未连接的 SSD(即写入空的总线主机)。因此,在此期间必须有一些 I/O 错误消息输出到终端。

除了将输出写入终端之外,我还需要记录程序的进度,而不是 I/O 错误消息。以下是错误消息的快照:

5-1Input/output error

Input/output error]! at block#[
]! at block#[Input/output error

WARNING: write errno[ 5
WARNING: write errno[ 5]! at block#[4773881Input/output error
Input/output error
146524727614844WARNING: write errno[ Input/output error
5]! at block#[], ret = ]! at block#[], ret = 13281183], ret = -1
WARNING: write errno[ Input/output errorWARNING: write errno[ 5]! at block#[234468], ret = -1-1

这是 I/O 错误消息的巨大冰山一角。我的脚本文件名为run.sh. 我试着像这样运行它:

$ run.sh | tee log.txt 2>&1

但它没有效果..这个命令有什么问题吗,如果没有,会是什么问题?还有其他方法可以做到这一点吗?

4

1 回答 1

2

这里:

run.sh | tee log.txt 2>&1

您正在将标准错误重定向tee到其标准输出。
但这看起来应该做你想做的事情(尽管2>&不需要),因为 tee 不会生成错误消息。

  1. run.sh 标准输出被发送到 log.txt 并显示在终端上。
  2. run.sh 标准错误只是发送到终端。

尝试:

# run.sh output to log
# run.sh error  to console
run.sh > log

# run.sh output to log and console
# run.sh error  to         console
run.sh | tee log

# run.sh error to same place as output
# run.sh output to console
run.sh 2>&1

# run.sh error to same place as output
# run.sh output to log
run.sh  > log  2>&1

# run.sh error to same place as output
# run.sh output to console and log
run.sh 2>&1 | tee log
于 2013-10-26T01:46:50.757 回答