หน่วยความจำระบบที่มนุษย์อ่านได้อ่านจาก CLI หรือไม่


15

ใน OS X ฉันได้รับหน่วยความจำของระบบที่อ่านง่ายเหมือนมนุษย์ :

printf -v system_memory \
          "$(system_profiler SPHardwareDataType \
             | awk -F ': ' '/^ +Memory: /{print $2}')"
echo "$system_memory"

พิมพ์มิตร:

4 GB

แม้ว่าสิ่งนี้บน Linux ถูกต้อง:

lshw -class memory

มันเอาท์พุท:

size: 4096MiB

ฉันต้องแยกวิเคราะห์มันอย่างเจ็บปวดและพยายามทำให้มันเป็นสตริงที่ดีเท่าที่กล่าวไว้ข้างต้น

ฉันใช้คำสั่งผิดหรือเปล่า?


5
"ฉันต้องแยกวิเคราะห์มันอย่างเจ็บปวด" ... สิ่งที่น่าเกลียดขนาดใหญ่สำหรับ OSx นั้นไม่เจ็บปวดใช่ไหม :-)
Patrick

@ Patrick: ฉันไม่ชอบ OS X เมื่อเปรียบเทียบกับ Linux!
Robottinosino

คำตอบ:


32

หากนั่นคือทั้งหมดที่คุณต้องการเพียงใช้free:

$ free -h | gawk  '/Mem:/{print $2}'
7.8G

freeส่งคืนข้อมูลหน่วยความจำ-hสวิตช์บอกให้พิมพ์ในรูปแบบที่มนุษย์อ่านได้


1
ฉันไม่รู้ว่าfreeมี-hสวิตช์(ดี) ขอบคุณ ที่น่าสนใจมากว่าfreeถือว่า4.0G(ซึ่งเป็นสิ่งที่ฉันได้รับ) 4 GBของมนุษย์มากขึ้นกว่าที่เป็นมิตร "แม่ฉันหิวฉันอยากได้ 1.0 แอปเปิ้ล" หากนี่คือสิ่งที่ดีที่สุดที่เรามีบน Linux ฉันควรจะแยกตัวเลขออกและแทนที่Gด้วยGBตัวเอง .. เราแทบจะไม่เห็น HDD เช่นโฆษณาเป็น "320G" มากกว่า "320 GB" :(
Robottinosino

5
@ Robottinosino ขนาด HDD จะแสดงเป็น GB (10 ^ 9 ไบต์) ในขณะที่หน่วยความจำจะแสดงเป็น GiB (2 ^ 30 ไบต์) โดย 4.0G จะให้ความคิดที่แม่นยำแก่คุณ ด้วย 4GB คุณจะไม่รู้ว่ามันเป็น 4GB (หรือ 4GiB จริง ๆ ) หรือ 4.4GB ปัดลงเป็น 4 หรือ 3.6G ปัดเศษเป็น 4 หรือไม่
Stéphane Chazelas

@Robottinosino หากคุณต้องการปัดเศษให้เป็นตัวเลขที่มนุษย์อ่านได้มากขึ้นและเพิ่มGBลองfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap

3

บน Linux

read x memtotal x < /proc/meminfo

จะเก็บยอดเงิน mem ทั้งหมด$memoryในจำนวน kiB freeนั่นคือจำนวนหน่วยความจำที่มีให้ลินุกซ์เช่นเดียวกับรายงานโดย

หากคุณต้องการ RAM ที่ติดตั้งคุณสามารถทำสิ่งต่าง ๆ เช่น:

awk '{s+=$0};END{print s}' /sys/bus/mc*/devices/dimm*/size

เพื่อให้ได้ขนาดใน MiBs หรือ

awk '{s+=$0};END{printf "%.2gG\n", s/1024}' /sys/bus/mc*/devices/dimm*/size

ถ้าคุณต้องการขนาดใน GiB


0

วิธีที่ง่ายที่สุดคือการใช้คำสั่งฟรี

free -gh

คุณจำเป็นต้องแยกวิเคราะห์เช่นกัน
ตอบโต้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.