26人参与 • 2026-04-20 • uniapp
windows 下 nginx 日志不会自动轮转,长期运行会导致 access.log 和 error.log 文件越来越大,影响排查和磁盘空间。nginx 本身不提供 windows 下的日志切割功能,需借助批处理脚本 + windows 任务计划程序实现日志轮转与服务管理。
该脚本将当前日志重命名(按日期),并通知 nginx 重新打开日志文件(通过发送 nginx -s reopen)。
示例脚本内容(保存为 rotate-logs.bat):
@echo off
setlocal enabledelayedexpansion
set "nginx_dir=c:\nginx"
set "log_dir=%nginx_dir%\logs"
set "datestr=%date:~0,4%%date:~5,2%%date:~8,2%"
if not exist "%log_dir%" exit /b
rem 备份 access.log
if exist "%log_dir%\access.log" (
move "%log_dir%\access.log" "%log_dir%\access_%datestr%.log" >nul
)
rem 备份 error.log
if exist "%log_dir%\error.log" (
move "%log_dir%\error.log" "%log_dir%\error_%datestr%.log" >nul
)
rem 通知 nginx 重新打开日志(要求 nginx 正在运行)
cd /d "%nginx_dir%"
nginx -s reopen 2>nul
echo log rotated: %datestr%适用于开机未自动启动、或需每日固定时间拉起服务的场景。脚本先尝试停止残留进程,再启动主程序。
示例脚本(start-nginx.bat):
@echo off
set "nginx_dir=c:\nginx"
rem 检查并结束旧进程
tasklist /fi "imagename eq nginx.exe" | findstr /i "nginx.exe" >nul
if %errorlevel% equ 0 (
echo stopping existing nginx...
%nginx_dir%\nginx.exe -s stop >nul 2>&1
timeout /t 1 >nul
)
rem 启动 nginx
echo starting nginx...
cd /d "%nginx_dir%"
start nginx.exe
timeout /t 2 >nul
echo nginx started.让上述脚本每天凌晨执行日志轮转,并在开机/指定时间启动服务。
提升稳定性与可维护性的小技巧:
到此这篇关于nginx日志轮转与定时启动脚本的实现的文章就介绍到这了,更多相关nginx日志轮转与定时启动脚本内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论