linux使用管道命令执行ps获取cpu与内存占用率


在Linux中,直接使用`ps`命令来获取CPU和内存的占用率可能不是最直接或最准确的方法,因为`ps`命令主要用于显示当前进程的快照信息,而CPU和内存的占用率通常是一个动态变化的值。不过,我们可以结合`ps`命令和其他工具(如`awk`)来提取一些有用的信息。

但是,要获取CPU和内存的“占用率”,通常我们会使用如`top`、`htop`(如果已安装)或者`vmstat`、`free`等命令来查看更全面的系统资源使用情况。然而,如果你想要通过管道命令从`ps`中提取类似的信息,并且以某种方式计算或展示它们(尽管这不是最准确的方法),你可以这样做:


ps -eo pid,user,%cpu,%mem,args --sort=-%cpu | head -n 10

这条命令会列出按CPU使用率降序排列的前10个进程,包括它们的PID、用户、CPU占用率和内存占用率以及命令名称。

- `ps -eo pid,user,%cpu,%mem,args`:使用`ps`命令以自定义格式输出进程信息,包括PID、用户、CPU和内存占用率以及命令参数。

- `--sort=-%cpu`:按CPU使用率降序排序。

- `head -n 10`:只显示前10行结果。

请注意,这里的`%cpu`和`%mem`显示的是进程相对于单个CPU核心的占用百分比和进程占用的物理内存百分比,而不是全局的CPU或内存占用率。

如果你真的需要全局的CPU和内存占用率,建议使用如`top`(通过`top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'`来提取CPU使用率,但这已经超出了直接使用`ps`命令的范围,并且需要更多的文本处理)。对于内存占用率,可以使用`free -m | grep Mem | awk '{print $3/$2 * 100.0"%"}'`(这里假设你想要知道已使用内存占总内存的百分比,但请注意这只是一个近似的计算方法)。