带输出重定向的定时应用程序

时间:2015-07-06 12:12:48

标签: shell output

我在shell中执行程序并重定向输出:

nice -10 appname > /tmp/output.log 2>&1

我还需要计算执行时间。 time命令有效,但它的输出也会与主应用程序的输出一起写入 output.log

time -p nice -10 appname > /tmp/output.log 2>&1

我尝试将应用程序括在括号中,但是会引发错误:

time -p (nice -10 appname > /tmp/output.log 2>&1)
sh: 1: Syntax error: "(" unexpected

如何将time输出写入stdout,同时仍然将应用程序输出重定向到文件?

1 个答案:

答案 0 :(得分:2)

您可以使用虚拟printf / echo

time -p printf "$(nice -10 appname > /tmp/output.log 2>&1)"

<小时/> 或者这里的文件:

time -p sh <<EOF
nice -10 appname > /tmp/output.log 2>&1
EOF

<小时/> 或者使用Shell的-c选项:

time -p sh -c "nice -10 appname > /tmp/output.log 2>&1"

<小时/> 或函数(Bash):

nicefun(){
nice -10 appname > /tmp/output.log 2>&1
}
time -p nicefun

<小时/> 或专用脚本:

<强> nice.sh:

#!/bin/sh
nice -10 appname > /tmp/output.log 2>&1

用法:

time -p path/to/nice.sh