问题:nginx 作为反向代理, thin 开了3个进程, 在production 模式下需要重启。为了保证网站一直可用,分别需要逐个重启。windows不支持linux下的restart。
解决办法:batch
思路:通过端口找到pid,然后强行taskkill 之, 重新启动。
代码:
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :3000 ^| findstr LISTENING ') DO start /wait taskkill /F /PID %%P
@ping 127.0.0.1 -n 2 -w 300 > nul
start /min thin start -e production -p 3000
@ping 127.0.0.1 -n 2 -w 50000 > nul
解释:
行1:通过netstat 显示端口和进程pid关联信息,通过findstr portnumber和 listening 过滤信息,然后通过 for 语句单独获得pid传给变量%P,最后用taskkill /F /PID强行杀掉
行2、4:休息一下
行3:在另外的窗口启动thin
副作用:
你还得把原有窗口自己关掉。这个现在懒得解决,等待有志之士补充。