저는 멋진 wm과 bashets을 사용하여 사용 가능한 메모리를 표시하는 작은 텍스트 위젯을 만들고 있습니다. 총 킬로바이트를 기가바이트(예: 1.2)로 변환하고 싶습니다. 이것이 내가 생각해낸 것입니다...
mem_Kb=$(grep -i memfree /proc/meminfo | cut -d: -f2 | tr -d [kB] | sed "s/^[ \t]*// ; s/[ \t]*$//")
mem_Gig=$(echo "scale = 1 ; $mem_Kb / 1000000" | bc )
echo mem_Gig: $mem_Gig
더 좋고 깨끗한 방법은 무엇입니까?
답변1
그냥 사용하십시오 free
:
$ free -h
total used free shared buffers cached
Mem: 7.8G 6.8G 1.0G 0B 166M 4.2G
-/+ buffers/cache: 2.5G 5.2G
Swap: 7.8G 548K 7.8G
따라서 귀하의 경우에는 다음과 같습니다.
$ mem_Gig=`free -h | awk '$2~/buf/{print $4}'`
$ echo $mem_Gig
5.2G
에서 man free
:
-h, --human
Show all output fields automatically scaled to
shortest three digit unit and display the
units of print out. Following units are used.
B = bytes
K = kilos
M = megas
G = gigas
T = teras
If unit is missing, and you have petabyte of
RAM or swap, the number is in terabytes and
columns might not be aligned with header.
--si Use power of 1000 not 1024.
따라서 1024 대신 1000을 사용하려면 다음과 같이 하면 됩니다.
$ mem_Gig=`free -h --si | awk '$2~/buf/{print $4}'`
$ echo $mem_Gig
5.5G