ruby - Ruby中的循环函数多次写入

标签 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()

最佳答案

如果您想附加到文件,请使用 a 而不是 w

无关:使用 Monit、God 或 Bluepill!

关于ruby - Ruby中的循环函数多次写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220425/

相关文章:

javascript - 如何循环根据 div 中每个字母的位置修改文本的替换函数?

java - 使用迭代器有什么好处?

azure - for 循环中的 Terraform for 循环

ruby-on-rails - ruby 迁移回滚但再次运行迁移时出错

ruby-on-rails - 使用 Rails 和 Flex 的首选方式是什么?

ruby 正则表达式提取两部分 : digits, 然后之后的任何内容

ruby - 使用动态类型语言进行重构

ruby - 与 ruby​​ 的简单远程 ODBC 数据库连接

Java 循环整个代码 3 次

c - 系统调用C程序中的循环