如何检查是否正在运行某个进程 - java on linux [英] How to check is a certain process is running - java on linux

查看:1556
本文介绍了如何检查是否正在运行某个进程 - java on linux的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要检查java程序中是否正在运行非java进程(按进程名称) - 非常类似于 Java - 如何检查另一个(非Java)进程是否在Linux上运行

解决方案没问题,但仍然需要打开一个系统调用过程,我想避免这种情况。

是否有一种纯java方式来获取正在运行的进程列表在linux上?

I need to check if a non-java process is running (by process name) inside a java program - very similar to the issue in Java - how to check whether another (non-Java) process is running on Linux.
The solution is ok, but it still needs to open a system call process, and I'd like to avoid this.
Is there a pure-java way to get a list of running processes on linux?

推荐答案

一个可能的解决方案可能是探索 proc 条目。实际上,这就是 top 的方式,其他人可以访问正在运行的进程列表。

A possible solution might be explorer the proc entries. Indeed, this is how top and others gain access to the list of running process.

我不完全确定这是你想要的,但它可以给你一些线索:

I'm not completely sure if this is what your looking for, but it can give you some clue:

    import java.awt.Desktop;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class OpenFolder {
        public static void main(String[] args) throws IOException {
            System.out.println(findProcess("process_name_here"));
        }

        public static boolean findProcess(String processName) throws IOException {
            String filePath = new String("");
            File directory = new File("/proc");
            File[] contents = directory.listFiles();
            boolean found = false;
            for (File f : contents) {
                if (f.getAbsolutePath().matches("\\/proc\\/\\d+")) {
                    filePath = f.getAbsolutePath().concat("/status");
                    if (readFile(filePath, processName))
                        found = true;
                }
            }
            return found;
        }

        public static boolean readFile(String filename, String processName)
        throws IOException {
            FileInputStream fstream = new FileInputStream(filename);
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            strLine = br.readLine().split(":")[1].trim();
            br.close();
            if (strLine.equals(processName))
                return true;
            else
                return false;
        }
    }

这篇关于如何检查是否正在运行某个进程 - java on linux的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆