Ruby中的循环函数多次写入

时间:2012-08-31 18:00:54

标签: ruby loops

我的任务是创建一个服务器监视器,以标准间隔测试系统,如果超过一定级别,程序将向用户发送一封电子邮件。除了发送电子邮件外,它还将创建一个文件,每隔60秒显示一次平均负载。我似乎无法让循环每次写入一个新行,它只是一遍又一遍地覆盖第一行。我错过了什么?

require 'fileutils'

def LoadAvg()
  return `cat /proc/loadavg | awk '{print $1" "$2" "$3}'`
end

def Timer()
  servername = `uname -n`.strip
  t = Time.now
  taber = t.strftime("%m-%d-%Y-%T")
  filename = "#{servername}_Systemcheck_#{taber}.txt"
  FileUtils.touch(filename)

while(true)
  File.open(filename, 'w') { |x|
    x.puts "#{t.strftime("%I:%M:%S %p")} - #{LoadAvg()}"
    puts LoadAvg()
    sleep(60)
  }
 end
end

Timer()

1 个答案:

答案 0 :(得分:3)

如果您要使用a而不是w来附加文件。

无关:使用Monit,God或Bluepill!