ฉันต้องการแสดงการใช้หน่วยความจำ, การใช้ดิสก์และโหลด CPU ในรูปแบบต่อไปนี้:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
ฉันจะทำอย่างไร
ฉันต้องการแสดงการใช้หน่วยความจำ, การใช้ดิสก์และโหลด CPU ในรูปแบบต่อไปนี้:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
ฉันจะทำอย่างไร
คำตอบ:
ลองนี่ใช้งานได้กับระบบ 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
โปรดทราบว่าสคริปต์ดังกล่าวให้การใช้งานดิสก์สำหรับ/
พาร์ติชัน คุณไม่ได้ระบุสิ่งที่คุณต้องการดังนั้นฉันเดาว่านั่นคือสิ่งที่คุณต้องการ
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 }'
ตรวจสอบยอด
อ่านนี้https://lwn.net/Articles/387202/
ดู,
คุณสามารถดูโหลดของดิสก์ / หน่วยความจำ / cpu โดยแอป:
ตัวอย่างเช่นการใช้งานดิสก์:
บนสุดรวบรวมสถิติในไดเรกทอรี/var/log/atop/
ในไฟล์รูปแบบไบนารีต่อวัน คุณสามารถอ่าน man page ได้ต้องมีวิธีดึงข้อมูลที่เป็นประโยชน์ออกมา
ไม่มีคำสั่งให้แสดงในรูปแบบเฉพาะของคุณ แต่ต่อไปนี้จะให้ค่าฐานบางอย่างซึ่งหนึ่งสามารถสร้างสคริปต์รอบเป็นทางเลือกก็เป็นไปได้ที่จะอ่านค่าจาก / proc และ / sys
free
- ภาพรวมอย่างรวดเร็ว
vmstat 1
แสดงให้เห็นถึงประสิทธิภาพของระบบ I / O สถิติ
top
พลวัต
htop
คล้ายกับด้านบน
ฉันคิดว่าคุณต้องการความช่วยเหลือจาก nagios สำหรับปลั๊กอิน / srcipts สำหรับ nagios นี้ได้ทำไปแล้วและคุณสามารถดาวน์โหลดและทดสอบโดยไม่ต้องติดตั้ง nagios
หากคุณใช้โซลาริสลองดูที่นี่: showcpucount
สิ่งนี้จะช่วยให้คุณเข้าใจวิธีการเขียนโค้ดของคุณ
นี่คือรหัสของฉันสำหรับการใช้งาน 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
คุณควรจะสามารถแสดงการใช้หน่วยความจำการใช้ดิสก์และโหลด 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)