मैं स्मृति स्थिति की निगरानी के लिए एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं। यह है, जो कि अभी तक मेरे पास है:
# Memory Usage
ramactive=$(vm_stat | grep "Pages active" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
ramwired=$(vm_stat | grep "Pages wired" | while read a b c d; do echo "$((${d%?}*4096/1024/1024))"; done)
ramspec=$(vm_stat | grep "Pages speculative" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
raminactive=$(vm_stat | grep "Pages inactive" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
ramfree=$(vm_stat | grep "Pages free" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
rampurge=$(vm_stat | grep "Pages purgeable" | while read a b c; do echo "$((${c%?}*4096/1024/1024))"; done)
printf "RAM\n"
printf "%-11s%'.f MB Used\n" "Active:" "$ramactive"
printf "%-11s%'.f MB Used\n" "Wired:" "$ramwired"
printf "%-11s%'.f MB Used\n" "Inactive:" "$raminactive"
printf "%-11s%'.f MB Used\n" "Spec:" "$ramspec"
printf "%-11s%'.f MB Used\n" "Cached:" "$(($ramspec+$raminactive))"
printf "%-11s%'.f MB Used\n" "Free:" "$ramfree"
printf "%-11s%'.f MB Used\n" "Total Used:" "$(($ramwired+$ramactive))"
printf "%-11s%'.f MB Used\n" "Used-Purge:" "$(($ramwired+$ramactive-$rampurge))"
printf "%-11s%'.f MB Used\n" "Total Free:" "$(($ramfree+$ramspec+$raminactive))"
printf "%-11s%'.f MB Used\n" "Total RAM:" "$(($ramactive+$ramwired+$ramspec+$raminactive+$ramfree))"
मैं यहां केवल प्रयोग कर रहा हूं, इसलिए यह अंतिम स्क्रिप्ट नहीं है। लेकिन मुझे यहां से नंबर नहीं मिल रहे हैं और एक्टिविटी मॉनिटर मैच के लिए। उदाहरण के लिए, सक्रिय + वायर्ड मेमोरी यहां मेरे कंप्यूटर पर 9 जीबी होना दर्शाती है, जबकि गतिविधि मॉनिटर का दावा है कि यह केवल 6.5 जीबी है। वायर्ड मेमोरी रीडिंग मैच, लेकिन एक्टिव रीडिंग नहीं। मुझे यहां क्या समझ नहीं आ रहा है?