如何找到负载最高的进程?

如何找到负载最高的进程?

我有一个单核 VPS,其平均负载有时会超过 25。当达到这个值时,它就会变得慢得令人无法忍受,甚至通过 运行的命令(dash速度比 更快且占用的 RAM 更少bash)也需要一段时间才能运行。我如何才能追踪导致高负载的进程?

答案1

您可以安装htop。它的优点htop是它会在顶部显示每个 CPU 的使用情况,以及内存和交换使用情况的有意义的文本图表。

安装htop

sudo apt-get install htop

启动它:

htop

在此处输入图片描述

按下F6对流程进行排序,然后使用导航键进行选择PERCENT_CPU并按回车键。

在此处输入图片描述

或者你可以使用top这种方式使用(来源):

top -b -n 1 | head -n 12

答案2

下面的内容只是从Unix.SE:如果 CPU 使用率超过 60%,则查找占用 CPU 最多的进程?,尽管当然适合这个问题。

按特定 CPU 使用率列出进程

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

这将列出具有 CPU 使用率的进程列表>0.0,您可以根据需要更改此值,例如>50.0。每行包含 CPU 使用率百分比、PID 和进程的文件。

列出 CPU 使用率最高的进程

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

NR<=5这显示了当前造成 CPU 负载最大的前 5 个( )进程。

答案3

昨天学习的时候awk,我玩了一下另外两个答案。结果如下:

  • 仅获取 CPU 使用率最高的进程,使用方法ps aux

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • 获取 CPU 使用率最高的三个进程,使用方法如下top

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • 获取 CPU 使用率最高的三个进程,使用方法如下ps aux

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

我试图同时运行最后两个命令(使用<command>; wait; <command><command> & <command> &),但后来我意识到这根本是不可能的:)


参考:

答案4

使用top命令

top-显示 Linux 进程

top 程序提供正在运行的系统的动态实时视图。它可以显示系统摘要信息以及当前由 Linux 内核管理的进程或线程列表。显示的系统摘要信息类型以及显示的进程信息类型、顺序和大小都是用户可配置的,并且该配置可以在重新启动后保持不变。

来源

很好的 YouTube 教程

相关内容