写一个nginx日志切割shell脚本,保留30天的文件,并加入定时任务
时间: 2024-02-05 07:14:14 浏览: 177
好的,您可以参考以下Shell脚本,用于实现nginx日志切割并保留30天的文件,并加入定时任务:
```bash
#!/bin/bash
# nginx日志目录
log_dir="/var/log/nginx/"
# 日志文件名称
log_file="access.log"
# 备份目录
backup_dir="${log_dir}backup/"
# 当前日期和时间
datestr=`date '+%Y-%m-%d-%H-%M-%S'`
# nginx主进程pid文件
pid_file="/var/run/nginx.pid"
# 判断nginx主进程是否在运行
if [ ! -e ${pid_file} ]; then
echo "nginx主进程未运行!"
exit 1
fi
# 切割日志文件
cd ${log_dir}
mv ${log_file} "${backup_dir}${log_file}.${datestr}"
kill -USR1 `cat ${pid_file}`
# 删除30天之前的备份文件
find ${backup_dir} -name "${log_file}.*" -mtime +30 -exec rm {} \;
```
然后,您可以将此脚本添加到定时任务中,以每天执行一次。例如,您可以在终端输入以下命令:
```bash
crontab -e
```
然后在打开的文件中添加以下行:
```bash
0 0 * * * /path/to/script/nginx_log_rotate.sh
```
这将在每天午夜执行 `nginx_log_rotate.sh` 脚本。
阅读全文