在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
分享到:
相关推荐
- JRE是Java应用程序运行时环境的基础部分,包含了Java虚拟机(JVM)、类库以及运行Java程序所需的其他支持组件。 - `Runtime.getRuntime()`方法可以获得当前Java应用程序的`Runtime`实例,从而执行操作系统级别的...
提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。 当我在执行shell脚本时,它会启动一个叫子shell的进程...在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可
总之,jstack是一个非常强大的工具,通过它可以有效诊断和解决Java程序中的线程相关问题,例如线程阻塞或死锁。熟练掌握jstack的使用对于任何Java应用程序的性能优化和问题解决都有着重要作用。
另外,编程语言如Python、C++、Java等也提供了API来获取进程PID,例如Python的os模块中的os.getpid()函数。 模块则与进程密切相关,它们是组成进程可执行代码和数据的单元。这些模块可能包括动态链接库(DLLs)或...
该压缩包文件“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操作系统中,任务管理器是一个非常重要的工具,它可以帮助用户了解当前系统中正在运行的进程和程序的状态。通过任务管理...
在编程领域,有时候需要在自己的程序中控制或交互其他运行中的程序,比如自动化测试、系统管理或者特定功能的实现。标题“如何在程序中关闭其他程序”所涉及的知识点主要集中在进程管理和操作系统交互上。下面将详细...
为了避免这种情况,需要进一步限定查找条件,例如,如果知道进程是Java程序,可以通过Java关键字来筛选: ```bash #!/bin/bash process="name" pid=$(ps -ef | grep $process | grep '/bin/java' | grep -v ...
4. 查找要监控的Tomcat的进程,记住PID号,方便启动Jconsole后进行监控。 5. 在JDK的bin目录下,输入命令 ./jconsole 启动Jconsole。 监控内容 启动Jconsole后,可以监控Java应用程序的各种信息,包括: * ...
java进程崩溃日志 以下为几种可能的原因: Java应用程序的问题:发生OOM导致进程Crash; JVM出错:JVM或JDK自身的Bug导致进程Crash; 被操作系统OOM-Killer;
4. **注入过程**:在Android中,注入通常涉及到查找目标进程的PID,打开其内存映射,然后通过内存操作将SO库的地址写入到进程的内存中。这一步骤通常需要root权限,因为它涉及到了对系统级别的访问。 5. **执行注入...
在Android系统中,每个应用程序都运行在自己的进程中,这些进程由Linux内核管理。了解如何通过分析进程信息来获取当前正在运行的APP包名对于开发者来说是很有价值的。本篇将详细介绍如何利用Java代码实现这一功能,...
在Android中,每个应用程序都运行在自己的进程中,具有独立的Dalvik或ART虚拟机实例。这样设计是为了确保应用之间的隔离,减少相互影响的可能性,提高系统的安全性。 Android进程注入通常涉及以下几个关键知识点: ...
首先,进程是操作系统中运行程序的实例,每个进程都有自己的地址空间和资源分配,其中包括内存。了解一个进程占用的内存大小对于性能优化、故障排查以及资源管理都是至关重要的。在Windows、Linux或Unix等不同操作...
在Android系统中,每个应用程序都有自己的独立进程,通常默认情况下,所有应用组件(如Activity、Service等)都在同一个进程中运行。如果这个进程崩溃,那么该应用的所有组件都将无法运行。然而,我们可以通过创建...
在计算机科学领域,尤其是操作系统和软件开发中,管理和监控进程是至关重要的任务。"获取正在运行进程的实例"这一主题涉及到如何在操作系统层面获取进程信息,以及如何计算这些进程所占用的内存资源。在此,我们将...
通过将服务器进程与特定PID绑定,可以在不中断服务的情况下替换旧版本文件为新版本文件,从而实现热更新。这种方式可以有效减少服务器停机时间,提高用户体验。该示例项目包含了完整的源代码和配置文件,展示了如何...