Posted to tcl by schelte at Sat Mar 23 15:09:21 GMT 2013view raw
- #!/usr/bin/tclsh
- package require Tk
- wm title . "Load AVG"
- #wm resizable . 0 0
- entry .e1 -width 6 -state readonly -justify center -textvariable old(1)
- entry .e2 -width 6 -state readonly -justify center -textvariable old(2)
- entry .e3 -width 6 -state readonly -justify center -textvariable old(3)
- entry .e4 -width 6 -state readonly -justify center -textvariable old(p0)
- entry .e5 -width 6 -state readonly -justify center -textvariable old(p1)
- button .b1 -text {Exit} -state normal -command {exit}
- grid .e1 -row 0 -column 0
- grid .e2 -row 1 -column 0
- grid .e3 -row 2 -column 0
- grid .e4 -row 3 -column 0
- grid .e5 -row 4 -column 0
- grid .b1 -row 5 -column 0
- proc StatusInsert {name now entry_name} {
- global old
- if {$now > $old($name)} {
- puts "$now UP"
- $entry_name configure -foreground red
- } elseif {$now == $old($name)} {
- puts "$now EQUAL"
- $entry_name configure -foreground blue
- } else {
- puts "$now DOWN"
- $entry_name configure -foreground darkgreen
- }
- set old($name) $now
- }
- proc avg_load {} {
- global old
- global p_old
- set lavgFile {/proc/loadavg}
- set lavgFD [open $lavgFile r]
- while {[gets $lavgFD line] >= 0} {
- set result $line
- }
- foreach i {1 2 3} value [lrange [split $result { }] 0 2] {
- StatusInsert $i $value .e[expr {$i+1}]
- }
- foreach j {0 1} p_value [split [lindex [split $result { }] 3] {/}] {
- StatusInsert p$j $p_value .e[expr {$j+4}]
- }
- close $lavgFD
- }
- proc testcase {} {
- avg_load
- after 1000 testcase
- }
- testcase