`

在JAVA程序中如何取得自身的进程号(PID)

阅读更多

在JAVA程序中如何取得自身的进程号(PID)

============================

需求如题,不再赘述。

 

在JDK1.5以上版本,自带了一个工具jps.exe,可以帮助我们达成目标,简单测试代码如下:

import java.io.*;

public class JpsTest{

  public static void test(){
    String jps = "bin\\jps.exe";
    try{
      Process p = Runtime.getRuntime().exec(jps);
      InputStream in = p.getInputStream();
      InputStreamReader reader = new InputStreamReader(in, "UTF-8");
      BufferedReader br = new BufferedReader(reader);
      String inStr = null;
      StringBuffer sb = new StringBuffer("");
      while( (inStr = br.readLine()) != null ){
        sb.append(inStr + "\r\n");
      }
      System.out.println(sb.toString());
      int count = 30;
      while(count-->0){
        try{
          Thread.currentThread().sleep(1000);
        }catch(Exception ex1){
          ex1.printStackTrace();
        }
      }
    }catch(Exception e){
      e.printStackTrace();
    }

  }

  public static void main(String[] args){
    JpsTest.test();
  }
}

 

在WinXP SP2上执行结果如下:

J:\>java JpsTest
740 JpsTest
3188 TCPMon
764 Jps

 

第一列是PID,第二列是程序名,根据程序名取出对应的PID即可。

 

JPS依赖 JDK_HOME\lib\tools.jar,如果是只在JRE环境下运行,需要把 JDK_HOME\bin\jps.exe 和 JDK_HOME\lib\tools.jar 分别复制到JRE_HOME\bin 和 JRE_HOME\lib下。对于有些对程序大小要求比较高的系统,可以给tools.jar瘦身,我不完全测试的结果如下:

tools.jar中只保留如下内容即可:

 

sun\jvmstat\ 下所有内容

sun\tools\jps 下所有内容

 

 ========================================

其实不用jps.exe也可以,只要执行:

 

J:\>java -cp lib\tools.jar sun.tools.jps.Jps
3188 TCPMon
3272 Jps

 

 

 

分享到:
评论

相关推荐

    Java通过进程名称杀进程

    - JRE是Java应用程序运行时环境的基础部分,包含了Java虚拟机(JVM)、类库以及运行Java程序所需的其他支持组件。 - `Runtime.getRuntime()`方法可以获得当前Java应用程序的`Runtime`实例,从而执行操作系统级别的...

    Shell脚本中获取进程ID的方法

    提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。 当我在执行shell脚本时,它会启动一个叫子shell的进程...在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可

    输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    总之,jstack是一个非常强大的工具,通过它可以有效诊断和解决Java程序中的线程相关问题,例如线程阻塞或死锁。熟练掌握jstack的使用对于任何Java应用程序的性能优化和问题解决都有着重要作用。

    获取进程模块、pid(参数处理较前有一定优化)

    另外,编程语言如Python、C++、Java等也提供了API来获取进程PID,例如Python的os模块中的os.getpid()函数。 模块则与进程密切相关,它们是组成进程可执行代码和数据的单元。这些模块可能包括动态链接库(DLLs)或...

    java程序产品包模板-内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip

    该压缩包文件“java程序产品包模板-内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip”提供了一套适用于Java程序的通用打包方案,特别强调了其能够在Linux和Windows操作系统上无缝运行,且不...

    获取系统目前的程序进程

    3. 自动化管理:在脚本或程序中获取进程信息,实现自动化监控、重启、关闭进程等功能。 4. 安全分析:检查未知进程可能帮助发现潜在的恶意软件或病毒。 四、API调用 在编程中,我们还可以通过各种编程语言提供的API...

    一个简单的进程查看(进程管理)

    在我们的简单进程查看器中,用户可以查看当前系统的运行进程,包括进程ID(PID)、进程名称、所使用的CPU和内存资源。这涉及到操作系统内核提供的接口,如在Linux下使用`ps`命令或`/proc`文件系统获取进程信息,在...

    进程交互案例

    在Java中,`java.lang.ProcessBuilder`类和`java.lang.Process`接口是进行进程交互的核心工具。`ProcessBuilder`用于创建新的操作系统进程,并允许设置命令行参数、工作目录和环境变量。一旦启动,它将返回一个`...

    进程管理 操作系统作业

    在操作系统中,进程是通过线程来实现的,每个进程都有自己的地址空间和系统资源。 在Windows操作系统中,任务管理器是一个非常重要的工具,它可以帮助用户了解当前系统中正在运行的进程和程序的状态。通过任务管理...

    如何在程序中关闭其他程序

    在编程领域,有时候需要在自己的程序中控制或交互其他运行中的程序,比如自动化测试、系统管理或者特定功能的实现。标题“如何在程序中关闭其他程序”所涉及的知识点主要集中在进程管理和操作系统交互上。下面将详细...

    linux shell 根据进程名获取pid的实现方法

    为了避免这种情况,需要进一步限定查找条件,例如,如果知道进程是Java程序,可以通过Java关键字来筛选: ```bash #!/bin/bash process="name" pid=$(ps -ef | grep $process | grep '/bin/java' | grep -v ...

    Jconsole监控Java应用

    4. 查找要监控的Tomcat的进程,记住PID号,方便启动Jconsole后进行监控。 5. 在JDK的bin目录下,输入命令 ./jconsole 启动Jconsole。 监控内容 启动Jconsole后,可以监控Java应用程序的各种信息,包括: * ...

    hs_err_pid10988.log

    java进程崩溃日志 以下为几种可能的原因: Java应用程序的问题:发生OOM导致进程Crash; JVM出错:JVM或JDK自身的Bug导致进程Crash; 被操作系统OOM-Killer;

    Android平台so注入进程

    4. **注入过程**:在Android中,注入通常涉及到查找目标进程的PID,打开其内存映射,然后通过内存操作将SO库的地址写入到进程的内存中。这一步骤通常需要root权限,因为它涉及到了对系统级别的访问。 5. **执行注入...

    Android 通过process进程信息拿到当期正在运行的APP包名

    在Android系统中,每个应用程序都运行在自己的进程中,这些进程由Linux内核管理。了解如何通过分析进程信息来获取当前正在运行的APP包名对于开发者来说是很有价值的。本篇将详细介绍如何利用Java代码实现这一功能,...

    Android 进程注入

    在Android中,每个应用程序都运行在自己的进程中,具有独立的Dalvik或ART虚拟机实例。这样设计是为了确保应用之间的隔离,减少相互影响的可能性,提高系统的安全性。 Android进程注入通常涉及以下几个关键知识点: ...

    得指定进程占用的内存大小

    首先,进程是操作系统中运行程序的实例,每个进程都有自己的地址空间和资源分配,其中包括内存。了解一个进程占用的内存大小对于性能优化、故障排查以及资源管理都是至关重要的。在Windows、Linux或Unix等不同操作...

    android JNI进程守护service

    在Android系统中,每个应用程序都有自己的独立进程,通常默认情况下,所有应用组件(如Activity、Service等)都在同一个进程中运行。如果这个进程崩溃,那么该应用的所有组件都将无法运行。然而,我们可以通过创建...

    获取正在运行进程的实例

    在计算机科学领域,尤其是操作系统和软件开发中,管理和监控进程是至关重要的任务。"获取正在运行进程的实例"这一主题涉及到如何在操作系统层面获取进程信息,以及如何计算这些进程所占用的内存资源。在此,我们将...

    Java游戏服务器热更例子,采用pid绑定的方式更新.zip

    通过将服务器进程与特定PID绑定,可以在不中断服务的情况下替换旧版本文件为新版本文件,从而实现热更新。这种方式可以有效减少服务器停机时间,提高用户体验。该示例项目包含了完整的源代码和配置文件,展示了如何...

Global site tag (gtag.js) - Google Analytics