【发布时间】:2017-08-01 20:38:51
【问题描述】:
我想检查我的 jar 是否在用户系统上运行,如果它关闭则重新启动。
我知道命令jps -l 可以检查当前运行的jar。唯一的问题是,要使该行正常工作,它需要用户安装 JDK。所以我想知道是否有与jps -l 行等效的行,它不需要JDK 或任何东西,只需检查特定的jar 是否正在运行。
在过去我也使用cmd /c tasklist for Windows 和top -F -R -o cpu for Mac。检查应用程序或 exe 是否正在运行,但这似乎并没有真正起作用。在 Windows 上运行 tasklist 行时,然后我检查了一个名为“myApp”的 exe,它没有找到它。即使它可能正在运行。否则,这将是检查正在运行的应用程序、exe 或 jar 的完美方法。
这是我尝试使用tasklist 命令检查特定可执行文件的示例代码。
try {
String procss;
Process pRun = Runtime.getRuntime().exec("cmd /c tasklist");
BufferedReader input = new BufferedReader(new InputStreamReader(pRun.getInputStream()));
while ((procss = input.readLine()) != null) {
if(!procss.contains("myApp"))
{
//Runtime command to launch exe or app.
}
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
基本上我只想编辑上面的代码,以获得一个命令行,它能够实际检查 exe、app 或 jar 是否正在运行。也许有一个替代cmd /c tasklist和top -F -R -o cpu的方法,它能够让所有进程在PC上运行,而不仅仅是.exe或.app
【问题讨论】:
标签: java cmd jar terminal operating-system