java獲取當前tomcat程序(linux)
阿新 • • 發佈:2019-01-27
在某些時候我們需要取得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的具體程式碼實現可以參照博主的另一篇文章。