当 X 服务器未运行时如何保存活动窗口的图像

当 X 服务器未运行时如何保存活动窗口的图像

我在远程位置有一台计算机,我更喜欢将其用作服务器。我总是保持盖子关闭,并且它设置为在屏幕关闭时始终保持运行。因为我用这个服务器来运行软件。我想截取屏幕截图以了解正在运行的应用程序的最新情况。我想知道当 X 服务器未运行时是否有办法保存活动窗口的图像。

更新:ps -e | grep X为 Xorg 输出 PID:581。所以我的 Xserver 正在运行。

更新:我没有使用 X11 转发。

更新:如果可能的话,我需要在远程计算机上截取活动窗口(firefox)的屏幕截图。将该屏幕截图保存在我的远程计算机上,然后使用scp host1:/path/to/screenshot/ localhost:/destinationfile

答案1

你想使用像这样的实用程序scrot

ssh进入远程计算机后,您可以运行以下命令:

scrot '%Y-%m-%d_$wx$h.png' -e 'mv $f /home/user/shots/' 

此命令将使用文件名截取当前屏幕的屏幕截图YEAR-MONTH-DAY_SCREENWIDTH_SCREENHEIGHT.png,并将文件移动到您的/shots目录(如果有的话)。如果您需要在没有输入的情况下定期运行它,您可以创建一个定时任务

使用您要运行的命令创建 bash 脚本。如果您想每小时运行该命令,它将如下所示:

#!/bin/bash
scrot '%Y-%m-%d-%H.png' -e 'mv $f /home/user/screenshots/'

并将此文件保存在适当的位置,例如/home/user/scripts并使其可执行( chmod +x screenshot.sh)

如果您希望每小时运行一次,您的用户的 crontab 应包含此行(运行crontab -e以编辑用户的 crontab):

1 * * * * /home/user/scripts/screenshot.sh >/dev/null 2>&1

这将screenshot.sh在每小时的第一分钟执行。

或者,您可以将脚本保存到其中/etc/cron.hourly,使其每小时运行一次。

这里是一篇关于使用 crontab 的相关文章,您应该查看。

进行测试以确保其scrot可以满足您的需求,并且您的 cronjob 可以正常工作。然后,您可以进一步自动化该过程,自动通过电子邮件将图片发送给您或通过 .push 将图片推送到您的计算机scp

祝你好运!

答案2

如果你有东西在 X 中运行,那么 X 仍在运行。杀死 X 会杀死大多数使用它的程序。

因此,您可以做一些事情(记住您需要在远程术语上设置 DISPLAY 变量,例如DISPLAY=:0):

  1. Imagemagick 有一个名为“导入”的实用程序,运行后import -window root screenshot.png会给您一个屏幕截图。
  2. scrot可以截图,但是不知道命令行
  3. x11vnc 可以让您通过 vnc 访问正在运行的 X 显示

相关内容