I'm working on the project where I've to track Disk Usage on Linux using java code.I've executed the following code
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());
}
}
where I get the following output:
------- 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):
I've executed below line via java code
String diskUsageCommandTest = "df -h | awk '$NF==\"/\"{printf \"Disk Usage: %d/%dGB (%s)\n\", $3,$2,$5}'";
where I get the following output:
------- 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
On the linux terminal I run the following command :
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
where I get the following output :
Disk Usage: 16/19GB (88%)
So anyone know what Can I do in the java code to get the output in format like "Disk Usage: 16/19GB (88%)"?