You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在树莓派Raspbian系统编写Shell脚本提取日志近24小时内容?

树莓派Raspbian提取近24小时日志并定时执行方案

1. 编写Shell处理脚本

首先创建脚本文件,比如命名为extract_daily_log.sh,内容如下,所有路径请替换为你设备上的实际绝对路径:

#!/bin/bash
# 定义原始日志文件路径
SOURCE_LOG="/var/log/your_original_log.log"
# 定义输出文件路径
OUTPUT_FILE="/home/pi/test.txt"
# 生成日志格式对应的日期字符串:今天、昨天(覆盖最近24小时的两个自然日)
TODAY=$(date +"%d/%m/%Y")
YESTERDAY=$(date -d "yesterday" +"%d/%m/%Y")
# 筛选近24小时日志写入输出文件,匹配前缀[避免命中日志内容里的日期
grep -E "\[$YESTERDAY,|\[$TODAY," "$SOURCE_LOG" > "$OUTPUT_FILE"

如果你需要严格匹配精确24小时内而非自然日区间的日志,可以把脚本内容替换为以下版本:

#!/bin/bash
SOURCE_LOG="/var/log/your_original_log.log"
OUTPUT_FILE="/home/pi/test.txt"
# 生成24小时前的时间戳
TS_24H_AGO=$(date -d "24 hours ago" +%s)
# 逐行解析日志时间,判断是否在24小时内
awk -v ts_threshold="$TS_24H_AGO" -F'[][]' '{
    # 提取日志里的时间字符串,格式为dd/mm/YYYY, h:m:s am/pm
    time_str = $2
    # 转换为时间戳
    cmd = "date -d \""time_str"\" +%s"
    cmd | getline log_ts
    close(cmd)
    if (log_ts >= ts_threshold) {
        print $0
    }
}' "$SOURCE_LOG" > "$OUTPUT_FILE"

2. 赋予脚本执行权限

执行命令:
chmod +x /home/pi/extract_daily_log.sh
替换路径为你脚本的实际存放路径。

3. 配置crontab定时任务

  • 执行crontab -e打开定时任务编辑界面,首次打开会提示选择编辑器,选nano即可。
  • 在文件末尾添加一行,以下示例为每天0点执行脚本:
0 0 * * * /home/pi/extract_daily_log.sh
  • 保存退出后,crontab会自动加载新的定时规则。

注意事项

  • 所有文件路径必须用绝对路径,避免crontab执行时因为工作目录异常找不到文件。
  • 配置完成后可以先手动执行bash /home/pi/extract_daily_log.sh,检查输出的test.txt内容是否符合预期。

内容的提问来源于stack exchange,提问作者user14471550

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:39:02