gpt4 book ai didi

java - 如何从 Java 调用格式化的 linux shell 命令?

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:10 25 4
gpt4 key购买 nike

我正在开发一个项目,我必须使用 java 代码跟踪 Linux 上的磁盘使用情况。我已经执行了以下代码

public  void checkSystemPerformance() {
System.out.println( "------- Track Disk Usage -------" );

BufferedReader stdInput = null;
BufferedReader stdError = null;
String line = "";

try {
String diskUsageCommandTest = "df -h";
//String diskUsageCommandTest = "df -h | awk '$NF==\"/\"{printf \"Disk Usage: %d/%dGB (%s)\n\", $3,$2,$5}'";I want the result of this command via java code

Process proc = Runtime.getRuntime().exec(diskUsageCommandTest);

stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

// read the output from the command
System.out.println("Here is the standard output of the command:\n");
while((line = stdInput .readLine()) != null) {
System.out.println(line);
}

// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((line = stdError.readLine()) != null) {
System.out.println(line);
}

proc.waitFor();

} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}

我得到以下输出:

------- Track Memory Usage,Disk Usage and CPU Load -------
Here is the standard output of the command:

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root 19G 16G 2.3G 88% /
udev 987M 4.0K 987M 1% /dev
tmpfs 200M 268K 200M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 998M 0 998M 0% /run/shm
/dev/sda1 236M 33M 191M 15% /boot
Here is the standard error of the command (if any):

我已经通过java代码执行了下面的行

String diskUsageCommandTest = "df -h | awk '$NF==\"/\"{printf \"Disk Usage: %d/%dGB (%s)\n\", $3,$2,$5}'";

我得到以下输出:

------- Track Memory Usage,Disk Usage and CPU Load -------
Here is the standard output of the command:

Here is the standard error of the command (if any):

df: `|': No such file or directory
df: `awk': No such file or directory
df: `\'$NF=="/"{printf': No such file or directory
df: `"Disk': No such file or directory
df: `Usage:': No such file or directory
df: `%d/%dGB': No such file or directory
df: `(%s)': No such file or directory
df: `",': No such file or directory
df: `$3,$2,$5}\'': No such file or directory
df: no file systems processed

在 Linux 终端上运行以下命令:

df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'

我得到以下输出:

Disk Usage: 16/19GB (88%)

所以有人知道我可以在 java 代码中做什么来获得“磁盘使用情况:16/19GB (88%)”这样的格式的输出吗?

最佳答案

你可以看看here ,这将解决您的问题 - 如果您的情况可能的话(使用您的命令创建一个 shell 脚本并执行该脚本)

关于java - 如何从 Java 调用格式化的 linux shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37827762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com