nginx 日志分割的脚本 
时间: 2023-05-24 15:03:15 浏览: 28
A:
下面是一个简单的 shell 脚本,用于定期将 nginx 访问日志按天分割,并将原始日志文件清空:
```
#!/bin/bash
log_dir=/var/log/nginx
date=$(date -d yesterday +"%Y-%m-%d")
access_log=$log_dir/access.log
split_log=$log_dir/access-$date.log
# 分割日志
mv $access_log $split_log
kill -USR1 $(cat /run/nginx.pid)
# 清空原始日志文件
cat /dev/null > $access_log
```
将此脚本保存为 `nginx-log-split.sh`,并将其添加到 crontab 中,以每天凌晨零点执行一次:
```
0 0 * * * /bin/bash /path/to/nginx-log-split.sh
```
脚本执行的过程如下:
1. 获取昨天的日期,并将格式化后的日期作为新日志文件名。
2. 将原始的 nginx 访问日志文件重命名为新日志文件名。
3. 向 nginx 进程发送 USR1 信号,用以通知 nginx 重新打开日志文件,从而产生新的访问日志文件。
4. 清空原始的 nginx 访问日志文件内容。
注意:本脚本仅适用于按天分割 nginx 访问日志,如需按小时或其他方式分割日志,需要根据实际情况进行修改。
相关问题
编写一个shel脚本,实现nginx日志分割
我可以为您提供一个示例脚本,您可以使用它来实现 nginx 日志分割:#!/bin/bash# 获取当前日期
DATE=`date +%Y-%m-%d`# 设置 Nginx 日志文件的路径
log_file="/var/log/nginx/access.log"# 将 Nginx 日志分割为今天的日志文件
mv $log_file $log_file-$DATE# 重新启动 Nginx 服务
/etc/init.d/nginx restart
编写一个shell脚本,实现nginx日志分割
我可以给你一些参考,可以让你编写一个shell脚本来实现nginx日志分割。首先,需要使用Linux系统中的cron服务来定时运行shell脚本。其次,在shell脚本中,需要使用sed命令实现日志分割,sed命令可以指定行号来分割日志文件。最后,可以使用gzip命令来压缩分割后的日志文件,以减少硬盘空间占用。
相关推荐


