GVKun编程网logo

Linux上查看和停止所有java进程(linux查看暂停的进程)

7

在本文中,我们将带你了解Linux上查看和停止所有java进程在这篇文章中,我们将为您详细介绍Linux上查看和停止所有java进程的方方面面,并解答linux查看暂停的进程常见的疑惑,同时我们还将给

在本文中,我们将带你了解Linux上查看和停止所有java进程在这篇文章中,我们将为您详细介绍Linux上查看和停止所有java进程的方方面面,并解答linux查看暂停的进程常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的JavaFX:无法仅在Linux上查找或加载主类、Java如何获取当前进程ID以及所有Java进程的进程ID、Java获取当前进程ID以及所有Java进程的进程ID、JAVA进程 Linux CPU占用率分析方法

本文目录一览:

Linux上查看和停止所有java进程(linux查看暂停的进程)

Linux上查看和停止所有java进程(linux查看暂停的进程)

Linux下查看和停止所有java进程

在Linux下查看所有java进程命令:ps -ef | grep java

              停止所有java进程命令:pkill - 9 java    

              停止特定java进程命令:kill -9 java进程序号 

JavaFX:无法仅在Linux上查找或加载主类

JavaFX:无法仅在Linux上查找或加载主类

我使用Intellij Idea开发了一个使用Java(FX)的Windows程序,工作得很好,然后导出了工件(jar),而且在Windows上运行它(双击控制台并双击)都没有问题。

然后我把它复制到我的Ubuntu虚拟机,但它说

Error: Could not find or load main class sample.Main

这是清单:

Manifest-Version: 1.0 Main-Class: sample.Main

JAR文件结构如下所示:

Leiningenpath不能草率定位? (IntelliJ Clojure IDE)

使用IntelliJ IDE和Lua编程语言制作Corona应用程序

“选定的目录不适用于Lua SDK的家庭”?

是否可以使用系统控制台来显示输出?

请参阅IntelliJ IDEA运行configurationVM选项中的Windows环境variables

test.jar --- meta-inf --- --- MANIFEST.MF --- org --- --- json --- --- --- // json library --- sample --- --- Contacts.class --- --- Controller.class --- --- Main.class --- --- sample.fxml

Linux下的IntelliJ Idea,主类上没有这样的文件或目录

IDEA无法启动本地的glassfish服务器

如何修复Linux中的PHPStorm 10的字体渲染?

如何在Ubuntu上更新已经安装的IntelliJ IDEA?

以root用户身份从IntelliJ运行bash脚本

像Debian一样,Ubuntu为OpenJFX提供了一个独立的包(OpenJDK的JavaFX实现)。 为什么是这种情况,当JavaFX是JRE的一个组成部分 – 我不知道,但你的问题应该通过安装OpenJFX包来解决:

# aptitude install openjfx

(或使用任何其他软件包管理器),或使用Oracle的JRE。

Java如何获取当前进程ID以及所有Java进程的进程ID

Java如何获取当前进程ID以及所有Java进程的进程ID

本篇文章主要介绍了java如何获取当前进程id以及所有java进程的进程id,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来:

package com.test;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

public class Target {

  public static void main(String[] args) throws InterruptedException {
    System.out.println(getProcessID());
    while(true) {
      Thread.sleep(10000);
    }
  }

  public static final int getProcessID() { 
    RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
    System.out.println(runtimeMXBean.getName());
    return Integer.valueOf(runtimeMXBean.getName().split("@")[0]) 
        .intValue(); 
  } 

}
登录后复制

运行结果:

2896@PC-20150603VRPL
2896
登录后复制

ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比RuntimeMXBean;

RuntimeMXBean是Java虚拟机的运行时管理接口.

立即学习“Java免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

当前进程ID为2896。

但这种让Java进程自行打印ID的方式并不太好用,因为很多时候我们是需要在不修改代码另一个Java程序代码的情况下知道这个正在运行着的Java进程的ID,如果你也有这个需求,可以看一下下面的解决方法:

获取所有正在运行着的Java进程

package com.test;

import java.util.HashSet;
import java.util.Set;

import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;

public class ProcessID {

  public static void main(String[] args) throws Exception {
     // 获取监控主机
     MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
     // 取得所有在活动的虚拟机集合
     Set<?> vmlist = new HashSet<Object>(local.activeVms());
     // 遍历集合,输出PID和进程名
     for(Object process : vmlist) {
       MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
       // 获取类名
       String processname = MonitoredVmUtil.mainClass(vm, true);
       System.out.println(process + " ------> " + processname);
     }
   }
}
登录后复制

运行结果:

2752 ------> 
5172 ------> com.test.Target
5308 ------> com.test.ProcessID
登录后复制

这样,就可以根据类名找到进程号了。

MonitoredHost等类位于${JAVA_HOME}/lib/tools.jar

下面是一个可以直接根据类找到对应Java进程ID的方法:

package com.test;

import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;

import sun.jvmstat.monitor.MonitorException;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;

public class ProcessID {

  public static void main(String[] args) throws Exception {
     int pid = getProcess(Target.class);
     System.out.println("PID: "+pid);
  }

  public static int getProcess(Class<?> cls) throws MonitorException, URISyntaxException {
    if(cls == null) {
      return -1;
    }

    // 获取监控主机
    MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
    // 取得所有在活动的虚拟机集合
    Set<?> vmlist = new HashSet<Object>(local.activeVms());
    // 遍历集合,输出PID和进程名
    for(Object process : vmlist) {
      MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
      // 获取类名
      String processname = MonitoredVmUtil.mainClass(vm, true);
      if(cls.getName().equals(processname)) {
        return ((Integer)process).intValue();
      }
    }
    return -1;
  }
}
登录后复制

运行结果:

PID: 5172

源码位于我的Github项目aoptracer的com.test包里

以上就是Java如何获取当前进程ID以及所有Java进程的进程ID的详细内容,更多请关注php中文网其它相关文章!

Java获取当前进程ID以及所有Java进程的进程ID

Java获取当前进程ID以及所有Java进程的进程ID

Java获取当前进程ID以及所有Java进程的进程ID

首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来:

package com.test;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

public class Target {

    public static void main(String[] args) throws InterruptedException {
        System.out.println(getProcessID());
        while(true) {
            Thread.sleep(10000);
        }
    }

    public static final int getProcessID() {  
        RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
        System.out.println(runtimeMXBean.getName());
        return Integer.valueOf(runtimeMXBean.getName().split("@")[0])  
                .intValue();  
    } 

}
ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比如RuntimeMXBean;
RuntimeMXBean是Java虚拟机的运行时管理接口.

获取所有正在运行着的Java进程

package com.test;

import java.util.HashSet;
import java.util.Set;

import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;

public class ProcessID {

    public static void main(String[] args) throws Exception {
         // 获取监控主机
         MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
         // 取得所有在活动的虚拟机集合
         Set<?> vmlist = new HashSet<Object>(local.activeVms());
         // 遍历集合,输出PID和进程名
         for(Object process : vmlist) {
             MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
             // 获取类名
             String processname = MonitoredVmUtil.mainClass(vm, true);
             System.out.println(process + " ------> " + processname);
         }
     }
}
MonitoredHost等类位于${JAVA_HOME}/lib/tools.jar

_
运行结果:

2752 ------> 
5172 ------> com.test.Target
5308 ------> com.test.ProcessID

直接根据类找到对应Java进程ID的方法


package com.test;

import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;

import sun.jvmstat.monitor.MonitorException;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;

public class ProcessID {

    public static void main(String[] args) throws Exception {
         int pid = getProcess(Target.class);
         System.out.println("PID: "+pid);
    }

    public static int getProcess(Class<?> cls) throws MonitorException, URISyntaxException {
        if(cls == null) {
            return -1;
        }

        // 获取监控主机
        MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
        // 取得所有在活动的虚拟机集合
        Set<?> vmlist = new HashSet<Object>(local.activeVms());
        // 遍历集合,输出PID和进程名
        for(Object process : vmlist) {
            MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
            // 获取类名
            String processname = MonitoredVmUtil.mainClass(vm, true);
            if(cls.getName().equals(processname)) {
                return ((Integer)process).intValue();
            }
        }
        return -1;
    }
}

根据类名称找到对应Java进程ID的方法


package com.example.demo;

import sun.jvmstat.monitor.*;

import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;

public class ProcessID2 {
    public static void main(String[] args) throws Exception {
        int pid = getProcess("cn.usr.demo.DemoApplication");
        System.out.println("PID: " + pid);
    }

    public static int getProcess(String cls) throws MonitorException, URISyntaxException {
        if (cls == null) {
            return -1;
        }

        // 获取监控主机
        MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
        // 取得所有在活动的虚拟机集合
        Set<?> vmlist = new HashSet<Object>(local.activeVms());
        // 遍历集合,输出PID和进程名
        for (Object process : vmlist) {
            MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
            // 获取类名
            String processname = MonitoredVmUtil.mainClass(vm, true);
            if (cls.equals(processname)) {
                return ((Integer) process).intValue();
            }
        }
        return -1;
    }
}

JAVA进程 Linux CPU占用率分析方法

JAVA进程 Linux CPU占用率分析方法

1:  首先把JDK Linux版本上传到服务器上.
2:  使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈.
3: 使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高. 比如:

top - 17:23:50 up 12 days,  1:44,  8 users,  load average: 4.85, 3.56, 3.76
Tasks: 556 total,   1 running, 555 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.4%us,  4.4%sy,  0.4%ni, 71.6%id, 15.5%wa,  0.0%hi,  0.6%si,  0.0%st
Mem:     32072M total,    31972M used,      100M free,      265M buffers
Swap:     2047M total,       81M used,     1965M free,    23734M cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17363 webserve  20   0 4475m 2.9g  10m R   54  9.4 163:29.84 java
16452 webserve  20   0 4475m 2.9g  10m S    6  9.4   6:03.00 java
11283 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.35 java
11284 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.41 java
11285 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:20.89 java


比如上面信息就可以看到 17363 线程CPU使用较高, 把这个值转换为 16 进制, 然后在第2步打印的
线程栈中进行搜索, 就可以知道这个线程栈是做什么的了.

关于Linux上查看和停止所有java进程linux查看暂停的进程的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于JavaFX:无法仅在Linux上查找或加载主类、Java如何获取当前进程ID以及所有Java进程的进程ID、Java获取当前进程ID以及所有Java进程的进程ID、JAVA进程 Linux CPU占用率分析方法等相关内容,可以在本站寻找。

本文标签: