最近做项目中,因为公用服务器的原因,启动在服务器上面的服务老是被人关闭(tomcat的服务窗口太多)
所以想把服务窗口转到后台启动
1:tomcat如何启动服务
基于tomcat的启动脚本(处理过),其实也可以用tomcat下的start.bat脚本启动,原理一样,只是我需要添加配置,这样写比较清晰。
@echo off
echo start tomcat webapps set "JAVA_HOME=D:\XXX\JDK7" --设置用到的jdk set "CATALINA_HOME=D:\XXX\apache-tomcat-xxx" --设置用到的tomcat set "JAVA_OPTS=%JAVA_OPTS% -server -Xms64m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=256m -DXXX.config.dir=D:\XXX\XXX " //参数设置和设置用到的配置文件 START "XXX" %CATALINA_HOME%\bin\catalina.bat run -config %CATALINA_HOME%\conf\server.xml --启动相关命令 echo please waint untill the application started successfully.
echo ------ DONE ----------
从上面不难看出启动的是catalina.bat
这个链接说的也很详细:https://www.jianshu.com/p/b2f63ffa964c,具体细节看这篇文章即可,不在赘述。
2:如何后台启动tomcat服务
在上面脚本中set "CATALINA_HOME=D:\XXX\apache-tomcat-xxx" 指定的tomcat文件下找到
D:\XXX\apache-tomcat-xxx"\bin\setclasspath.bat 右键编辑这个文件,直接拖动到文件最下面
找到set _RUNJAVA="%JRE_HOME%\bin\java",将其改成
set _RUNJAVA="%JRE_HOME%\bin\javaw"
再启动最上面的脚本(或者tomcat下面的start.bat脚本)
这样就已经是后台启动tomcat服务了
3:修改tomcat启动服务的进程名称
按照步骤2中的改动后,想要关闭启动的tomcat服务,发现在进程中都是javaw.exe名称,如果服务器中启动了多个此类javaw.exe进程,但是却根本不知道关闭哪一个,修改进程名称操作如下
打 开上面路径中的setclasspath.bat文件,找到set _RUNJAVA="%JRE_HOME%\bin\java"这一行。将该行注释掉(即改为 rem set _RUNJAVA="%JRE_HOME%\bin\java"),然后在该行下面添加如下两行并进行保存:
copy "%JAVA_HOME%\bin\javaw.exe" "%JAVA_HOME%\bin\xxx.exe" --这里还是用javaw,不然不是后台启动服务
set _RUNJAVA="%JAVA_HOME%\bin\xxx"
注意:omp为你所想看到的进程名字(即在任务管理器中的映像名称)
重启tomcat后在在任务管理器中看见的进程名就不再是javaw.exe,而是xxx.exe了。
4:依据后台名称关闭服务进程
步骤3后,我们终于可以区分各个服务,就是每次关闭服务需要去任务管理器中,找到xxx.exe并关闭进程,有点麻烦是不是,其实我们可以写个关闭指定进程名称的脚本,具体如下:
@echo off
echo stop xxx.exe call taskkill /f /im xxx.exe --一定加上/f 强制终止进程 pause
至此就结束了
如果对上面的步骤有任何疑问或者更好的方法,欢迎回复交流,谢谢!
|