ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Nginx日志轮转与定时启动脚本的实现

Nginx日志轮转与定时启动脚本的实现 Windows 下 Nginx 日志不会自动轮转长期运行会导致 access.log 和 error.log 文件越来越大影响排查和磁盘空间。Nginx 本身不提供 Windows 下的日志切割功能需借助批处理脚本 Windows 任务计划程序实现日志轮转与服务管理。日志轮转脚本rotate-logs.bat该脚本将当前日志重命名按日期并通知 Nginx 重新打开日志文件通过发送 nginx -s reopen。确保 Nginx 已以 Windows 服务方式安装如用 nginx-service.exe 或 NSSM否则 -s reopen 可能失败脚本需在 Nginx 安装目录下运行或修改路径为绝对路径例如C:\nginx使用 %date:~0,4%%date:~5,2%%date:~8,2% 获取格式化日期如 20240615适配大多数系统区域设置示例脚本内容保存为 rotate-logs.bat123456789101112131415161718echooffsetlocal enabledelayedexpansionsetNGINX_DIRC:\nginxsetLOG_DIR%NGINX_DIR%\logssetDATESTR%date:~0,4%%date:~5,2%%date:~8,2%ifnot exist%LOG_DIR%exit/brem 备份 access.logifexist%LOG_DIR%\access.log(move%LOG_DIR%\access.log%LOG_DIR%\access_%DATESTR%.lognul)rem 备份 error.logifexist%LOG_DIR%\error.log(move%LOG_DIR%\error.log%LOG_DIR%\error_%DATESTR%.lognul)rem 通知 Nginx 重新打开日志要求 nginx 正在运行cd/d%NGINX_DIR%nginx -s reopen 2nulechoLog rotated: %DATESTR%定时启动/重启 Nginx 脚本start-nginx.bat适用于开机未自动启动、或需每日固定时间拉起服务的场景。脚本先尝试停止残留进程再启动主程序。避免重复启动多个 nginx 实例检查 tasklist 中是否存在 nginx.exe若使用 Windows 服务方式部署建议直接用 net start nginx 替代手动启动启动后可加短暂停顿timeout /t 2 nul再检查端口如 80是否监听增强健壮性示例脚本start-nginx.bat123456789101112131415echooffsetNGINX_DIRC:\nginxrem 检查并结束旧进程tasklist/fiimagename eq nginx.exe| findstr/inginx.exenulif%errorlevel% equ 0 (echoStopping existing nginx...%NGINX_DIR%\nginx.exe -s stop nul 21timeout/t1 nul)rem 启动 NginxechoStarting nginx...cd/d%NGINX_DIR%start nginx.exetimeout/t2 nulechoNginx started.复制讲解配置 Windows 任务计划程序让上述脚本每天凌晨执行日志轮转并在开机/指定时间启动服务。打开“任务计划程序”创建基本任务 → 设置名称、触发器如“每天”“02:00”、操作启动程序 → 选择 .bat 文件在“常规”选项卡中勾选“不管用户是否登录都要运行”和“不存储密码”需改用本地系统账户或配置凭据若脚本涉及服务控制如 net start务必勾选“使用最高权限运行”测试任务右键任务 → “运行”观察日志目录是否生成新文件、Nginx 是否响应正常
返回列表