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 đó?
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 đó?
Câu trả lời:
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.
awk
github.com/rahulinux/scripts/blob/master/sys_info.sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
Kiểm tra trên đỉnh .
Đọc này, https://lwn.net/Articles/387202/
Xem,
Bạn có thể thấy tải đĩa / bộ nhớ / cpu theo ứng dụng:
Ví dụ: sử dụng đĩa:
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.
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
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.
Đâ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
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)