在某些時候我們需要取得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的具體代碼實現可以參照博主的另一篇文章。