【问题标题】:Use of watch to update image displayed in linux every N seconds fails使用手表每 N 秒更新一次在 linux 中显示的图像失败
【发布时间】:2018-11-26 07:46:01
【问题描述】:

我有一些代码可以在服务器上自动生成机器学习图,并在适当的时间将图发送到 IoT 客户端进行显示。

数据管道有效。但是,我尝试在推送新情节时近乎实时地更新图像是行不通的。

目前我的做法是:

user@client:~/data_viz $ watch -n3 feh -F plot0.png --zoom 200

feh 是一些任意的轻量级 Linux 图像查看器。

问题在于,即使文件 (plot0.png) 被成功覆盖,查看器也不会更新,直到您将其杀死并重新启动它。

更新:我使用下面的 Bash 方法实现了世界上最糟糕的版本。现在唯一的问题是它每秒都会刷新桌面,如果我不修复它无疑会导致癫痫发作......

$ watch -n2 sudo bash watch.sh

watch.sh 在哪里

#!/bin/bash
i="0"    
while [ $i -lt 4 ]
do
pkill feh
sleep 1
feh -F plot0.png --zoom 200&
sleep 1
pkill feh
done

即使使用 Esc 和 ctrl+c,似乎也无法真正打破无限循环。我希望循环是无限的,但我也希望能够在必要时中断它。

【问题讨论】:

  • 嗯,你的想法是对的。一旦您在feh(这是一个出色的工具)中打开图像,它本身(就像几乎所有其他图像查看器/编辑器一样)不会监视源文件中的更改。但是,feh 确实提供了-R, --reload int 选项,可以在给定的秒数后自动重新加载图像。 (见:man 1 feh
  • 需要添加秒数-R 5(5秒刷新)
  • 好的,当然,给我一分钟,我会写下来:)

标签: linux watch


【解决方案1】:

虽然feh 与大多数图像查看器/编辑器一样,不会查看图像文件的更改并在发生更改时自动重新加载,但它确实提供了-R, --reload <int> 选项,这将导致feh 在之后重新加载图像指定为<int> transpire 的秒数。例如:

feh --reload 5 image.png

将导致feh5 秒重新加载image.pngman 1 feh 解释:

-R, --reload <int>

Reload filelist and current image after int seconds. Useful for viewing 
HTTP webcams or frequently changing directories. (Note that the filelist 
reloading is still experimental.)

If an image is removed, feh will either show the next one or quit. 
However, if an image still exists, but can no longer be loaded, feh 
will continue to try loading it.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2020-08-28
    相关资源
    最近更新 更多