`
lupingui
  • 浏览: 159243 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux环境下Java操控Tomcat、Apache自动重启

阅读更多

 

	//软件安装目录
	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();
	}
分享到:
评论

相关推荐

    tomcat自动重启脚本

    linux系统tomcat自动重启脚本:判断监控 tomcat日志catalina.out超过一定限度 自动重启tomcat

    Linux环境下apache+tomcat共存

    在Linux环境中,Apache和Tomcat的共存配置是常见的服务器部署模式,这允许Apache作为前端服务器处理静态内容,而将动态请求(如Java应用程序、Servlets和JSPs)转发到后端的Tomcat服务器。以下是一个详细的步骤来...

    Linux下apache-tomcat

    在Linux环境下,Apache Tomcat提供了稳定且高效的Web服务。本文将深入探讨如何在Linux系统上安装和配置Apache Tomcat 5.5.28。 一、Linux环境准备 在开始安装Apache Tomcat之前,确保你的Linux系统已经安装了Java ...

    linux+apache+tomcat整合完整详解版(最新)

    Linux+Apache+Tomcat 的整合是目前最常用的 web 服务器架构之一,本文档将详细介绍如何在 Red Hat Enterprise Linux 5.2 环境下安装和配置 Apache2.2.12、Tomcat6.0.20 和 JDK6u16,以实现一个完整的 JSP 环境。...

    linux系统Tomcat重启shell脚本

    Linux 系统 Tomcat 重启 shell 脚本指的是在 Linux 操作系统中使用 shell 脚本来重启 Apache Tomcat 服务器的脚本,主要用于解决日志文件超过一定大小时自动重启 Tomcat 服务器的问题。 描述解释 Linux 系统 Tomcat...

    linux+java+tomcat+apache环境搭建.pdf

    linux+java+tomcat+apache环境搭建.pdf

    Linux环境下配置Tomcat服务器

    Linux 环境下配置 Tomcat 服务器 在 Linux 环境下配置 Tomcat 服务器是非常重要的,因为 Tomcat 是一个轻量级应用服务器,广泛应用于中小型系统和并发访问用户不是很多的场合。下面我们将详细介绍 Linux 环境下配置...

    linux+java+tomcat+apache环境搭建借鉴.pdf

    linux+java+tomcat+apache环境搭建借鉴.pdf

    apache-tomcat-9.0.52.tar

    Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码安装包Linux环境下的tomcat源码...

    自动监控 Windows平台Tomcat运行监控并自动重启

    本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的连续性。下面将详细讨论这个主题。 首先,我们要理解Tomcat是什么。Tomcat是一款开源的Java Servlet容器,...

    linux下java和tomcat配置 非常详细 适合菜鸟)

    ### Linux下Java与Tomcat配置详解 #### 一、引言 在Linux环境下配置Java运行环境及部署Tomcat服务器是一项常见的任务,对于初学者来说,掌握这一技能是必不可少的。本文将详细介绍如何在Linux系统中配置Java环境...

    tomcat自动定时重启

    5. **环境变量**:确保在执行重启脚本时,所有必要的环境变量(如`JAVA_HOME`、`CATALINA_HOME`)都已经设置,这样Tomcat才能正常运行。 6. **错误处理**:在设置定时任务时,应考虑错误处理情况。例如,如果Tomcat...

    Linux6.0下Apache与tomcat 整合支持php html java(编译安装)

    "Linux 6.0 下 Apache 与 Tomcat 整合支持 PHP、HTML、Java(编译安装)" Linux 6.0 下 Apache 与 Tomcat 的整合是指在 Linux 6.0 操作系统中将 Apache 和 Tomcat 服务器整合起来,以支持 PHP、HTML 和 Java 等多种...

    Shell脚本定时监控tomcat,服务挂掉自动重启

    Shell脚本定时监控tomcat,服务挂掉自动重启

    最新版linux apache-tomcat-9.0.37.tar.gz

    在Linux环境下,Apache Tomcat提供了高效且轻量级的Web服务解决方案。 标题中的"最新版linux apache-tomcat-9.0.37.tar.gz"指的是适用于Linux操作系统的Apache Tomcat服务器的9.0.37版本,该版本被打包成了tar.gz...

    tomcat宕机重启脚本

    tomcat宕机重启脚本,比较简单的一种设置

    apache-tomcat7 linux

    以上就是Linux环境下安装和配置Apache Tomcat7的详细过程,涵盖了从下载、解压到启动、验证、安全配置等关键步骤。了解这些操作对于管理和维护基于Java的Web服务至关重要。在实际应用中,你可能还需要根据具体需求...

Global site tag (gtag.js) - Google Analytics