//软件安装目录
static final String TOMCAT_DIR = "/usr/local/tomcat/";
static final String APACHE_DIR = "/usr/local/apache2/";
//重试次数
static final int RETRY_TIME = 10;
/**
* 重启Tomcat
* @auther lupingui
* 2010-1-4 下午05:27:24
* @param runtime
* @return
* @throws IOException
*/
public static boolean restartTomcat(Runtime runtime) throws IOException{
//结束tomcat进程
for (int i = 0; i < RETRY_TIME; i++) {
if(isExistTomcatProcess(runtime)) {
//调用tomcat自身脚本结束进程
shutdownTomcat(runtime);
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(isExistTomcatProcess(runtime)) {
//强制结束进程
killTomcatBySoft(runtime);
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}else {
break;
}
}
//启动tomcat
for (int i = 0; i < RETRY_TIME; i++) {
if(!isExistTomcatProcess(runtime)) {
//调用tomcat自身脚本重启程序
startupTomcat(runtime);
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
break;
}
}
if(isExistTomcatProcess(runtime)) {
return true;
}else {
return false;
}
}
/**
* 判断是否含有tomcat进程
* @auther lupingui
* 2010-1-4 下午04:41:04
* @param runtime
* @return
* @throws IOException
*/
public static boolean isExistTomcatProcess(Runtime runtime) throws IOException {
String program = "org.apache.catalina.startup.Bootstrap start";
String command = "ps -C java -f --cols=1000";
return isExistProcess(runtime, command, program);
}
/**
* 判断是否含有apache进程
* @auther lupingui
* 2010-1-4 下午04:41:14
* @param runtime
* @return
* @throws IOException
*/
public static boolean isExistApacheProcess(Runtime runtime) throws IOException {
String program = APACHE_DIR + "bin/httpd";
String command = "ps -C httpd -f --cols=1000";
return isExistProcess(runtime, command, program);
}
/**
* 判断当前进程中是否含有program
* @auther lupingui
* 2010-1-4 下午04:41:18
* @param runtime
* @param command
* @param program
* @return
* @throws IOException
*/
public static boolean isExistProcess(Runtime runtime, String command, String program) throws IOException {
boolean isExistTomcatProcess = false;
Process process = runtime.exec(command);
InputStream in = process.getInputStream();
InputStreamReader is = new InputStreamReader(in);
BufferedReader read = new BufferedReader(is);
String line = "";
while((line = read.readLine()) != null) {
if(line.indexOf(program) >= 0) {
isExistTomcatProcess = true;
break;
}
}
//---------------------
in.close();
is.close();
read.close();
process.destroy();
//---------------------
return isExistTomcatProcess;
}
/**
* 关闭Tomcat
* @auther lupingui
* 2010-1-4 下午04:41:28
* @param runtime
* @throws IOException
*/
public static void shutdownTomcat(Runtime runtime) throws IOException {
runtime.exec(TOMCAT_DIR + "bin/shutdown.sh");
}
/**
* 启动Tomcat
* @auther lupingui
* 2010-1-4 下午04:41:56
* @param runtime
* @throws IOException
*/
public static void startupTomcat(Runtime runtime) throws IOException {
runtime.exec(TOMCAT_DIR + "bin/startup.sh");
}
/**
* 重启Apache
* @auther lupingui
* 2010-1-4 下午05:30:06
* @param runtime
* @return
* @throws IOException
*/
public static boolean restartApache(Runtime runtime) throws IOException {
if(isExistApacheProcess(runtime)) {
runtime.exec(APACHE_DIR + "bin/apachectl restart");
}else {
runtime.exec(APACHE_DIR + "bin/apachectl start");
}
if (isExistApacheProcess(runtime)){
return true;
}else{
return false;
}
}
/**
* 强制结束Tomcat进程
* @auther lupingui
* 2010-1-4 下午04:46:34
* @param runtime
* @throws IOException
*/
public static void killTomcatBySoft(Runtime runtime) throws IOException {
String[] cmd = {"sh", "-c", "ps aux | grep tomcat"};
Process process = runtime.exec(cmd);
InputStream in = process.getInputStream();
InputStreamReader is = new InputStreamReader(in);
BufferedReader read = new BufferedReader(is);
String line = null;
while((line = read.readLine()) != null) {
if(line.indexOf("org.apache.catalina.startup.Bootstrap start") >= 0) {
String tomcatPid = line.split("\\s+")[1];
runtime.exec("kill -9 "+tomcatPid);
}
}
in.close();
is.close();
read.close();
process.destroy();
}
分享到:
相关推荐
linux定时自动重启TOMCAT,SHELL脚本, 按制定时间启动脚本,并自动查找TOMCAT进程,关闭TOMCAT进程,然后再启动TOMCAT进程,服务器压力过大,或遭受攻击时,TOMCAT集群时自动维护出问题的TOMCAT。
Linux环境下apache+tomcat共存,
linux系统tomcat自动重启脚本:判断监控 tomcat日志catalina.out超过一定限度 自动重启tomcat
Linux 监控tomcat,自动重启tomcat服务Linux 监控tomcat,自动重启tomcat服务Linux 监控tomcat,自动重启tomcat服务Linux 监控tomcat,自动重启tomcat服务
linux+java+tomcat+apache环境搭建.pdf
linux+java+tomcat+apache环境搭建借鉴.pdf
linux+java+tomcat+apache环境搭建[参考].pdf
Shell脚本定时监控tomcat,服务挂掉自动重启
tomcat宕机重启脚本,比较简单的一种设置
Linux环境下的apache-tomcat,直接解压就可以用
Apache tomcat6.0 java开发工具 Apache tomcat6.0 Apache tomcat6.0
linux下java和tomcat配置 非常详细 适合菜鸟)
Windows平台下监控Tomcat运行时服务假死或异常后并尝试自动重启Tomcat,已测试可用 Windows平台下监控Tomcat运行时服务假死或异常后并尝试自动重启Tomcat,已测试可用
Linux6.0下Apache与tomcat 整合支持php html java(编译安装)
Linux环境下 JDK安装配置 Tomcat服务器安装配置
如何在linux服务器上同时搭建php运行环境(apache)和java运行环境(tomcat) 一台linux上同时运行php和java网站项目 一台linux上同时运行apache httpd和java tomcat
这个配置是目前最新的, apache2.2.12+tomcat6.0.20里面有详细的配置过程。很实用按照过程配置即可。