有一个脚本可以将输出更新到文件,并计划设置对该进程的监视并将最新的输出信息发送到中央服务器。
例如,监视脚本将查找每分钟的输出文件,并且只读取输出文件上更新的最新数据并将其发送到中央服务器。意味着它应该读取已经读过的旧数据。有没有办法通过ruby version >= 1.8.7
这是我的方案,
脚本test.sh正在运行,它将输出写入名为/tmp/script_output.txt
我有另一个监视脚本jobmonitor.rb
,它由test.sh触发,用于监视作业状态并将信息发送到中央服务器。现在它读取script_output.txt
文件的全部内容并发送详细信息,并且必须每2分钟发送一次信息以进行实时监控。
有些情况下,输出文件script_output.txt
将有超过500行,因此每2分钟监控脚本发送包含2分钟旧内容的整个内容。
因此,我正在寻找仅使用更新内容每2分钟读取输出文件内容的方法。
例如:
目前script_output.txt文件包含内容
line1
line2
.
.
.
line10
并且监视脚本发送了这些信息。
2分钟后,输出文件的内容低于
line1
line2
.
.
.
line10
line11
.
.
.
line 20
现在监控脚本捕获所有20行并发送信息,而我只需要从line11-20
发送输出内容。
更新
我在下面试过,
open(filepath, 'r') do |f|
while true
puts "#{f.readline()}"
sleep 60
end
end
它仅读取一行,但我想读取在120秒或从上一次读取的下一行到现在更新的n行数。
注意:我在https://stackoverflow.com/questions/43446881/ruby-read-lines-from-file-only-latest-updates已经提出了这个问题,但我最初错过了更新详细信息,因此问题已经结束。对不起。