首页 > Sysadmin > 正文

Linux 命令行截屏的 4 种方法

huyuanwen 2026-11-04 Sysadmin

无头服务器、远程终端、批量脚本里,命令行是最稳定的截屏入口。

scrot:轻量 X11 截屏

scrot 基于 imlib2,适合纯 X11 环境或无桌面时抓取整个屏幕、指定窗口或交互选区[1]。

sudo apt-get install scrot
scrot ~/Pictures/screenshot.png
scrot -s ~/Pictures/selection.png
scrot -d 3 ~/Pictures/delayed.png
  • -s:交互框选区域
  • -d SEC:延迟秒数,给窗口切换留时间
  • -u:截当前焦点窗口

gnome-screenshot:GNOME 桌面截屏

GNOME 自带工具,支持延时、窗口、区域和剪贴板[2]。

sudo apt-get install gnome-screenshot
gnome-screenshot -f ~/Pictures/screenshot.png
gnome-screenshot -w -f ~/Pictures/window.png
gnome-screenshot -a -d 2 -f ~/Pictures/area.png
  • -w:当前活跃窗口
  • -a:交互选择区域
  • -d SECONDS:延迟截取
  • -c:直接复制到剪贴板

import:ImageMagick 套件截屏

ImageMagick 的 import 命令面向 X11,可精确框选或按窗口抓取[3]。

sudo apt-get install imagemagick
import ~/Pictures/x11.png
import -window root ~/Pictures/full.png
  • 不指定窗口时,点击选择目标区域
  • -window root:抓取整个屏幕
  • -delay N:等待 N 秒再抓取

grim + slurp:Wayland 截屏

Wayland 下推荐 grim 抓取、slurp 选区域,二者配合完成截屏[4][5]。

sudo apt-get install grim slurp
grim ~/Pictures/wayland.png
grim -g "$(slurp)" ~/Pictures/selection.png
  • grim -o DP-1:指定输出
  • slurp 退出码非 0 时表示取消

脚本化时四条命令都支持非交互调用,适合 cron 或系统钩子。例如每 5 分钟自动截屏:

while true; do
  scrot "$(date +%Y%m%d_%H%M%S).png"
  sleep 300
done

脚本化时注意目录存在性和权限;scrot 与 import 只依赖 X11,gnome-screenshot 需要会话总线。

回滚与排错

  • 截屏失败先确认 DISPLAY(X11)或 WAYLAND_DISPLAY(Wayland)环境变量。
  • scrot 报 “No display”:确认 X11 服务正常,或改用 Wayland 工具链。
  • import 报 “no decode delegate”:ImageMagick 策略文件限制,需检查 /etc/ImageMagick-6/policy.xml。
  • gnome-screenshot 报 “Failed to load module”:sudo apt-get install --reinstall gnome-screenshot。

实测与局限性

  • 本机 WSL2 Ubuntu 24.04 因 NAT 不可用,无法实际启动并验证上述命令;全部命令基于文档核查,尚未实际执行。
  • X11 与 Wayland 工具不能混用;WSL 默认带 X11 转发,若使用 Wayland 需确认合成器支持。
  • 无桌面环境时,scrot 与 import 仍可工作,但部分窗口选择功能依赖窗口管理器。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。