如何在Windows上编写自动化脚本实现Node和GO项目定时自动重启
定时重启Node/Go项目的可行方案
方案1:Linux/macOS 原生crontab + 自定义脚本(轻量化无额外依赖)
- 第一步:编写重启脚本
先确认两个项目的进程特征、部署路径和启动命令,新建restart_services.sh脚本,参考内容如下:
#!/bin/bash # 重启Node项目 pkill -f "你的Node进程关键词,比如node main.js" cd /替换为你的Node项目实际部署路径 nohup npm run start > ./service.log 2>&1 & # 重启Go项目 pkill -f "你的Go二进制文件名,比如go_app" cd /替换为你的Go项目实际部署路径 nohup ./go_app > ./service.log 2>&1 &
给脚本添加执行权限:chmod +x restart_services.sh,手动执行一次验证两个项目可以正常重启,没有路径或权限报错。
- 第二步:配置定时任务
执行crontab -e打开定时任务编辑界面,添加如下两行规则即可实现每日早8点、晚8点自动执行重启脚本:
0 8 * * * /你的脚本存放路径/restart_services.sh 0 20 * * * /你的脚本存放路径/restart_services.sh
保存退出后定时规则自动生效。
方案2:Windows系统 任务计划程序 + 批处理脚本
- 第一步:编写批处理脚本
新建restart_services.bat文件,参考内容如下:
@echo off :: 结束Node进程并重启 taskkill /im node.exe /f cd /d 你的Node项目路径,比如D:\node_project start npm run start :: 结束Go进程并重启 taskkill /im 你的Go二进制文件名.exe /f cd /d 你的Go项目路径,比如D:\go_project start 你的Go二进制文件名.exe
- 第二步:配置定时任务
打开系统自带的「任务计划程序」,新建任务:触发器设置为每天8:00、20:00各触发一次,操作设置为「启动程序」,选择刚才编写的bat脚本,保存后即可生效。
进阶优化方案
如果需要解决非定时时段的进程异常崩溃问题,可配合进程守护工具管理项目:
- Node项目可以用
pm2工具,自带崩溃自动重启功能,执行命令pm2 start 你的Node入口文件.js --cron "0 8,20 * * *"即可一步实现定时重启+异常拉活。 - Go项目可以用
systemd或supervisor管理,配置自动重启规则的同时也可添加定时重启配置,还能统一收集、查看项目运行日志,稳定性高于原生定时任务。
内容的提问来源于stack exchange,提问作者Devin Y
相关产品推荐
相关产品推荐

