写一个shell脚本,保留三天的日志,其他均删除
时间: 2023-07-01 21:05:31 浏览: 260
以下是一个简单的 shell 脚本,可以保留三天内的日志文件,其他日志文件均删除。
```bash
#!/bin/bash
# 设置日志文件目录
LOG_DIR="/var/log/"
# 计算三天前的时间戳
TIME=$(date -d "3 days ago" +%s)
# 遍历日志文件
for file in $LOG_DIR*; do
# 判断文件是否是普通文件且最后修改时间大于三天前的时间戳
if [ -f "$file" ] && [ $(stat -c %Y $file) -lt $TIME ]; then
# 删除文件
rm $file
fi
done
```
将以上代码保存为一个 `.sh` 文件,赋予执行权限后运行即可。注意,此脚本会删除所有日志文件,包括系统日志文件,因此请在谨慎操作。建议将该脚本加入计划任务中,定期执行。
相关问题
写一个shell脚本,保留web程序三天的日志,其他均删除
以下是一个简单的Shell脚本,用于保留Web程序三天的日志并删除其他日志:
```bash
#!/bin/bash
# 设置日志目录
LOG_DIR="/var/log/web"
# 计算3天前的日期
THREE_DAYS_AGO=$(date --date="3 days ago" +"%Y-%m-%d")
# 删除3天前的日志
find $LOG_DIR -type f -name "*.log*" -mtime +3 -exec rm {} \;
# 保留3天内的日志
find $LOG_DIR -type f -name "*.log*" ! -newermt "$THREE_DAYS_AGO" -exec echo "Keep log: {}" \;
```
首先,脚本定义了日志目录的变量LOG_DIR。然后,它使用date命令计算3天前的日期,并将其存储在变量THREE_DAYS_AGO中。
接下来,脚本使用find命令查找所有.log文件,只保留3天内的文件,同时删除3天前的文件。
最后,脚本使用find命令列出保留的日志文件。
请注意,该脚本仅适用于.log文件,如果您的日志文件扩展名不同,请相应更改命令中的文件类型。
shell脚本,保留多个web程序三天的日志,其他均删除
可以使用以下脚本实现:
```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`。
阅读全文