Làm thế nào để tôi tìm thấy quá trình với tải cao nhất?


10

Tôi có một VPS lõi đơn với mức tải trung bình vượt quá 25 lần. Khi đạt được điều đó, nó trở nên chậm không chịu nổi và thậm chí các lệnh chạy qua dash, nhanh hơn và sử dụng ít RAM hơn bash, mất một thời gian để chạy. Làm thế nào tôi có thể theo dõi quá trình nào gây ra tải cao?


2
sudo apt install htopcung cấp cho bạn một công cụ chế độ văn bản hữu ích cho mục đích này (thân thiện với người dùng hơn so với tiêu chuẩn top). Nhưng toplà tốt nếu bạn muốn một dấu chân nhỏ.
sudodus

2
Độ dài hàng đợi tải cho biết có bao nhiêu quá trình đã sẵn sàng để sử dụng CPU. Đây có thể không nhất thiết là một quá trình duy nhất gây ra vấn đề.
Thorbjørn Ravn Andersen

Câu trả lời:


16

Bạn có thể cài đặt htop. Điều tốt htoplà nó sẽ cho bạn thấy mức độ sử dụng của bạn trên mỗi CPU, cũng như một biểu đồ văn bản có ý nghĩa của bộ nhớ và sử dụng trao đổi ngay trên đầu trang.

Để cài đặt htop:

sudo apt-get install htop

Bắt đầu làm đi:

htop

nhập mô tả hình ảnh ở đây

Nhấn F6để sắp xếp các quy trình, sau đó sử dụng phím điều hướng bạn có thể chọn PERCENT_CPUvà nhấn enter.

nhập mô tả hình ảnh ở đây

Hoặc bạn có thể sử dụng toptheo cách này ( nguồn ):

top -b -n 1 | head -n 12

2
Là một phím tắt, bạn có thể sử dụng Pđể sắp xếp theo cách sử dụng bộ xử lý, Mcho bộ nhớ hoặc Ttheo thời gian và tđể trở về bố cục cây.
deltab

Thật thú vị, htopcó một số hỗ trợ chuột cơ bản. Nếu bạn nhấp vào các cột, nó cũng sẽ cho phép bạn sắp xếp theo chúng (nếu tôi không nhầm). Có một số hoạt động khác hoạt động với chuột của bạn.
Ismael Miguel

10

Dưới đây chỉ đơn thuần là bị đánh cắp từ Unix.SE: Tìm quá trình sử dụng CPU tối đa nếu mức sử dụng CPU lớn hơn 60%? , mặc dù tất nhiên thích nghi với câu hỏi này.

liệt kê các quy trình theo cách sử dụng CPU cụ thể

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

Điều này đưa ra một danh sách các quy trình có >0.0% sử dụng CPU , bạn có thể thay đổi giá trị này theo nhu cầu của mình, vd >50.0. Mỗi dòng chứa mức sử dụng CPU theo phần trăm, PID và tệp của quy trình.

liệt kê các tiến trình với việc sử dụng CPU nhiều nhất

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

Điều này cho thấy 5 NR<=5quá trình ( ) hàng đầu hiện đang gây ra tải CPU nhiều nhất.


1

Hôm qua tôi đang học awkvà tôi chơi với hai câu trả lời khác. Đây là kết quả:

  • Chỉ nhận quy trình có mức sử dụng CPU cao nhất, sử dụng 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}'
    
  • Nhận ba quy trình với mức sử dụng CPU cao nhất, sử dụng top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • Nhận ba quy trình với mức sử dụng CPU cao nhất, sử dụng ps aux:

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

Tôi đã cố gắng chạy hai lệnh cuối cùng một lúc (với <command>; wait; <command><command> & <command> &), nhưng sau đó tôi nhận ra rằng điều đó là không thể :)


Người giới thiệu:


Cái cuối cùng không hiển thị quá trình sử dụng CPU nhiều nhất, nhưng bắt đầu với cái thứ hai, có lẽ bạn có nghĩa là NR>=2ở đó - hóa ra pscung cấp tùy chọn hbỏ qua dòng tiêu đề, xem câu trả lời được cập nhật của tôi.
tráng miệng

@datcher, bạn nói đúng, trước đây thì có NR>=2, nhưng NR>1ngắn :) Tôi đã cập nhật câu trả lời.
pa4080

1

Sử dụng toplệnh

top- hiển thị các quy trình Linux

Chương trình hàng đầu cung cấp chế độ xem thời gian thực động của hệ thống đang chạy. Nó có thể hiển thị thông tin tóm tắt hệ thống cũng như danh sách các quy trình hoặc luồng hiện đang được quản lý bởi nhân Linux. Các loại thông tin tóm tắt hệ thống được hiển thị và các loại, thứ tự và kích thước của thông tin được hiển thị cho các quy trình đều có thể định cấu hình người dùng và cấu hình đó có thể được thực hiện liên tục trong quá trình khởi động lại.

nguồn

hướng dẫn youtube tốt

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.