Kri*_*ves 22 linux bash logging stdout stderr
我有一些脚本需要查看输出并将结果记录到文件中,最简单的示例是:
$ update-client > my.log
Run Code Online (Sandbox Code Playgroud)
我希望能够在命令运行时看到命令的输出,但也将它记录到文件中.我也记录stderr,所以我希望能够在看到它时记录错误流.
Mat*_*hen 41
update-client 2>&1 | tee my.log
Run Code Online (Sandbox Code Playgroud)
2>&1将标准错误重定向到标准输出,并且tee将其标准输入发送到标准输出和文件.
您可以使用 tee 命令来实现:
command | tee /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
不写入 shell 的等效内容是:
command > /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
如果要附加 (>>) 并在 shell 中显示输出,请使用 -a 选项:
command | tee -a /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
请注意,管道将仅捕获 stdout,带有 tee 的管道不会处理 stderr 错误。如果您想记录错误(来自 stderr),请使用:
command 2>&1 | tee /path/to/logfile
Run Code Online (Sandbox Code Playgroud)
这意味着:运行命令并将 stderr 流 (2) 重定向到 stdout (1)。它将通过 Tee 应用程序传递到管道。
请访问 askubuntu 网站了解更多信息
只需使用 tail 在文件更新时查看文件即可。通过在上面的命令之后添加 & 来背景你的原始进程执行上面的命令后,只需使用
$ tail -f my.log
Run Code Online (Sandbox Code Playgroud)
它将不断更新。(请注意,它不会告诉您文件何时完成运行,因此您可以向日志输出一些内容以告诉您它已完成。Ctrl-c 退出 tail)
| 归档时间: |
|
| 查看次数: |
37675 次 |
| 最近记录: |