1. 程式人生 > >java獲取當前tomcat程序(linux)

java獲取當前tomcat程序(linux)

        在某些時候我們需要取得tomcat程序號,然後通過程序號處理一些其他事務。那麼在web專案中,如何通過某些方法取得當前tomcat伺服器的pid?首先,我們知道我們可以使用exec()方法執行linux命令。那麼我們就可以有這樣一個思路:

        通過某個介面——執行獲取程序號命令——傳回。

        那麼我們就可以得到執行我們java程式的當前pid。但是仔細想一下,執行java程式的肯定是jdk,那麼獲得的pid肯定是執行的jdk的程序號。但是我們需要的是tomcat的程序號,其實tomcat就相當於執行的servlet來處理我們的請求,將請求交給java程式實現。那麼我們當然能想到,tomcat的程序號應該就是當前執行java程式的程序的父程序了。就是PPID。

        具體的實現程式碼如下:

        首先是執行exec()方法的函式

public String runCommands(String[] cmd){

		String str = "";
		String errStr = "";
		String charset = Charset.defaultCharset().toString();
		try {
			Process p = Runtime.getRuntime().exec(cmd);
			InputStream err = p.getErrorStream();
			InputStream in = p.getInputStream();
			str = processStdout(in, charset);
			errStr = processStdout(err, charset);
			if(!StringUtils.isEmpty(errStr)){
				return str+errStr;
			}
		} catch (IOException e) {
			errStr = e.getMessage();
			return errStr;
		}
		return str;

	}
呼叫工具獲取程序號
public String getTomcatProgressId() {

		CommandUtil util = new CommandUtil();
		
		String cmd = "echo $PPID";//獲取父程序號
		String[] cmds = {"/bin/sh","-c",cmd};//設定引數
		
		String result = util.runCommands(cmds);
		return result;
}
大家可以根據自身情況進行修改,result的值有可能不是程序號,需要進行判斷。對於執行cmd的具體程式碼實現可以參照博主的另一篇文章。