Posted to tcl by Napier at Mon Apr 13 17:24:05 GMT 2015view raw

  1. set fh [open "/proc/meminfo"]
  2. set mem [read $fh]
  3. close $fh
  4. if {$mem != ""} {
  5. set mem [split $mem \n]
  6. set complete 0
  7. foreach line $mem {
  8. if {[string match "*MemTotal*" $line]} {
  9. set memtotal [string trim [string map {"MemTotal:" "" "kB" ""} $line]]
  10. } elseif {[string match "*MemFree*" $line]} {
  11. set memfree [string trim [string map {"MemFree:" "" "kB" ""} $line]]
  12. } elseif {[string match "*Cached*" $line]} {
  13. set cached [string trim [string map {"Cached:" "" "kB" ""} $line]]
  14. } elseif {[string match "*Buffers*" $line]} {
  15. set buffers [string trim [string map {"Buffers:" "" "kB" ""} $line]]
  16. }
  17. if {[info exists memtotal] && [info exists memfree] && [info exists cached] && [info exists buffers]} {
  18. set complete 1
  19. break
  20. }
  21. }
  22. if {$complete == 1} {
  23. set mempct [expr {double(($memfree + $cached + $buffers)) / $memtotal}]
  24. puts $mempct
  25. }
  26. }
  27.