#!/usr/bin/tclsh # idle time in miliseconds (5000 == 5s) set idle 15000 proc GetLoad {} { set fLoad [open "/proc/loadavg" r] fconfigure $fLoad -encoding ascii set fMem [open "/proc/meminfo" r] fconfigure $fMem -encoding ascii # read load average gets $fLoad LoadLine regexp -line {^([\d\.]+)\s([\d\.]+)\s([\d\.]+)\s.*} \ $LoadLine -> Load1 Load5 Load15 # read memory usage set mem [exec free -k] regexp -line {^.*buffers/cache:\s+(\d+)\s+.*} $mem -> memUsage # get time set date [clock format [clock seconds] -format %D] Write $date $Load5 $memUsage close $fLoad close $fMem Sleep } proc Sleep {} { global idle after $idle GetLoad } proc Write {date Load5 memUsage} { set fWrite [open /tmp/Stats.txt a] fconfigure $fWrite -encoding ascii puts $fWrite "$Load5 [expr $memUsage / 1024]" close $fWrite } GetLoad