2013-03-22 105 views
2

我有了一个脚本hex.bat:时间命令的输出保存到一个日志文件

#!/bin/bash 
HEX_ROOT=. 
HEX_COLOURS=./data 
HEX_PDB=. 
HEX_MACROS=. 
HEX_CACHE=./data 

time ./hex6i.x64 -kill -nogui -ncpu 1 -ngpu 1 -e dock.mac -l job.log 

所有输出为job.log,除了时间。我想保存在jog.log执行此脚本的持续时间。有没有人有任何线索?

在此先感谢。

回答

1

我得到了使用括号

#!/bin/bash 
HEX_ROOT=. 
HEX_COLOURS=./data 
HEX_PDB=. 
HEX_MACROS=. 
HEX_CACHE=./data 

(time ./hex6i.x64 -kill -nogui -ncpu 1 -ngpu 1 -e dock.mac -l job.log) &> job.log 
+0

如果将输出写入与实际命令相同的文件,则应使用“&>>”,否则时间输出将覆盖命令中的日志。 – rudi 2015-10-14 12:13:45

2

time将其输出到标准errror,而不是标准输出,从而把报告中不同的输出流。例如,要将输出写入文件的程序时间很常见,而不将时间输出放入日志中。

如果你想输出的时间去到日志,你有两个选择:

  1. 使用的time-o并可能-a选项的time输出写入日志文件。您的time实施可能会或可能不会有这些选项。

  2. 重定向标准错误:time .... 2>> job.log2>&1。前者写入相同的日志文件(通过append);后者在标准输出所在的位置发送标准错误输出。请注意,两者都会影响time运行的程序以及time本身。

+0

2 >>重定向只有标准错误,不能同时为 – Lorkenpeist 2013-03-22 22:45:15

+0

确实如此,故意如此。如果你只关心时间输出,那么重定向标准输出就毫无意义。从最初的问题来看,正在运行的程序显然有自己的日志管理,重定向标准输出可能并不理想。 (在我的回答中有一个流浪的“可能会令人困惑”,我会摆脱它)。 – rra 2013-03-22 23:07:44

+0

如果您收到'-o:命令未找到'的消息 - 请不要忘记'time'是关键字在bash中。您可能需要使用'command time'或'/ usr/bin/time' - http://askubuntu.com/a/86196/227180 – culix 2016-04-09 08:55:27