如何在树莓派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
相关产品推荐
相关产品推荐

