JzLog_config.sh
1.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh
# 开机日志归档脚本
# 执行时机:必须在 USB Gadget 启动之前
LOG_SYS="/root/JZLOG"
LOG_SDCARD="/root/sdcard/JZLOG"
# 1. 创建目录
mkdir -p "$LOG_SYS" "$LOG_SDCARD"
# 2. 同步 thelast 文件
if [ -f "$LOG_SDCARD/thelast" ]; then
cp -f "$LOG_SYS/thelast" "$LOG_SDCARD/thelast"
else
rm -f "$LOG_SYS/thelast"
fi
# 3. 移动所有 .log 文件
# 使用 find 避免 "argument list too long"
find "$LOG_SYS" -maxdepth 1 -type f -name "*.log" -print0 | while IFS= read -r -d '' file; do
mv "$file" "$LOG_SDCARD/"
done
# 4. 数量控制:超过20份则删除最早的(按文件名中的序号)
cd "$LOG_SDCARD" || exit 1
files=( *.log )
count=${#files[@]}
if [ $count -gt 20 ]; then
# 提取序号并排序(假设文件名格式固定为 _数字_...)
sorted=$(printf '%s\n' "${files[@]}" | sed -n 's/^_\([0-9]*\)_.*/\1 \0/p' | sort -n | cut -d' ' -f2)
if [ -n "$sorted" ]; then
delete=$((count - 20))
echo "$sorted" | head -n "$delete" | xargs rm -f
else
# 如果无法解析序号,退而按修改时间删除最老的
ls -t *.log | tail -n +21 | xargs rm -f
fi
fi