bash - 在一行中执行多个操作时如何在shell脚本中计算时间
问题描述
我想运行一个 bash 文件(script.sh 文件),它将打印一些日志,并且我正在将日志重定向到一些文本文件中。
我想知道运行 script.sh 文件需要多少时间?我正在重定向这样的日志:
./script.sh >> logs.txt
我正在计算这样的时间:
time ./scripts.sh
我可以同时执行这两种操作吗(将 script.sh 日志重定向到文本文件并在同一命令或一行中计算脚本执行的时间)?
解决方案
如果您的脚本也可能将有关错误的相关消息发送到日志中,但您不希望日志中也包含时间数据,那么您将需要分别控制每个 I/O。
假设一个文件是这样的:
#!/bin/bash
echo channel 1 # stdout
echo channel 2 >&2 # stderr
要将时间信息获取到控制台但将错误记录到您的文件中,请将 I/O 控件包装在大括号或子外壳中。
使用大括号,您需要一个分号或将右大括号放在下一行
$: time { ./tst >x 2>&1; }
使用子外壳的括号,您可以包含或不包含它。
$: time ( ./tst >x 2>&1 )
要么将时间信息显示到控制台:
real 0m0.154s
user 0m0.062s
sys 0m0.062s
日志仍然会有两者。
$: cat x
channel 1
channel 2
推荐阅读
- ruby-on-rails - 无法从 Controller 渲染页面以在 Rails 中查看
- java - 错误信息:无法提交断点 LineBreakpoint Decision.java : 183,原因:断点设置在任何类之外
- c++ - Qt 安装程序仍然是个好主意吗?
- reactjs - CastError:转换到 ObjectId 失败,路径中的值“未定义”
- google-cloud-platform - Google Cloud 函数在存储桶最终确定缓冲区上返回未定义。无法调试代码
- php - 如果值不存在则更新记录,如果存在则取消
- r - 将 R 中的总行数除以完整行数
- css - 是否可以在 css 的一个大括号中编写多个伪代码?
- kubernetes - Kubernetes pod 到 GCP Compute Engine 虚拟机的通信
- sql - 如何将 ID 分配给引用表以及如何正确显示?(SSMS)