使用 wc 和 ps 统计正在运行的进程

使用 wc 和 ps 统计正在运行的进程

我尝试使用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

相关内容