有时我们需要把写好的 java 程序部署在 Windows 系统的服务器上,如果服务器被人为重启,或者程序由于未知原因自己崩溃了,程序不能自动重启,用户体验很不好。接下来介绍一种可行的解决方案:设置 java 程序开机启动 + 崩溃自动重启(当然能避免程序崩溃最好,这是根本解决方法,本文的目的是给你的程序设立最后一道保障)。
jar 包开机运行:利用 Windows 系统自带的“计划任务”工具,使得系统启动完毕后去运行一个脚本,我们在这个脚本里写入运行 jar 包的命令即可。
程序崩溃重启:继承上一步,替换掉系统启动完毕之后运行的脚本为,新建一个脚本,在其中设置定时任务,每隔一段时间去检查我们启动的进程是否存在,如不存在,表明程序崩溃,重新启动它即可。
a. 准备好要运行的jar包,例如test.jar
b. 编写启动脚本。新建一个 bat 文件,例如 test_start.bat,并写入以下内容:
登录后复制
@echo off
start javaw -jar E:\your\path\test.jar
exit
注:__javaw _命令和 __java __类似,区别是它不会启动控制台,满足后台启动的需求_
_c. _将 bat 脚本加入window计划任务中。设置方法如下:
在开始菜单中搜索计划任务,并打开,弹出计划任务界面,依次点击 任务计划程序库--创建任务
填入任务名称,设置使用最高权限运行
切换选项卡到“触发器”,点击新建,弹出触发器窗口,选择“启动时”,并在高级设置中设置延迟30s触发。
注:测试发现不设置延迟会导致任务启动失败,可能由于部分系统环境没有初始化完毕。
继续切换选项卡到“操作”,点击新建,在弹出的窗口中选择“启动程序”,并选择要启动的 bat 脚本所在位置,之后在“起始于”输入框中填入 bat 文件所在路径。
注:__“__起始于__”__如留空,并且在要启动的 __bat __文件中有静默启动的代码,会导致运行 __bat __失败,因此建议填写。
“条件”按需配置,最后进入“设置”选项卡,勾选“允许按需运行任务”,表示待会可以手动运行该计划任务(用于测试是否配置成功)。
创建成功后就可以点击运行测试。
a. 新建 bat 文件,如test_listener.bat,写入如下内容:
登录后复制
@echo off
title test_listener
mode con cols=100 lines=20
color 3f
:: 设置后台启动
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
:: 获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
:: 执行程序,定时检测运行状态,程序崩溃自动重启
set _task=javaw.exe
set _des=E:/your/path/test-start.bat
:checkstart
for /f "tokens=5" %%n in ('qprocess.exe ^| find "%_task%" ') do (
if %%n==%_task% (goto checkag) else goto startsvr
)
:startsvr
echo %time%
echo ******** program start ********
echo program start at %time%
start %_des%
set/p=.<nul
for /L %%i in (1 1 10) do set /p a=.<nul&ping.exe /n 2 127.0.0.1>nul
echo .
echo Wscript.Sleep WScript.Arguments(0) >%tmp%/delay.vbs
cscript //b //nologo %tmp%/delay.vbs 20000
del %_des% /Q
echo ******** program start finished ********
goto checkstart
:checkag
echo %time% running normally, check again after 20s..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%/delay.vbs
cscript //b //nologo %tmp%/delay.vbs 20000
goto checkstart
注:
b. 在计划任务中,设置“操作”中启动的脚本为刚刚新建的 bat 文件(test_listener.bat),大功告成。
如有表述不清楚的地方请让我知道,如果你对文章有任何疑问,欢迎来讨论~
原网址: 访问
创建于: 2023-11-14 10:23:45
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论