Con người có thể đọc bộ nhớ hệ thống đọc từ CLI?


15

Trên OS X, tôi nhận được một bộ nhớ hệ thống dễ đọc của con người như vậy:

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

in ra thân thiện:

4 GB

Mặc dù điều này trên Linux là chính xác:

lshw -class memory

nó xuất ra:

size: 4096MiB

Tôi cần phải phân tích nó một cách đau đớn và cố gắng biến nó thành một chuỗi đẹp như chuỗi trên.

Tôi đang sử dụng lệnh sai?


5
"Tôi cần phải phân tích một cách đau đớn" ... Điều xấu xí to lớn đó đối với osx không phải là đau đớn sao? :-)
Patrick

@Patrick: Tôi không thích OS X khi so sánh nó với Linux!
Robottinosino

Câu trả lời:


32

Nếu đó là tất cả những gì bạn cần, chỉ cần sử dụng free:

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

freetrả về thông tin bộ nhớ, công -htắc bảo nó in ở định dạng có thể đọc được.


1
Tôi không biết freecó một -hcông tắc (tốt đẹp) . Cảm ơn. Rất thú vị như thế nào freexét thấy 4.0G(đó là những gì tôi nhận được) con người thân thiện hơn nhiều 4 GB. "Mẹ ơi, con đói bụng, con thích 1.0 quả táo, làm ơn." Nếu đây là tốt nhất chúng ta có trên Linux, tôi nên có lẽ chỉ phân tích các số ra và thay thế Gvới GBbản thân mình .. Rất hiếm khi nào chúng ta thấy ổ cứng, ví dụ như quảng cáo là "320G" hơn là "320 GB". :(
Robottinosino

5
@Robottinosino, kích thước ổ cứng được biểu thị bằng GB (10 ^ 9 byte), trong khi bộ nhớ thường được biểu thị bằng GiB (2 ^ 30 byte), 4.0G cho bạn ý tưởng về độ chính xác. Với 4GB, bạn không biết chính xác là 4GB (hoặc 4GiB?) Hay 4.4GB được làm tròn xuống 4 hoặc 3.6G làm tròn lên 4.
Stéphane Chazelas

@Robottinosino Nếu bạn muốn làm tròn nó thành một số dễ đọc hơn và thêm vào GB, hãy thửfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap

3

Trên Linux,

read x memtotal x < /proc/meminfo

Sẽ lưu trữ tổng số lượng mem $memorytrong số kiB. Đó là dung lượng bộ nhớ có sẵn cho Linux, giống như báo cáo của free.

Nếu bạn muốn RAM được cài đặt, bạn có thể làm những việc như:

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

Để có được kích thước trong MiBs. Hoặc là

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

Nếu bạn muốn kích thước trong GiB.


0

Cách đơn giản nhất là sử dụng lệnh miễn phí

free -gh

Bạn cần phải phân tích điều đó là tốt.
phản biện
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.