Perintah untuk menampilkan penggunaan Memori, Penggunaan Disk dan Beban CPU

15

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?

Prem
sumber
Tampak seperti pekerjaan rumah. Ambil data yang Anda butuhkan dari / proc sendiri atau dari perintah lain lalu format dengan awk, perl, atau hanya bash.
mikebabcock
Selamat datang di Unix & Linux Stack Exchange! Harap selalu sertakan OS Anda. Solusi sangat sering bergantung pada Sistem Operasi yang digunakan. Apakah Anda menggunakan Unix, Linux, BSD, OSX, sesuatu yang lain? Versi yang mana?
terdon
Terima kasih teman-teman atas bantuan kalian. Namun, saya mendapat jawaban saya di sini stackoverflow.com/questions/33774260/…
Mohsin Inayat Khan

Jawaban:

33

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.

terdon
sumber
1
Saya mencoba hanya dengan awk github.com/rahulinux/scripts/blob/master/sys_info.sh
Rahul Patil
@RahulPatil terlihat bagus, mengapa Anda tidak mempostingnya?
terdon
3
karena itu hanya ans yang Anda salin. : D
Rahul Patil
1
baris -m gratis memang memberi saya kesalahan, persentase itu tidak benar lolos. beginilah seharusnya:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
simon
1
@ user1735921 Silakan ajukan pertanyaan . Tapi pertama-tama, google cara menyimpan output dari suatu perintah dalam suatu variabel, itu sepele. Kemudian, jelaskan apa yang ingin Anda simpan dan apa yang ingin Anda uji dalam pertanyaan.
terdon
5

Periksa di atas .

Baca ini, https://lwn.net/Articles/387202/

Lihat, masukkan deskripsi gambar di sini

Anda dapat melihat memuat disk / memori / cpu oleh aplikasi:

masukkan deskripsi gambar di sini

Misalnya, penggunaan disk:

masukkan deskripsi gambar di sini

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.

pengguna2496
sumber
2

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

X Tian
sumber
1
Lemparkan ke favorit pribadi saya, iostat.
mikebabcock
0

Saya pikir Anda memerlukan bantuan nagios, karena semua plugin / srcipts untuk nagios ini sudah dibuat dan Anda dapat mengunduh dan menguji tanpa instalasi nagios.

klerk
sumber
0

Jika Anda menggunakan solaris, lihat ini: showcpucount

Ini akan memberi Anda ide tentang bagaimana cara menulis kode Anda.

vikkp
sumber
Blog tidak ada lagi.
Jay Elston
0

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
xinthose
sumber
-2

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)
Abhijeet Petkar
sumber