通过 shell 脚本捕获终端应用程序的屏幕截图?

Sat*_*ish 6 linux terminal images

问题

运行iftop5 秒钟,捕获屏幕截图并将其保存到文件中。

iftop 是一个用于可视化网络流量的漂亮程序,但它没有批处理模式,我可以运行它几秒钟并将输出捕获到文件中。

所以我的想法是

  • 使用诸如screen创建虚拟显示并iftop在其中运行之类的命令。
  • 寻找任何工具 ( screendump) 来截取screen.

关于我该怎么做的任何想法?

gol*_*cks 4

我认为除非输出实际上在窗口中呈现,否则您将无法执行此操作screen,这可能会破坏使用屏幕的意义。但是,窗口不必位于前台。

ImageMagick套件包含一个名为import您可以用于此目的的实用程序。如果import --help出现“找不到命令”,请安装 imagemagick 软件包,它将在任何 Linux 发行版中可用。

import需要窗口的名称。iftop是一个终端界面,因此为了确保使用正确的名称,您必须设置它运行的 GUI 终端的标题。具体操作方式取决于您使用的 GUI 终端。例如,我更喜欢 XFCE 终端,它是:

Terminal -T Iftop -e iftop
Run Code Online (Sandbox Code Playgroud)

打开一个iftop标题为“Iftop”的新终端。可以截取该内容的屏幕截图:

import -window Iftop ss.jpg
Run Code Online (Sandbox Code Playgroud)

如果您打算每五秒执行一次此操作,您可能需要打开运行脚本的窗口,以便可以重用相同的终端:

count=0;
while ((1)); do
    iftop &
    pid=$!
    sleep 1  # make sure iftop is up
    count=$(($count+1))
    import -window Iftop iftop_sshot$count.jpg
    kill $pid
    sleep 5
done
Run Code Online (Sandbox Code Playgroud)

如果脚本是“iftopSShot.sh”,那么您将启动它Terminal -T Iftop -e iftopSShot.sh- 除非您可能没有使用Terminal. 大多数 Linux GUI 终端都与特定的 DE 相关联,尽管它们是可以独立使用的独立应用程序。我相信 KDE 上默认终端的名称是Konsole,它遵循-T-e约定;对于 GNOME 来说,它可能是gnome-terminal(这可能已经改变)并且它似乎使用-tand not -T

请注意import默认情况下会响铃,这会让人恼火,但有一个-silent选项。