Linux系统下Nginx日志每天定时切割的脚本可以通过crontab来实现。具体步骤如下:
1. 创建脚本文件
首先,使用任意文本编辑器创建一个shell脚本,比如命名为nginx_log_rotate.sh
,然后将以下代码复制进去:
#!/bin/bash
log_dir=/var/log/nginx
log_name=access.log
yesterday=$(date -d "yesterday" +%Y-%m-%d)
gzip ${log_dir}/${log_name}.${yesterday}
kill -USR1 $(cat /var/run/nginx.pid)
这个脚本文件的作用是将昨天的Nginx访问日志文件进行压缩,并发送一个USR1信号给Nginx主进程,使其重新打开日志文件,从而开始记录新的日志。
2. 修改脚本文件属性
修改脚本文件的属性,将其变成可执行文件,使用以下命令:
chmod +x nginx_log_rotate.sh
3. 添加计划任务到crontab
将脚本文件添加到计划任务中,可以在每天凌晨定时执行,命令如下:
crontab -e
然后在文件的最后添加以下内容:
0 0 * * * /path/to/nginx_log_rotate.sh
这个命令表示在每天的0点0分,执行指定路径的nginx_log_rotate.sh
脚本文件。
示例
假设我的Nginx日志文件位于/var/log/nginx/access.log
,我使用的是默认的Nginx配置文件,Nginx主进程的PID文件为/var/run/nginx.pid
,脚本文件名为nginx_log_rotate.sh
,那么我可以将以下脚本代码拷贝到一个新文件中,保存为/opt/nginx_log_rotate.sh
:
#!/bin/bash
log_dir=/var/log/nginx
log_name=access.log
yesterday=$(date -d "yesterday" +%Y-%m-%d)
gzip ${log_dir}/${log_name}.${yesterday}
kill -USR1 $(cat /var/run/nginx.pid)
修改脚本文件的权限,使其具有执行权限:
chmod +x /opt/nginx_log_rotate.sh
然后使用以下命令来编辑crontab
:
crontab -e
在最后一行添加以下内容:
0 0 * * * /opt/nginx_log_rotate.sh
保存并退出编辑器。这样,每天凌晨0点,脚本文件/opt/nginx_log_rotate.sh
就会被执行,Nginx的访问日志文件也会被定时切割。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux系统下nginx日志每天定时切割的脚本写法 - Python技术站