JAVA 取得程式執行的PID(Process ID)

摘要:JAVA 取得程式執行的PID(Process ID)

為了檢查自己的Java程式是否存在,

則需要取得自己的PID

並且判斷該PID是否還在運作中。

 

寫檢查程式的方式,

首先,

取得PID的程式如下

public class SystemUtils {
  
  private SystemUtils() {}
  
  public static long getPID() {
    String processName =
      java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
    return Long.parseLong(processName.split("@")[0]);
  }

  public static void main(String[] args) {
    String msg = "My PID is " + SystemUtils.getPID();
    
    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
        null, msg, "SystemUtils", javax.swing.JOptionPane.DEFAULT_OPTION);

  }

}

 

再將這個PID輸出成A.PID ,這時候只要寫shell script去檢查這A.PID的pid的執行程式,是否還活著,就可以了。

雖然我已經知道怎麼使用shell script判斷是否還活著,但留這個 java程式,未來會比較方便找程式碼片段。

網路文章如下:

http://www.rgagnon.com/javadetails/java-0651.html

 

經改良後的程式,並且輸出檔案的程式片段如下。

    public long getPID() {
        String processName =
                java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
        return Long.parseLong(processName.split("@")[0]);
    }

    public void createPidFile(String filePath) {
        try {
            long pid = this.getPID();

            FileOutputStream fileOutputStream = new FileOutputStream(filePath);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"big5");
            outputStreamWriter.write(String.valueOf(pid));
            outputStreamWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }