Lệnh hiển thị Sử dụng bộ nhớ, Sử dụng đĩa và Tải CPU


15

Tôi muốn hiển thị Sử dụng bộ nhớ, Sử dụng đĩa và Tải CPU theo định dạng sau:

Memory Usage: 33/512MB (6%)    
Disk usage: 4.2/20GB (23%) 
CPU Load: 0.01

Làm thế nào để làm điều đó?


Trông rất giống bài tập về nhà. Lấy dữ liệu bạn cần từ / Proc chính nó hoặc từ các lệnh khác sau đó định dạng dữ liệu bằng awk, perl hoặc chỉ bash.
mikebabcock

Chào mừng bạn đến với Sàn giao dịch Unix & Linux! Hãy luôn luôn bao gồm hệ điều hành của bạn. Các giải pháp rất thường phụ thuộc vào Hệ điều hành đang được sử dụng. Bạn đang sử dụng Unix, Linux, BSD, OSX, cái gì khác? Phiên bản nào?
terdon

Cảm ơn các bạn đã giúp tôi. Tuy nhiên, tôi đã nhận được câu trả lời của mình ở đây stackoverflow.com/questions/33774260/ từ
Mohsin Inayat Khan

Câu trả lời:


33

Hãy thử nó, nó hoạt động trên hệ thống Debian của tôi. Các chi tiết có thể khác nhau tùy thuộc vào việc triển khai các công cụ này mà HĐH của bạn sử dụng:

#!/bin/sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 

Nếu bạn lưu ở trên dưới dạng tập lệnh và chạy nó, bạn sẽ nhận được (ví dụ từ hệ thống của tôi):

$ ./foo.sh 
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78

Lưu ý rằng tập lệnh ở trên đang cung cấp việc sử dụng đĩa cho /phân vùng. Bạn đã không chỉ định những gì bạn muốn vì vậy tôi đoán đó là những gì bạn đang theo đuổi.



@RahulPatil có vẻ tốt, tại sao bạn không đăng nó?
terdon

3
bởi vì nó chỉ là bản sao của bạn. : D
Rahul Patil

1
dòng -m miễn phí cho tôi một lỗi, tỷ lệ phần trăm không được thoát đúng. đây là cách nó phải là:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
simon

1
@ user1735921 Xin hỏi một câu hỏi . Nhưng trước tiên, google làm thế nào để lưu trữ đầu ra của một lệnh trong một biến, đó là chuyện nhỏ. Sau đó, giải thích những gì bạn muốn lưu trữ và những gì bạn muốn kiểm tra trong câu hỏi.
terdon

5

Kiểm tra trên đỉnh .

Đọc này, https://lwn.net/Articles/387202/

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

Bạn có thể thấy tải đĩa / bộ nhớ / cpu theo ứng dụng:

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

Ví dụ: sử dụng đĩa:

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

trên đỉnh thu thập số liệu thống kê trong thư mục /var/log/atop/trong các tệp định dạng nhị phân mỗi ngày. Bạn có thể đọc một trang người đàn ông, phải có một cách để trích xuất thông tin hữu ích.


2

Không có lệnh để hiển thị chính xác theo định dạng cụ thể của bạn, nhưng sau đây cung cấp một số giá trị cơ bản, mà người ta có thể xây dựng một tập lệnh xung quanh, như một cách thay thế cũng có thể đọc các giá trị từ / Proc và / sys.

free - tổng quan nhanh

vmstat 1 hiển thị hiệu suất hệ thống i / o

top năng động

htop tương tự như trên


1
Ném vào yêu thích cá nhân của tôi, iostat.
mikebabcock

0

Tôi nghĩ rằng bạn cần trợ giúp của nagios, vì tất cả các plugin / srcipts cho nagios này đã được tạo và bạn có thể tải xuống và kiểm tra mà không cần cài đặt nagios.


0

Nếu bạn đang sử dụng solaris, hãy kiểm tra điều này: showcpucount

Điều này sẽ cho bạn một ý tưởng về cách viết mã của bạn.


Blog không còn tồn tại.
Jay Elston

0

Đây là mã của tôi để nhận CPU và sử dụng RAM:

### 1. get total average CPU usage for the past minute
avg_cpu_use=$(uptime)
# a. split response
IFS=',' read -ra avg_cpu_use_arr <<< "$avg_cpu_use"
# b. find cpu usage
avg_cpu_use=""
for i in "${avg_cpu_use_arr[@]}"; do :
    if [[ $i == *"load average"* ]]; then
        avg_cpu_use=$i
        break       
    fi
done
# c. create response
avg_cpu_use=$(echo ${avg_cpu_use:16})   # Remove "  load average: "
if [[ -z "${avg_cpu_use// }" ]]; then
    avg_cpu_use="CPU: N/A%%"
    exit -1
else
    avg_cpu_use="CPU: ${avg_cpu_use}%%"
fi

### 2. get RAM usage
ram_use=$(free -m)
# a. split response by new lines
IFS=$'\n' read -rd '' -a ram_use_arr <<< "$ram_use"
# b. remove extra spaces
ram_use="${ram_use_arr[1]}"
ram_use=$(echo "$ram_use" | tr -s " ")
# c. split response by spaces
IFS=' ' read -ra ram_use_arr <<< "$ram_use"
# d. get variables
total_ram="${ram_use_arr[1]}"
ram_use="${ram_use_arr[2]}"
# e. create response
ram_use="RAM: ${ram_use}/${total_ram} MB"

echo $avg_cpu_use
echo $ram_use

-2

Bạn sẽ có thể hiển thị Sử dụng bộ nhớ, Sử dụng đĩa và Tải CPU bằng cách sử dụng:

(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)
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.