我尝试使用ps r > log | wc log
但这会返回Ambiguous output redirect.
.有人可以解释原因并提供另一种解决方案吗?
答案1
管道符号(“|”)将一个程序的输出重定向到另一个程序的输入。
但是,您可以使用“>”将wc
的输出重定向到名为 log 的文件,同时希望将输出重定向到 STDIN wc
(当您为 提供输入文件时,它不会使用它wc
)。
因此,您需要以下之一(提示:后一种解决方案更好,因为它不会创建额外的文件。)
ps r > log ; wc log
或者
ps r|wc
顺便说一句:您可能想wc
计算行数,所以wc -l
在这种情况下。
答案2
您正在混合重定向和管道
ps r > log # redirects ps output to a file called log (over writing any contents of log)
你想要的是
ps r | wc # this connects the output of ps to the input of wc
如果您想使用您的方法,那么您需要执行以下操作
ps r > log; wc log
意思是,ps
将其输出重定向到名为 log 的文件,然后wc
在该文件上运行该命令log
。
答案3
使用ps
这样做是不可靠的——进程的参数可以包含换行符。 Linux 上更好的替代方法是/proc/loadavg
像这样使用:
awk '{ gsub("[0-9]+/", "") ; print $4 }' /proc/loadavg