关于java调用Shell脚本的代码在我另外一个博客有,可参考java调用shell 脚本命令实现(工具类)
最近新加了个需求,使用java来控制tomcat的启动和停止,废话就不多说,我直接上代码。
1.首先是启动
StringBuilder str = new StringBuilder();
str.append(" sh /usr/local/tomcat/"+interactiveGraph.getServiceName()+"/bin/startup.sh \n");
log.info(str.toString());
RemoteShellExecutorHive executor = new RemoteShellExecutorHive(serviceIp,username,password);
try {
executor.exec(str.toString());
} catch (Exception e) {
log.info("startTomcat脚本执行错误:"+e);
e.printStackTrace();
}
2.然后是停止
StringBuilder str = new StringBuilder();
str.append(" kill -9 `ps -ef|grep "+interactiveGraph.getServiceName()+"|grep -v 'grep'|awk '{print $2}'` \n");
log.info(str.toString());
RemoteShellExecutorHive executor = new RemoteShellExecutorHive(serviceIp,username,password);
try {
executor.exec(str.toString());
} catch (Exception e) {
log.info("shutdownTomcat脚本执行错误:"+e);
e.printStackTrace();
}
这样呢就会把所有查出来的pid给kill掉。
如果tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
解决方案: 在tomcat的bin目录下,编辑catalina.sh文件,加入
export JAVA_HOME= jdk的路径
export JRE_HOME=jdk的路径/jre
如图所示