//软件安装目录
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自动重启脚本:判断监控 tomcat日志catalina.out超过一定限度 自动重启tomcat
在Linux环境中,Apache和Tomcat的共存配置是常见的服务器部署模式,这允许Apache作为前端服务器处理静态内容,而将动态请求(如Java应用程序、Servlets和JSPs)转发到后端的Tomcat服务器。以下是一个详细的步骤来...
在Linux环境下,Apache Tomcat提供了稳定且高效的Web服务。本文将深入探讨如何在Linux系统上安装和配置Apache Tomcat 5.5.28。 一、Linux环境准备 在开始安装Apache Tomcat之前,确保你的Linux系统已经安装了Java ...
Linux+Apache+Tomcat 的整合是目前最常用的 web 服务器架构之一,本文档将详细介绍如何在 Red Hat Enterprise Linux 5.2 环境下安装和配置 Apache2.2.12、Tomcat6.0.20 和 JDK6u16,以实现一个完整的 JSP 环境。...
Linux 系统 Tomcat 重启 shell 脚本指的是在 Linux 操作系统中使用 shell 脚本来重启 Apache Tomcat 服务器的脚本,主要用于解决日志文件超过一定大小时自动重启 Tomcat 服务器的问题。 描述解释 Linux 系统 Tomcat...
linux+java+tomcat+apache环境搭建.pdf
Linux 环境下配置 Tomcat 服务器 在 Linux 环境下配置 Tomcat 服务器是非常重要的,因为 Tomcat 是一个轻量级应用服务器,广泛应用于中小型系统和并发访问用户不是很多的场合。下面我们将详细介绍 Linux 环境下配置...
linux+java+tomcat+apache环境搭建借鉴.pdf
Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码...
本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的连续性。下面将详细讨论这个主题。 首先,我们要理解Tomcat是什么。Tomcat是一款开源的Java Servlet容器,...
### Linux下Java与Tomcat配置详解 #### 一、引言 在Linux环境下配置Java运行环境及部署Tomcat服务器是一项常见的任务,对于初学者来说,掌握这一技能是必不可少的。本文将详细介绍如何在Linux系统中配置Java环境...
5. **环境变量**:确保在执行重启脚本时,所有必要的环境变量(如`JAVA_HOME`、`CATALINA_HOME`)都已经设置,这样Tomcat才能正常运行。 6. **错误处理**:在设置定时任务时,应考虑错误处理情况。例如,如果Tomcat...
"Linux 6.0 下 Apache 与 Tomcat 整合支持 PHP、HTML、Java(编译安装)" Linux 6.0 下 Apache 与 Tomcat 的整合是指在 Linux 6.0 操作系统中将 Apache 和 Tomcat 服务器整合起来,以支持 PHP、HTML 和 Java 等多种...
Shell脚本定时监控tomcat,服务挂掉自动重启
在Linux环境下,Apache Tomcat提供了高效且轻量级的Web服务解决方案。 标题中的"最新版linux apache-tomcat-9.0.37.tar.gz"指的是适用于Linux操作系统的Apache Tomcat服务器的9.0.37版本,该版本被打包成了tar.gz...
tomcat宕机重启脚本,比较简单的一种设置
以上就是Linux环境下安装和配置Apache Tomcat7的详细过程,涵盖了从下载、解压到启动、验证、安全配置等关键步骤。了解这些操作对于管理和维护基于Java的Web服务至关重要。在实际应用中,你可能还需要根据具体需求...