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


10

我有一个单核VPS,其平均负载有时会超过25。当达到该值时,它变得难以忍受的缓慢,甚至命令通过运行dash,速度也更快,并且比bash占用更少的RAM ,要花一些时间才能运行。如何跟踪导致高负载的进程?


2
sudo apt install htop为您提供了一个有用的文本模式工具(比standard更加用户友好top)。但是top如果您想要一个小的足迹,那是很好的。
sudodus

2
加载队列长度指示准备使用CPU的进程数。这可能不一定是导致问题的单个过程。
托尔比约恩Ravn的安徒生

Answers:


16

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

要安装htop

sudo apt-get install htop

启动它:

htop

在此处输入图片说明

F6排序,然后使用导航键选择PERCENT_CPU并按Enter。

在此处输入图片说明

或者,您可以通过top这种方式使用(source):

top -b -n 1 | head -n 12

2
作为一种快捷方式,您可以P用来按处理器使用率,M内存或T时间进行排序,并t返回到树形布局。
deltab

有趣的是,htop具有一些基本的鼠标支持。如果单击列,它也可以按它们进行排序(如果我没记错的话)。您的鼠标还有其他一些操作。
伊斯梅尔·米格尔

11

以下内容仅是从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个()进程。


1

昨天我在学习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> &),但后来我意识到根本不可能:)


参考文献:


最后一个并没有显示CPU使用率最高的进程,而是从第二个开始,您可能是想NR>=2在那儿-原来ps提供了h省略标题行的选项,请参阅我最新的答案。
甜点

@dessert,您是对的,以前是NR>=2,但是NR>1很短:)我已经更新了答案。
pa4080

1

使用top命令

top- 显示Linux进程

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

资源

好的youtube教程

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.