14 lines
		
	
	
		
			497 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			14 lines
		
	
	
		
			497 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| total="$(free --si | rg Mem | awk '{print $2}')"
 | |
| 
 | |
| human() {
 | |
|   awk -v mem="$1" 'BEGIN{print sprintf("%.1f%s", mem/1000/(mem > 1000000 ? 1000 : 1), mem > 1000000 ? "G" : "M")}'
 | |
| }
 | |
| 
 | |
| free --si -s 3 | rg --line-buffered Mem | while read -r line; do
 | |
|   used=$(echo "$line" | awk '{print $3}')
 | |
|   perc=$(awk -v used="$used" -v total="$total" 'BEGIN{print sprintf("%.f", used/total*100)}')
 | |
| 
 | |
|   echo '{"total": "'$(human "$total")'", "used": "'$(human "$used")'", "percent": '$perc'}'
 | |
| done |