system-info.sh 1.2 KB

12345678910111213141516171819202122232425
  1. #!/usr/bin/env bash
  2. set -e # Exit immediately if a command exits with a non-zero status.
  3. ROOT_FOLDER="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/..)"
  4. STATE_FOLDER="${ROOT_FOLDER}/state"
  5. # Available disk space
  6. TOTAL_DISK_SPACE_BYTES=$(df -P -B 1 / | tail -n 1 | awk '{print $2}')
  7. AVAILABLE_DISK_SPACE_BYTES=$(df -P -B 1 / | tail -n 1 | awk '{print $4}')
  8. USED_DISK_SPACE_BYTES=$(($TOTAL_DISK_SPACE_BYTES - $AVAILABLE_DISK_SPACE_BYTES))
  9. # CPU info
  10. CPU_LOAD_PERCENTAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
  11. # Memory info
  12. MEM_TOTAL_BYTES=$(free -b | grep Mem | awk '{print $2}')
  13. MEM_AVAILABLE_BYTES=$(free -b | grep Mem | awk '{print $7}')
  14. MEM_USED_BYTES=$(($MEM_TOTAL_BYTES - $MEM_AVAILABLE_BYTES))
  15. # Create temporary json file
  16. TEMP_JSON_FILE=$(mktemp)
  17. echo '{ "cpu": { "load": '"${CPU_LOAD_PERCENTAGE}"' }, "memory": { "total": '"${MEM_TOTAL_BYTES}"' , "used": '"${MEM_USED_BYTES}"', "available": '"${MEM_AVAILABLE_BYTES}"' }, "disk": { "total": '"${TOTAL_DISK_SPACE_BYTES}"' , "used": '"${USED_DISK_SPACE_BYTES}"', "available": '"${AVAILABLE_DISK_SPACE_BYTES}"' } }' > "${TEMP_JSON_FILE}"
  18. # Write to state file
  19. echo "$(cat "${TEMP_JSON_FILE}")" > "${STATE_FOLDER}/system-info.json"