คำสั่งเพื่อแสดงการใช้งานหน่วยความจำการใช้ดิสก์และโหลด CPU


16

ฉันต้องการแสดงการใช้หน่วยความจำ, การใช้ดิสก์และโหลด CPU ในรูปแบบต่อไปนี้:

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

ฉันจะทำอย่างไร


ดูเหมือนการบ้านเยอะมาก หยิบข้อมูลที่คุณต้องการจาก / proc เองหรือจากคำสั่งอื่นแล้วจัดรูปแบบด้วย awk, perl หรือเพียงแค่ทุบตี
mikebabcock

ยินดีต้อนรับสู่ Unix & Linux Stack Exchange! กรุณาเสมอรวมถึงระบบปฏิบัติการของคุณ การแก้ปัญหามักขึ้นอยู่กับระบบปฏิบัติการที่ใช้ คุณใช้ Unix, Linux, BSD, OSX หรือเปล่า เวอร์ชันไหน
terdon

ขอบคุณมากสำหรับความช่วยเหลือของคุณ อย่างไรก็ตามฉันได้รับคำตอบที่นี่stackoverflow.com/questions/33774260/ …
Mohsin Inayat Khan

คำตอบ:


33

ลองนี่ใช้งานได้กับระบบ Debian ของฉัน รายละเอียดอาจแตกต่างกันไปขึ้นอยู่กับการใช้งานเครื่องมือเหล่านี้ที่ระบบปฏิบัติการของคุณใช้:

#!/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)}' 

หากคุณบันทึกข้างต้นเป็นสคริปต์และเรียกใช้คุณจะได้รับ (ตัวอย่างจากระบบของฉัน):

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

โปรดทราบว่าสคริปต์ดังกล่าวให้การใช้งานดิสก์สำหรับ/พาร์ติชัน คุณไม่ได้ระบุสิ่งที่คุณต้องการดังนั้นฉันเดาว่านั่นคือสิ่งที่คุณต้องการ


1
ฉันพยายามเพียงawk github.com/rahulinux/scripts/blob/master/sys_info.sh
Rahul Patil

@RahulPatil ดูดีทำไมคุณไม่โพสต์มัน?
terdon

3
เพราะมันเป็นเพียงแค่การคัดลอกของคุณ : D
Rahul Patil

1
บรรทัดฟรี -m ทำให้ฉันเกิดข้อผิดพลาดเปอร์เซ็นต์ไม่ถูกต้อง นี่เป็นวิธีที่ควรจะเป็น:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
simon

1
@ user1735921 โปรดถามคำถาม แต่ก่อนอื่น google วิธีการเก็บผลลัพธ์ของคำสั่งในตัวแปรนั่นเป็นเรื่องเล็กน้อย จากนั้นอธิบายสิ่งที่คุณต้องการจัดเก็บและสิ่งที่คุณต้องการทดสอบในคำถาม
terdon

5

ตรวจสอบยอด

อ่านนี้https://lwn.net/Articles/387202/

ดู, ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถดูโหลดของดิสก์ / หน่วยความจำ / cpu โดยแอป:

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างเช่นการใช้งานดิสก์:

ป้อนคำอธิบายรูปภาพที่นี่

บนสุดรวบรวมสถิติในไดเรกทอรี/var/log/atop/ในไฟล์รูปแบบไบนารีต่อวัน คุณสามารถอ่าน man page ได้ต้องมีวิธีดึงข้อมูลที่เป็นประโยชน์ออกมา


2

ไม่มีคำสั่งให้แสดงในรูปแบบเฉพาะของคุณ แต่ต่อไปนี้จะให้ค่าฐานบางอย่างซึ่งหนึ่งสามารถสร้างสคริปต์รอบเป็นทางเลือกก็เป็นไปได้ที่จะอ่านค่าจาก / proc และ / sys

free - ภาพรวมอย่างรวดเร็ว

vmstat 1 แสดงให้เห็นถึงประสิทธิภาพของระบบ I / O สถิติ

top พลวัต

htop คล้ายกับด้านบน


1
โยน iostat ส่วนตัวที่ฉันโปรดปราน
mikebabcock

0

ฉันคิดว่าคุณต้องการความช่วยเหลือจาก nagios สำหรับปลั๊กอิน / srcipts สำหรับ nagios นี้ได้ทำไปแล้วและคุณสามารถดาวน์โหลดและทดสอบโดยไม่ต้องติดตั้ง nagios


0

หากคุณใช้โซลาริสลองดูที่นี่: showcpucount

สิ่งนี้จะช่วยให้คุณเข้าใจวิธีการเขียนโค้ดของคุณ


บล็อกไม่มีอยู่อีกต่อไป
Jay Elston

0

นี่คือรหัสของฉันสำหรับการใช้งาน CPU และ 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

คุณควรจะสามารถแสดงการใช้หน่วยความจำการใช้ดิสก์และโหลด CPU โดยใช้:

(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.