我使用安装在我的 Ubuntu 17 Azure 服务器上的 Apache2 部署了一个网页。
我可以从终端运行一个命令,通过端口 80 捕获我的网站的屏幕截图吗?
我尝试了这个命令:gnome-screenshot
但是因为它是一个服务器,所以它显示:
Unable to init server: Could not connect: Connection refused
(gnome-screenshot:55421): Gtk-WARNING **: cannot open display:
我如何向该命令添加端口号,或者如何告诉该命令从我的网页获取屏幕截图?
答案1
正如评论者指出的那样,在无头服务器上,您尝试做的事情并没有得到很好的定义。Apache 服务器不会发送网页的任何“图像”(仅发送 HTML 标记);您通常看到的图像是由 Web 浏览器生成的,并且浏览器可以根据屏幕大小(以及浏览器版本、设置等其他因素)以不同的方式呈现同一页面。如果您没有屏幕,则没有明确的方法来捕获图像。
话虽如此,我听说过的一个可能的解决方案(可能是最简单的解决方案)是幻影JS,无头网络浏览器:http://phantomjs.org/
不过我个人还没有使用过这种方法;你的情况可能会有所不同。
在服务器上进行图形操作的更通用的解决方案是使用 Xvfb 为 GUI 应用程序创建一个显示器。这将允许您gnome-screenshot
像尝试的那样使用。为此,首先安装并运行 Xvfb:
sudo apt-get install xvfb
export DISPLAY=:0
Xvfb $DISPLAY -screen 0 1920x1080x24 -shmem -cc 4 &
然后安装并运行 Gnome:
sudo apt-get install gnome-panel gnome-screenshot
gnome-settings &
gnome-panel &
metacity &
你需要一个浏览器。任何浏览器都可以,但我将使用 Firefox 作为示例:
sudo apt-get install firefox
然后运行指向您想要的网页的浏览器(在您的情况下,是端口 80 上的 Apache 服务器localhost
):
firefox http://localhost &
最后,按照您尝试的方式截取屏幕截图:
gnome-screenshot
(可选)清理进程:
killall firefox Xvfb gnome-settings gnome-panel metacity
如您所见,这种方法更加复杂(并且占用大量资源:安装需要超过 500 MB),但它的优点是您可以像在桌面上一样截取任何 GUI 应用程序的屏幕截图,而不仅限于截取网页的屏幕截图。
答案2
请查看此链接。 http://www.upubuntu.com/2012/07/how-to-take-screenshot-from-terminal-on.html
或者在你的终端上尝试这个 gnome-screenshot --help