我的任务是创建一个服务器监控器,以标准时间间隔测试系统,如果超出一定水平,程序将向用户发送电子邮件。除了发送电子邮件外,它还会创建一个文件,每 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()
最佳答案
如果您想附加到文件,请使用 a
而不是 w
。
无关:使用 Monit、God 或 Bluepill!
关于ruby - Ruby中的循环函数多次写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220425/