用shell写一段日清理日志的脚本
时间: 2023-03-07 18:34:25 浏览: 79
#!/bin/bash
# 清理日志
# 删除昨天以前的日志
find /var/log -mtime +1 -name "*.log" -exec rm -f {} \;
# 压缩7天前的日志
find /var/log -mtime +7 -name "*.log" -exec gzip {} \;
相关问题
使用Shell脚本写一个日志切割脚本
下面是一个使用Shell脚本实现日志切割的例子:
```bash
#!/bin/bash
LOG_FILE=/var/log/messages
BACKUP_DIR=/var/log/backup
while true
do
# 获取当前时间
current_time=$(date "+%Y-%m-%d-%H:%M:%S")
# 构造备份文件名
backup_file_name=messages_${current_time}.log
# 构造备份文件路径
backup_file_path=${BACKUP_DIR}/${backup_file_name}
# 判断备份文件夹是否存在,不存在则创建
if [ ! -d "${BACKUP_DIR}" ]; then
mkdir -p ${BACKUP_DIR}
fi
# 复制日志文件到备份文件中
cp ${LOG_FILE} ${backup_file_path}
# 清空日志文件
echo "" > ${LOG_FILE}
# 等待 1 小时再进行下一次备份
sleep 3600
done
```
这个脚本会将 `/var/log/messages` 文件每隔 1 小时备份一次,备份文件会按照当前时间命名,并存放在 `/var/log/backup` 目录下。同时,原来的日志文件也会被清空,以便于下一次备份。可以根据实际需求进行修改。
用shell写一个日志轮巡脚本
以下是一个简单的日志轮巡脚本示例,它会检查指定目录中的日志文件,并对超过一定大小的文件进行备份和截断。
```bash
#!/bin/bash
# 日志目录
LOG_DIR="/var/log"
# 日志文件最大大小,单位为MB
MAX_SIZE=10
# 备份目录
BACKUP_DIR="/var/log/backup"
# 获取当前时间
DATE=$(date "+%Y%m%d%H%M%S")
# 遍历日志目录中的所有文件
for file in $LOG_DIR/*
do
# 判断是否为文件
if [[ -f $file ]]
then
# 获取文件大小
size=$(du -m "$file" | cut -f1)
# 如果文件大小超过最大限制,则备份并截断文件
if [[ $size -gt $MAX_SIZE ]]
then
# 备份文件
cp "$file" "$BACKUP_DIR/${file##*/}.$DATE"
# 截断文件
> "$file"
fi
fi
done
```
该脚本会在每次运行时检查指定目录中的所有日志文件,对超过一定大小的文件进行备份和截断。备份文件会以当前时间戳作为文件名,并保存在指定的备份目录中。截断后的文件将变为空文件,以便继续记录新的日志信息。