Я хотел бы запустить команду top -n 1
с использованием метода Runtime.getRuntime().exec(String)
и получить вывод top -n 1
в мою программу на Java.Использование `Runtime.getRuntime(). Exec()` для получения результата из `top`
Я пробовал стандартный способ получения выходных данных процесса с помощью BufferedReader
и использования возвращенных процессов InputStream
, но не возвращающих данных.
Я также попытался следующие ...
String path = "/home/user/Desktop/";
String cmd = "#!/bin/sh\ntop -n 1 > " + path + "output";
File shellCmd = new File(path + "topscript.sh");
PrintWriter writer = new PrintWriter(shellCmd);
writer.write(cmd);
writer.flush();
Runtime.getRuntime().exec("chmod +x " + shellCmd.getAbsolutePath());
Runtime.getRuntime().exec(shellCmd.getAbsolutePath());
который создает shell script
и выход, но выход пуст. Однако, если я затем загружу свой local shell
и запустил script
, что сделанный выше код, я получаю правильный вывод в выходном файле.
What's going wrong?
У вас есть поток вывода ошибок? например 'p.getErrorStream()' и что такое контент? – chengpohi
@chengpohi А я не знал об этом методе. Это дало мне переменную окружения TERM не задано. –
@chengpohi Таким образом, он не может выполнить скрипт, но он может создать скрипт, а затем 'chmod'. Как это может быть «chmod», но не может его запустить? –