shell日志切割
时间: 2023-06-28 13:04:45 浏览: 69
为了防止日志文件过大,需要定期进行日志切割。Shell脚本可以实现日志的定时切割,以下是一个简单的示例:
```
#!/bin/bash
LOG_DIR="/var/log"
LOG_FILE="app.log"
BACKUP_DIR="/var/log/backup"
# 判断备份目录是否存在,如果不存在则创建
if [ ! -d $BACKUP_DIR ]; then
mkdir -p $BACKUP_DIR
fi
# 重命名日志文件,备份到备份目录中
mv $LOG_DIR/$LOG_FILE $BACKUP_DIR/$LOG_FILE.$(date +%Y%m%d-%H%M%S)
# 创建新的日志文件
touch $LOG_DIR/$LOG_FILE
# 执行完毕,退出脚本
exit 0
```
在这个脚本中,`LOG_DIR` 变量指定了日志文件所在的目录,`LOG_FILE` 变量指定了日志文件的名称,`BACKUP_DIR` 变量指定了备份目录的路径。
脚本首先判断备份目录是否存在,如果不存在则创建。然后,它将当前的日志文件重命名为一个时间戳后缀的文件,并将它备份到备份目录中。接着,它创建一个新的空日志文件,以便应用程序可以继续写入日志。
最后,脚本退出。
可以使用 cron 定时任务来执行这个脚本,例如:
```
0 0 * * * /path/to/logrotate.sh
```
这个 cron 表达式将在每天凌晨执行日志切割操作。