Как остановить код верхнего терминала после его однократного выполнения? - PullRequest
1 голос
/ 24 апреля 2019

Я хочу видеть загрузку процессора и оперативной памяти машины, пока мой код 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

Вывод верхней команды

Вопросы:

  1. Если я сначала запустил команду "top", она не пошла вниз для выполнения других команд.
  2. Как показано в этом коде, когда я впервые запустил Thread, он показывает «Переменная окружения TERM не установлена».
  3. если возможно, сохраняйте его непосредственно в текстовом файле, а не читайте и храните его внутри кода 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...