Vbs脚本定时判断及启动tomcat服务

说到tomcat服务,我们大家都会联系到apache,那apache和tomcat有什么区别呢,apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP、PHP)tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行,两者从以下几点可以比较的: 1、两者都是apache组织开发的 。2、两者都有HTTP服务的功能 。3、两者都是开源免费的 。当然对于一个java开发人员来是说tomcat服务应用的比较多了,为什么这没说呢,因为对于一个java开发人员来说日常应用的开发工具比如eclipse或者idea开发工具都会集成tomcat服务来进行相关代码测试。好了废话不多说了,今天呢主要借此分享一下我在运维工作中遇到的一个问题。

我们公司的主页是通过java开发的,然后到处.war包运行在tomcat服务下,我们公司的tomcat服务是运行在windows上,其实tomcat服务运行在windows和linux下完全一样,主要取决于个人爱好问题,当然也有人能说运行在linux下比较稳定,我也不排除这样的说法哦,之前公司的开发人员就部署到了windows上所以就以此来运维了。因为公司的很多服务都是嵌套的,这也许是 开发的架构问题,所以近期问题有很多,导致tomcat服务不稳定,无缘无故自动停止的问题,为了解决这个问题,我通过vbs服务进行tomcat服务的处理,定期执行脚本判断进程中是否有tomcat服务的进程(java)来保证tomcat服务运行正常。

对于在windows上的tomcat安装及部署就不多介绍了,在之前的文章中有详细介绍,我们下载apache for tomcat解压后然后进入tomcat解压目录下的bin目录下运行startup.sh文件就可以启动tomcat服务了,为了更好的保证tomcat服务的运行,有很多人讲tomcat服务设置为一个windows服务进行运行的, 那怎么做呢,具体见下:

比如我的tomcat解压安装目录问c:\apache-tomcat8.0.0,通过运行命令提示符---win+r---cmd---Cd c:\apache-tomcat8.0.9\bin 通过cd的方式进入apache-tomcat安装路径下的bin目录,然后执行

Service.bat install

命令,讲会设置tomcat服务作为一个windows服务运行过,同样我们也可以使用Service.bat remove命令取消tomcat作为一个windows服务。

然后我们通过运行services.msc打开服务管理,就看见tomcat设置为了一个windows服务

我们可以通过运行以下命令删除tomcat作为一个windows服务

service.bat remove

对于设置windows服务我就不多说了,主要说说,通过vbs脚本如何判断进程中是否运行一个服务,如果没有那就启动(1分钟判断一次),脚本示例如下:作为一个windows服务进行判断。注:在此我们可以设置任何服务进行判断的

Dim WshShell, ProgramPath
ProgramPath="""C:\apache-tomcat-8.0.9\bin\startup.bat"""
Set WshShell=WScript.CreateObject("WScript.Shell")
Do
Set wmiService = GetObject("winmgmts:\\.\root\cimv2")
Set wmiObjects = wmiService.ExecQuery("SELECT * FROM Win32_process where name=‘java.exe‘")
if wmiObjects.count > 0 Then
WScript.sleep 1000*60*1
Elseif wmiObjects.count = 0 Then
WshShell.Run ProgramPath,2
End If
Loop

如果tomcat服务不是一个windows服务的话,我们需要通过cmd进行调用启动,所以脚本见下:

运行启动startup.bat,启动后进程中有java.exe

Dim WshShell, ProgramPath 
ProgramPath="C:\apache-tomcat-8.0.9\bin\startup.bat"
Set WshShell=WScript.CreateObject("WScript.Shell") 
WshShell.CurrentDirectory="C:\apache-tomcat-8.0.9\bin\"
Set fso=CreateObject("scripting.filesystemobject")
If fso.fileExists(ProgramPath) Then 
‘MsgBox "1"
WshShell.Run "cmd.exe /c "& Chr(34) & ProgramPath & Chr(34) &" & pause "
Else 
‘MsgBox "2"
End If

我们以上代码发现,运行后多出现一个命令提示符进行确认的,因为我们需要使用windows的计划任务进行处理判断,所以就不需要添加时间进行代码判断了,所以脚本再次优化:(建议使用该脚本)

Dim WshShell, ProgramPath 
ProgramPath="C:\apache-tomcat-8.0.9\bin\startup.bat"
Set WshShell=WScript.CreateObject("WScript.Shell") 
WshShell.CurrentDirectory="C:\apache-tomcat-8.0.9\bin\"
Set fso=CreateObject("scripting.filesystemobject")
If fso.fileExists(ProgramPath) Then 
‘MsgBox "1"
WshShell.Run "cmd.exe /c "& Chr(34) & ProgramPath & Chr(34)
Else 
‘MsgBox "2"
End If

如果需要通过时间进行判断需要更新代码,比如10分钟判断一次,然后运行程序脚本如下:

Dim WshShell, ProgramPath 
ProgramParentPath="C:\apache-tomcat-8.0.9\bin\"
ProgramPath=ProgramParentPath & "startup.bat"
Set WshShell=WScript.CreateObject("WScript.Shell") 
WshShell.CurrentDirectory=ProgramParentPath
Do
Set wmiService = GetObject("winmgmts:\\.\root\cimv2")
Set wmiObjects = wmiService.ExecQuery("SELECT * FROM Win32_process where name=‘java.exe‘")        
If wmiObjects.count = 0 Then
WshShell.Run "cmd.exe /c "& Chr(34) & ProgramPath & Chr(34) &"",0
WScript.Quit 
End If
WScript.Sleep 60*1000*1
Loop

然后我们可以通过系统的计划任务来定时执行即可

注:创建计划任务的时候,建议以本地用户登陆并且创建

开始运行Taskschd.msc

新建任务计划

设置计划任务名称及运行所有者,在此我们使用本地administrator及设置不管用户是否登陆都要运行

添加触发器,运行时间的设置

添加操作,选则执行脚本

添加设置

运行完成

时间: 2024-10-12 13:37:47

Vbs脚本定时判断及启动tomcat服务的相关文章

部署jenkins,采用普通用户tomcat来启动tomcat服务

安装jdk+tomcat,部署jenkins,采用普通用户tomcat来启动tomcat服务 1.环境说明 CentOS Linux release 7.3.1611 (Core) jdk1.8.0_60 apache-tomcat-8.5.23 已经安装好 2.编译安装服务守护程序 cd /usr/local/apache-tomcat-8.5.23/bin/ tar xf commons-daemon-native.tar.gz cd /usr/local/apache-tomcat-8.5

linux下启动tomcat服务的命令是什么

Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local/tomcat/bin)1,启动tomcat服务方式一:直接启动 ./startup.sh方式二:作为服务启动 nohup ./startup.sh &方式三:控制台动态输出方式启动 ./catalina.sh run 动态地显示tomcat后台的控制台输出信息,Ctrl+C后退出并关闭服务解释:通过

Android 启动Tomcat服务报错,端口占用解决方案

启动Tomcat服务器报错:Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop

idea启动tomcat服务失败 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:

我的工程是从eclipse生成的,个人习惯用idea开发.重复了一遍以往正常的不能再正常了的导入配置,结果遇到了如下问题: SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start comp

启动tomcat服务时报22222端口被占用

服务依赖的dubbo包升级后,启动服务tomcat报22222端口被占用 原因: dubbo 2.5.8 新版本重构了 telnet 模块,提供了新的 telnet 命令支持.新版本的 telnet 端口 与 dubbo 协议的端口是不同的端口,默认为 22222.测试环境一台机器部署多个服务,导致这个端口被占用. 解决方法: 修改catalina.sh,添加如下配置(加粗部分): CATALINA_OPTS="-Xdebug -Ddubbo.qos.port=33333 -Xrunjdwp:t

[VBS脚本]定时提示并关闭计算机

一.Natalia.bat 双击这个文件可以运行Natalia 控制台在打开后会变成最小化,标题为PowerAssistant,黑色背景淡绿色文字 运行脚本Natalia.vbs 1 @ECHO OFF 2 3 REM 脚本最小化运行. 4 IF "%1" == "m" GOTO BEGIN 5 MSHTA VBScript:CreateObject("WSCript.Shell").Run("%~fs0 m",6)(Wind

tomcat服务启动解析

[web容器简介] 先需要区分几个概念:Web Server .Web Container Web Server:能够通过HTTP提供服务的进程,可以是一套完整的系统.一个软件等 Web Container:管理Java Servlet.JSP的容器,是Web Server的一个组件.一般负责,负责管理servlet的生命周期,url请求映射,请求权限验证等. 常见的web容器包括: Apache Tomcat.GlassFish.Jetty.JBoss , etc.(Open Source)

一个简单的dos脚本, svn 获取代码 - Tomcat 备份 - Maven 编译 - 停止/启动Tomcat - Tomcat站点 发布

获取最新代码 svn update --username %SVN_USER% --password %SVN_PASSWORD% >> "../%LOG_FILE%" 备份Tomcat 站点 md "%APP_ROOT%\backup\%MVN_PROFILE%-%CUR_DATE%-%myran%" >> "%LOG_FILE%" xcopy "%APP_ROOT%\%MVN_PROFILE%" &

linux下tomcat服务的启动、关闭与错误跟踪

linux下tomcat服务的启动.关闭与错误跟踪,远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 1).启动tomcat服务 进入tomcat主目录下的bin目录,然后执行如下命令: ./startup.sh 2).关闭tomcat服务 进入tomcat主目录下的bin目录,然后执行如下命令: ./shutdown.sh 通过1)启动的tomcat有个弊端,当客户端连接断开的时候,tomcat服务也就立即关闭了,通过以下命令可以作为linux服务一直运行 3).作为服务启