ruby读取仅从文件更新最新版本的行

ruby读取仅从文件更新最新版本的行,ruby,Ruby,有一个脚本,它将输出更新为文件,并计划设置对该进程的监视,并将最新的输出信息发送到中央服务器 例如,监视脚本将每分钟查找一次输出文件,它必须只读取输出文件上更新的任何最新数据,并将其发送到中央服务器。意味着它应该读取它已经读取的旧数据。使用ruby版本>=1.8.7 这是我的设想 脚本test.sh正在运行,它将输出写入名为/tmp/script\u output.txt的文件 我有另一个监视脚本jobmonitor.rb,它由test.sh触发,用于监视作业状态并将信息发送到中央服务器。现在,

有一个脚本,它将输出更新为文件,并计划设置对该进程的监视,并将最新的输出信息发送到中央服务器

例如,监视脚本将每分钟查找一次输出文件,它必须只读取输出文件上更新的任何最新数据,并将其发送到中央服务器。意味着它应该读取它已经读取的旧数据。使用
ruby版本>=1.8.7

这是我的设想

脚本test.sh正在运行,它将输出写入名为
/tmp/script\u output.txt的文件

我有另一个监视脚本
jobmonitor.rb
,它由test.sh触发,用于监视作业状态并将信息发送到中央服务器。现在,它读取
script_output.txt
文件的全部内容并发送详细信息,并且必须每2分钟发送一次信息以进行实时监控

在某些情况下,输出文件
script\u output.txt
的行数将超过500行,因此每2分钟监控脚本将发送整个内容,其中包括2分钟以前的内容

所以我正在寻找一种方法,每2分钟只读取更新内容的输出文件内容

例如:

目前script_output.txt文件有内容

line1
line2
.
.
.
line10
line1
line2
.
.
.
line10
line11
.
.
.
line 20
监控脚本发送了这些信息

现在,2分钟后,输出文件包含以下内容:

line1
line2
.
.
.
line10
line1
line2
.
.
.
line10
line11
.
.
.
line 20
现在监控脚本捕获所有20行并发送信息,而我只需要从
line11-20
发送输出内容

更新:

我试着用下面的

open(filepath, 'r') do |f|
  while true
    puts "#{f.readline()}"
    sleep 60
  end
end
它只读取一行,但我想读取n行,这些行在120秒内更新,或者从上次读取的下一行到现在


注意:我已经在上被提出了这个问题,但我最初没有更新详细信息,因此问题结束。对不起

你看过Ruby中的seek选项了吗?是的,我读过这方面的文章,并且能够让它发挥作用。谢谢你的建议!