我想将turbostat的输出捕获到变量中。默认情况下,turbostat将每隔5秒运行一次,因此该人建议在最后添加睡眠1以捕获单个镜头。但是,当我这样做时,我似乎无法管道结果加上它将输出写入控制台,除非我将所有内容都为空。
如何捕获输出?
我厌倦了但无济于事。
CPUPower=$((turbostat --quiet --show PkgWatt --cpu package sleep 1 | pcregrep -o1 "PkgWatt[\r\n]+([^\r\n]+)") > /dev/null 2>&1)
答案 0 :(得分:0)
根据man page,当turbostat
有一个要运行的命令时,它会将自己的输出发送到stderr
,而不是stdout
。这可能是因为统计数据可以与命令的输出区分开来。
因此,您需要将stderr
重定向到stdout
才能使用pcregrep
进行处理。您使用pcregrep
本身的输出执行此操作,而不是turbostat
的输出。
CPUPower=$(turbostat --quiet --show PkgWatt --cpu package sleep 1 2>&1 | pcregrep -o1 "PkgWatt[\r\n]+([^\r\n]+)")