Java 执行一次顶级终端代码后,如何停止它?
我希望看到机器的CPU和RAM利用率,直到java代码运行为止。所以我使用了top命令,但我不知道如何以及何时停止 我不知道,Java 执行一次顶级终端代码后,如何停止它?,java,ubuntu,terminal,Java,Ubuntu,Terminal,我希望看到机器的CPU和RAM利用率,直到java代码运行为止。所以我使用了top命令,但我不知道如何以及何时停止 我不知道,waitFor()如何为我工作? 我可以在一个线程中运行代码,但如何告诉它等待该线程完成执行并停止 麦可德 import...*; public class MyCode { ThreadSubclass thread1 = new ThreadSubclass(); thread1.start(); /*
waitFor()
如何为我工作?
我可以在一个线程中运行代码,但如何告诉它等待该线程完成执行并停止
麦可德
import...*;
public class MyCode {
ThreadSubclass thread1 = new ThreadSubclass();
thread1.start();
/*
I want Mycode to Run in parallel while top command stores output of RAM and CPU usage.
Can I write my code here??
When myCode is complete, stop Top command.
*/
System.out.println("0");
Process cmdProc = Runtime.getRuntime().exec("top");
System.out.println("1");
BufferedReader stdoutReader = new BufferedReader(
new InputStreamReader(cmdProc.getInputStream()));
String line;
while ((line = stdoutReader.readLine()) != null) {
// process procs standard output here
System.out.println(line);
}
System.out.println("2");
BufferedReader stderrReader = new BufferedReader(
new InputStreamReader(cmdProc.getErrorStream()));
while ((line = stderrReader.readLine()) != null) {
// process procs standard error here
System.out.println(line);
}
cmdProc = Runtime.getRuntime().exec("Ctrl+C");
}
在另一个文件中…ThreadSubclass.java
public class ThreadSubclass extends Thread {
@Override
public void run() {
//Should I write all my code here? I had used fork earlier and it gave me pid, so It was easier for me to run my code inside that if condition of fork pid.
System.out.println("ThreadSubclass is running");
}
}
电流输出:
0
ThreadSubclass正在运行
一,
二,
未设置术语环境变量
预期产出:
0
ThreadSubclass正在运行
一,
二,
顶部命令输出
问题:
如果运行
man top
,则应输入参数以在批处理模式下运行,并以设定的迭代次数运行。设置top命令的固定迭代次数并没有帮助,因为我的java代码可能会运行数小时。我希望top命令仅在实际java代码停止时停止。top
非常占用CPU和操作系统。连续跑几个小时是不明智的,因为这可能会影响你的表现。如果您只关心CPU和内存,为什么不针对您的java进程运行ps
?我需要分析从java调用的其他一些程序,因此我需要查看总体CPU、RAM和磁盘使用情况。哪个流程正在使用它?过程的pid也会发生变化。我需要一个更好的方式来存储这些日志,如果你有其他更好的选择这种情况。我还试图设置“sar”,如果您运行mantop
,您应该输入参数,以批处理模式运行,并以设定的迭代次数运行。设置top命令的固定迭代次数并没有帮助,因为我的java代码可能会运行数小时。我希望top命令仅在实际java代码停止时停止。top
非常占用CPU和操作系统。连续跑几个小时是不明智的,因为这可能会影响你的表现。如果您只关心CPU和内存,为什么不针对您的java进程运行ps
?我需要分析从java调用的其他一些程序,因此我需要查看总体CPU、RAM和磁盘使用情况。哪个流程正在使用它?过程的pid也会发生变化。我需要一个更好的方式来存储这些日志,如果你有其他更好的选择这种情况。我也在尝试设置“sar”
Process cmdProc = Runtime.getRuntime().exec("top -b > Top.csv");
error =>
top: unknown option '>'
Usage:
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]