shell脚本,保留多个web程序三天的日志,其他均删除
时间: 2023-08-14 08:05:17 浏览: 84
linux 下web服务器每天生成日志的shell脚本
可以使用以下脚本实现:
```bash
#!/bin/bash
# 定义日志文件目录
LOG_DIR="/var/log"
# 定义需要保留日志的web程序名称
WEB_PROGRAMS=("program1" "program2" "program3")
# 获取当前时间三天前的时间戳
THREE_DAYS_AGO=$(date -d "3 days ago" "+%s")
# 遍历日志目录下的所有文件
for file in "$LOG_DIR"/*
do
# 判断文件是否为普通文件
if [ -f "$file" ]
then
# 获取文件最后修改时间
LAST_MODIFIED=$(stat -c %Y "$file")
# 获取文件名
FILE_NAME=$(basename "$file")
# 判断文件名是否包含需要保留日志的web程序名称,并且最后修改时间是否在三天前
if [[ "${WEB_PROGRAMS[*]}" =~ "${FILE_NAME%%_*}" && "$LAST_MODIFIED" -lt "$THREE_DAYS_AGO" ]]
then
# 删除文件
rm "$file"
fi
fi
done
```
使用方法:
1. 把脚本保存为`clean_logs.sh`文件;
2. 修改`LOG_DIR`变量为你的日志文件目录;
3. 修改`WEB_PROGRAMS`变量为你需要保留日志的web程序名称;
4. 给脚本添加执行权限:`chmod +x clean_logs.sh`;
5. 使用定时任务(如cron)每天执行一次脚本:`0 0 * * * /path/to/clean_logs.sh`。
阅读全文