输出 time 命令的结果到文件中
译至:http://unicus.jp/skmk/archives/338
由于输出 time 命令的结果到文件时使用的错误的方式,所以将其记录下来。
环境是bash。
目标
将运行的a.out程序的输出和其所花的时间重定向到日志文件中
无效的例子1
time ./a.out > logfile
time ./a.out | tee logfile
上面的例子是重定向结果到logfile,下面的例子是通过tee把标准输出输出到文件。
但是只有time的输出没有被记录到文件中。
这是因为time的结果是通过标准错误输出的。
所以不把标准错误输出重定向到文件中是不行的。
无效的例子2
把错误输出也重定向到文件。
time ./a.out >& logfile
time ./a.out > logfile 2>&1
time ./a.out 2>&1 | tee logfile
然而,这也是没有用的。
./a.out >& logfile
./a.out > logfile 2>&1
./a.out 2>&1 | tee logfile
因为这只是意味着把a.out的错误和标准输出重定向到logfile。
OK的例子
我们是想把 time ./a.out 的结果输出到logfile,所以:
(time ./a.out) >& logfile
(time ./a.out) > logfile 2&>1
(time ./a.out) 2>&1 | tee logfile
用括号括起来。这样就搞定了。换句话说,你是在一个子shell中运行。
另外最新的bash不仅支持>&也支持&>。
也可以用{;} 指定一组命令。
{ time ./a.out ; } >& logfile
{ time ./a.out ; } > logfile 2&1
{ time ./a.out ; } 2>&1 | tee logfile
{ 后一定要加空格,如果没有的话,会报错 -bash: syntax error near unexpected token `}’ 。后面的冒号;也不要忘了。
/usr/bin/time
顺便说一下,bash内置的命令time和GNU的time命令是不一样的。通过追加完整的路径/usr/bin/time 可以执行GNU命令。
但是和内置的bash不同的是,不加括号也可以将所有的输出重定向到文件。当然加括号也没问题。
/usr/bin/time ./a.out >& logfile
/usr/bin/time ./a.out > logfile 2>&1
/usr/bin/time ./a.out 2>&1 | tee logfile
而且有输出到文件的选项-o。
/usr/bin/time -o logfile ./a.out
但是这只会把time的结果写到文件。使用追加选项-a就可以了。
/usr/bin/time -a -o logfile ./a.out > logfile
GNU的time命令跟bash的time比的话,数据更详细,也能指定多种输出格式。
详细的情况请使用man time,bash的time的话使用help time。
输出 time 命令的结果到文件中的更多相关文章
- Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件
Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...
- 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符
1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符 在命令模式下,使用正则表达式匹配 行首有空白字符行的模式:^[[:space:]] ...
- 使用 sed 命令查找和替换文件中的字符串的 16 个示例
当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...
- shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。
shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...
- java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...
- linux grep命令(linux在文件中搜索内容)
转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...
- [Shell学习笔记] read命令从键盘或文件中获取标准输入(转载)
转自:http://www.1987.name/151.html read命令是用于从终端或者文件中读取输入的内部命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果没有 ...
- 将输出语句打印至tomcat日志文件中
tomcat-9.0.0 将程序中 System.out.println("------------这是输出语句System.out.println()-------- ...
- [Linux] sed命令使用之在文件中快速删除/增加指定行
1.删除文档的第一行 sed -i '1d' <file> 2.删除文档的最后一行sed -i '$d' <file> 3.在文档指定行中增加一行例如文档如下:echo &qu ...
随机推荐
- MySQL之数据查询语言(DQL)
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块: SELECT <字段> FROM <表名> WHERE <查询条件> - ...
- ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁
作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...
- CPU/GPU/TPU/NPU...XPU都是什么意思?
CPU/GPU/TPU/NPU...XPU都是什么意思? 现在这年代,技术日新月异,物联网.人工智能.深度学习等概念遍地开花,各类芯片名词GPU, TPU, NPU,DPU层出不穷......都是什么 ...
- H.264/H265码流解析
H.264/H265码流解析 一.H.264码流解析 一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成 一个原始的 ...
- 自动机器学习(AutoML)
自动机器学习(AutoML) 不再需要苦恼于学习各种机器学习的算法 目录: 一.为什么需要自动机器学习 二.超参数优化 Hyper-parameter Optimization 三.元学习 Meta ...
- 用户自定义协议client/server代码示例
用户自定义协议client/server代码示例 代码参考链接:https://github.com/sogou/workflow message.h message.cc server.cc cli ...
- python应用_读取Excel数据【二】_二次封装之函数式封装
目的:想要把对Excel文件读取做成一个通用的函数式封装,便于后续简单调用,隔离复杂性. 未二次封装前原代码: #coding=gbkimport osimport xlrdcurrent_path= ...
- 《python网络数据采集》笔记2
1.网页表单与登陆窗口 Requests 库擅长处理那些复杂的 HTTP 请求.cookie.header(响应头和请求头)等内容. 1)表单提交 import requests #字段 params ...
- 学习响应式编程 Reactor (2) - 初识 reactor
Reactor Reactor 是用于 Java 的异步非阻塞响应式编程框架,同时具备背压控制的能力.它与 Java 8 函数式 Api 直接集成,比如 分为CompletableFuture.Str ...
- 屌炸天,像写代码一样写PPT,一个小工具解决
此文已经废,请移步升级版博文: markdown写ppt (史上最全)