Saya ingin menampilkan Penggunaan memori, Penggunaan Disk, dan Beban CPU dalam format berikut:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Bagaimana aku melakukan itu?
Saya ingin menampilkan Penggunaan memori, Penggunaan Disk, dan Beban CPU dalam format berikut:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Bagaimana aku melakukan itu?
Jawaban:
Coba ini, ini berfungsi pada sistem Debian saya. Detailnya dapat bervariasi tergantung pada implementasi alat-alat ini yang digunakan OS Anda:
#!/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)}'
Jika Anda menyimpan di atas sebagai skrip dan menjalankannya, Anda akan mendapatkan (contoh dari sistem saya):
$ ./foo.sh
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78
Perhatikan bahwa skrip di atas memberikan penggunaan disk untuk /
partisi. Anda tidak menentukan apa yang Anda inginkan, jadi saya kira itulah yang Anda cari.
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 }'
Periksa di atas .
Baca ini, https://lwn.net/Articles/387202/
Lihat,
Anda dapat melihat memuat disk / memori / cpu oleh aplikasi:
Misalnya, penggunaan disk:
di atas statistik yang dikumpulkan dalam direktori /var/log/atop/
dalam format file biner per hari. Anda dapat membaca halaman manual, harus ada cara untuk mengekstrak informasi yang berguna.
Tidak ada perintah untuk menampilkan dengan tepat dalam format khusus Anda, tetapi yang berikut ini memberikan beberapa nilai dasar, yang dapat dibuat skrip, sebagai alternatif juga mungkin untuk membaca nilai dari / proc dan / sys.
free
- gambaran umum cepat
vmstat 1
menunjukkan statistik kinerja sistem i / o
top
dinamis
htop
mirip dengan atas
Jika Anda menggunakan solaris, lihat ini: showcpucount
Ini akan memberi Anda ide tentang bagaimana cara menulis kode Anda.
Ini kode saya untuk mendapatkan penggunaan CPU dan 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
Anda harus dapat menampilkan penggunaan Memori, Penggunaan Disk dan Beban CPU menggunakan:
(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)