我在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,同时仍然将应用程序输出重定向到文件?
答案 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