Я хочу видеть загрузку процессора и оперативной памяти машины, пока мой код Java не будет запущен. Поэтому я использовал команду top, но я не знаю, как и когда это остановить ??
Я не знаю, как waitFor()
может работать на меня?
Я мог бы запустить свой код в потоке, но как мне сказать ему ждать, пока этот поток завершит выполнение и остановится?
MyCode
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 работает
1
2
Переменная окружения TERM не установлена.
Ожидаемый выход:
0
ThreadSubclass работает
1
2
Вывод верхней команды
Вопросы:
- Если я сначала запустил команду "top", она не пошла вниз для выполнения других команд.
- Как показано в этом коде, когда я впервые запустил Thread, он показывает «Переменная окружения TERM не установлена».
- если возможно, сохраняйте его непосредственно в текстовом файле, а не читайте и храните его внутри кода Java.
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]