如何知道图像文件是否打开

时间:2016-02-13 12:29:31

标签: ruby unix lsof

您好我想制作一个小的ruby脚本,以便在我的图像打开时提醒我。

我尝试:

filename = "photo.jpg"

loop do
    sleep(1)
    if system %Q[lsof #{filename}]
        puts "File open"
    end
end

但是它没有用......有什么想法吗?

1 个答案:

答案 0 :(得分:2)

试试这个例子:

  1. 创建文件touch hello_world.log
  2. 使用-f对文件进行尾调(允许您在文件增长时实时跟踪文件)tail -f hello_world.log
  3. 打开一个单独的终端并打开irb
  4. 输入以下代码:

    filename = "hello_world.log"
    
    loop do
        sleep(1)
        if system %Q[lsof #{filename}]
            puts "File open"
        end
    end
    

    您可能希望查看inotify(Ruby gem rb-inotify),因为这可能是您想要的。假设有人使用文本编辑器打开文件然后保存它,保存事件可能不会显示在lsof下,因为它每秒轮询一次(并且随后只显示出现在的信息)非常重要,所以你可能永远都不会抓住它。)