切割服务器日志
一、前言
最近想把服务器中的日志切割一下,方便后续查询和清理,这里记录一下。
二、过程
我的日志放在 /www/wwwroot/guowang/jar 这个目录
需要将切割后的日志放到 /www/wwwroot/guowang/jar/logs 目录下
新建一个文件
log_cut.sh
写一个脚本如下
powershell
#!/bin/bash
LOG_FILE="/www/wwwroot/guowang/jar/system.log"
OUT_DIR="/www/wwwroot/guowang/jar/logs"
DATE=$(date +%Y-%m-%d)
mkdir -p $OUT_DIR
# 复制日志,截断原日志
cp $LOG_FILE ${OUT_DIR}/system${DATE}.log
# 清空原日志(copytruncate逻辑)
> $LOG_FILE
将文件上传到服务器的
/www/wwwroot/guowang/jar
目录

如果是在 window 中做的编辑,上传之后可以检查一下,命令如下
powershell
cat -v log_cut.sh

出现 ^M 就是 Windows 换行
这时可以使用如下命令做修正
powershell
sed -i 's/\r//g' /www/wwwroot/guowang/jar/log_cut.sh
再次查询
powershell
cat -v log_cut.sh

可以看到已经正常了
然后赋予执行权限
powershell
chmod +x /www/wwwroot/guowang/jar/log_cut.sh

验证执行
powershell
/bin/sh /www/wwwroot/guowang/jar/log_cut.sh

查看日志
powershell
ls /www/wwwroot/guowang/jar/logs/system2026-08-11.log

可以看到正常生成了
然后加入到定时器中
powershell
crontab -e
每天凌晨执行
powershell
0 0 * * * /www/wwwroot/guowang/jar/log_cut.sh >> /www/wwwroot/guowang/jar/log_cut_run.log 2>&1
保存退出