#!/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