列出十分钟内占用cpu最多的几个进程

本文介绍了一个bash脚本,用于监控系统中各进程的CPU使用情况,并通过定时收集数据找出CPU占用最高的前四个进程。

ps命令用于收集系统中进程的详细信息。这些信息包括cpu使用情况、正在执行的命令、内存使用、进程状态等。

 sh脚本:

#!/bin/bash

SECS=600
UNIT_TIME=10

STEPS=$(( $SECS / $UNIT_TIME))

echo Watching CPU Usage...;

for((i=0;i<STEPS;i++))
do
  ps -eo comm,pcpu|tail -n +2 >> /tmp/cpu_usage.$$
  sleep $UNIT_TIME
done

echo
echo CPU eaters:

cat /tmp/cpu_usage.$$ | \
awk '
{ prcoess[$1]+=$2;}
END{
    for(i in process)
    {
      printf("%-20s %s",i,process[i];
    }
}' | sort -nrk 2 | head -n 4

rm /tmp/cpu_usage.$$

脚本运行的时候会出现下面的错误:

这主要是dash存在导致的问题,我们运行上述命令后,直接选择NO就可以了。

### 查看占用CPU最多进程的方法或工具 在Linux系统中,有多种方法可以查看占用CPU最多进程。以下是几种常用的方法和工具[^2]: 1. **使用 `top` 命令** `top` 是一个常用的性能分析工具,可以实时显示系统中各个进程的资源占比情况,包括CPU使用率等。运行 `top` 命令后,进程会按照CPU使用率从高到低排序。默认情况下,占用CPU最多进程会排在列表的上方。可以通过按下 `Shift + p` 键来确保按照CPU使用率对进程进行排序[^2]。 2. **使用 `ps` 命令** 通过结合 `ps` 命令的选项和参数,可以查看占用CPU最多进程。以下命令会列出所有用户的所有进程,并按照CPU使用率从高到低排序,同时显示前几个进程: ```bash ps aux --sort=-%cpu | head ``` 在输出中,可以看到每个进程的USER、PID、%CPU、VSZ(虚拟内存大小)、RSS(常驻集大小)、TTY(控制终端)、STAT(进程状态)、START(启动时间)、TIME(CPU时间)和COMMAND(命令名称)等信息[^2]。 3. **使用 `htop` 命令** `htop` 是 `top` 命令的一个增强版本,提供了一个彩色的界面和更多的交互功能。安装并运行 `htop` 后,可以直接在界面上看到各个进程CPU使用率,并且可以通过按下 `F6` 键来按照CPU使用率对进程进行排序。这样,占用CPU最多进程就会排在列表的上方[^2]。 4. **结合 `ps` 和 `sort` 命令** 可以通过以下命令查找占用CPU最多进程,并按照CPU使用率排序: ```bash ps -aux | sort -k3 -nr | head ``` 其中,`-k3` 表示按照第3列(即 `%CPU` 列)进行排序,`-nr` 表示数值逆序排序,`head` 则用于显示前几位的结果[^4]。 5. **使用 `vmstat` 工具** 虽然 `vmstat` 主要用于监控系统的整体性能,但它也可以提供关于CPU使用率的信息。其输出中的 `us` 字段表示用户进程占用CPU的百分比,`sy` 字段表示系统进程占用CPU的百分比[^1]。虽然 `vmstat` 不直接列出进程,但可以结合其他工具一起使用。 ```bash vmstat 1 5 ``` 上述命令将每秒刷新一次数据,共显示5次结果,帮助观察系统负载的变化。 ### 示例代码 以下是一个完整的脚本示例,用于查找占用CPU最多的前5个进程: ```bash ps -aux --sort=-%cpu | head -n 6 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值