目录
1. 简介
每日自动截图可以帮助监控活动或保存重要的屏幕显示。本文将介绍如何在 Xubuntu 中设置自动截图,使用在每次登录时自动运行的 bash 脚本。
2. 系统要求
在开始之前,请确保您具备:
- Xubuntu 或基于 XFCE 桌面环境的系统
- 已安装
xfce4-screenshooter
软件包 - 文本编辑器,如
nano
或vim
- 具有用户权限的终端访问权限
3. Bash 脚本:说明和工作原理
以下是每 60 秒自动截图的 bash 脚本:
#!/bin/bash
# 存储截图的根目录
ROOT_DIR="/home/adb/Pictures/daily-screenshots"
# 防止重复运行的锁定文件
LOCK_FILE="/tmp/auto_screenshot.lock"
# 确保只运行一个实例
exec 200>"$LOCK_FILE"
flock -n 200 || exit 1
# 确保根存储目录存在
mkdir -p "$ROOT_DIR"
# 图形显示的环境变量
export DISPLAY=:0
export XDG_RUNTIME_DIR=/run/user/$(id -u)
# 日志文件
LOG_FILE="/home/adb/Pictures/screenshot_log.txt"
# 删除超过 7 天的文件夹(仅在登录时执行一次)
find "$ROOT_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
# 处理脚本停止的函数
cleanup() {
echo "Stopping auto_screenshot.sh" >> "$LOG_FILE"
rm -f "$LOCK_FILE" # 删除锁定文件
exit 0
}
# 捕获终止信号(SIGTERM, SIGINT)
trap cleanup SIGTERM SIGINT
# 每 60 秒截图的无限循环
while true; do
# 文件夹名称的日期(格式:DD MMM YYYY)
DATE_FOLDER=$(date "+%d %b %Y")
OUTPUT_DIR="$ROOT_DIR/$DATE_FOLDER"
# 确保日期存储目录存在
mkdir -p "$OUTPUT_DIR"
# 截图文件名格式(示例:19 Jan 2025, 22:30.png)
TIMESTAMP=$(date "+%d %b %Y, %H:%M")
OUTPUT_FILE="$OUTPUT_DIR/$TIMESTAMP.png"
# 进行截图
xfce4-screenshooter -f -s "$OUTPUT_FILE" >> "$LOG_FILE" 2>&1
# 等待 60 秒后进行下一次截图
sleep 60
done
工作原理
- 截图存储:截图保存在
/home/adb/Pictures/daily-screenshots
目录下,按日期分子文件夹。 - 自动清理:超过 7 天的文件夹将被删除以节省存储空间。
- 重复预防:使用锁定文件防止脚本重复运行。
- 无限循环:每 60 秒连续不断地进行截图。
4. 实施步骤
1. 创建 Bash 脚本
打开终端并创建新文件:
nano ~/Pictures/auto_screenshot.sh
将上述脚本复制并粘贴到文件中。
按 CTRL + O
保存文件,然后按 CTRL + X
退出。
2. 设置执行权限
为使脚本可执行,更改其权限:
chmod +x ~/Pictures/auto_screenshot.sh
3. 添加脚本到自动启动会话
使用 Xubuntu 的自动启动会话功能,使脚本在每次登录时自动运行:
-
打开 Xubuntu 的设置管理器
-
选择会话和启动 > 应用程序自启动标签
-
点击添加按钮添加新项目
-
填写表单如下:
- 名称:自动截图
- 命令:
/home/adb/Pictures/auto_screenshot.sh
- 描述:每 60 秒自动截图的脚本
-
点击确定保存更改
5. 提示和故障排除
- 检查日志:如果脚本不工作,查看
/home/adb/Pictures/screenshot_log.txt
中的日志以了解错误。 - 通知:如果想知道截图保存状态,可以添加
notify-send
命令启用通知。 - 访问权限:确保脚本具有在目标目录创建文件的权限。
6. 总结
通过 bash 脚本和 Xubuntu 的自动启动会话配置,您可以自动进行每日截图,无需手动干预。这个系统对于文档记录或计算机活动监控非常有用。
希望本指南对您有帮助!🎉


