FIX #61 fixed issues with dmesg being rotated

This commit is contained in:
harrim4n
2016-02-18 20:52:24 +01:00
committed by Laurent Clouet
parent a0e2d9acf2
commit c2a45dbc7c

View File

@@ -80,11 +80,33 @@ public class FreeBSD extends OS {
} }
} }
b.close(); b.close();
return ret;
} }
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
if (ret.haveData() == false) {
Log.getInstance(null).debug("OS::FreeBSD::getCPU failed to get CPU from dmesg, using partia sysctl");
ret.setModel("0");
ret.setFamily("0");
try {
Runtime run = Runtime.getRuntime();
Process sysctl = run.exec("sysctl -n hw.model");
BufferedReader buf = new BufferedReader(new InputStreamReader(sysctl.getInputStream()));
String name = "";
name = buf.readLine();
buf.close();
if (name == "") {
ret.setName("0");
}
else {
ret.setName(name);
}
}
catch (IOException e) {
Log.getInstance(null).debug("OS::FreeBSD::getCPU exception " + e);
}
}
return ret; return ret;
} }
@@ -92,23 +114,20 @@ public class FreeBSD extends OS {
public int getMemory() { public int getMemory() {
try { try {
Runtime r = Runtime.getRuntime(); Runtime r = Runtime.getRuntime();
Process p = r.exec("dmesg"); Process p = r.exec("sysctl -n hw.usermem");
BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream())); BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = ""; String line = "";
while ((line = b.readLine()) != null) { line = b.readLine();
if (line.startsWith("avail memory")) { b.close();
String buf[] = line.split(" "); if (line.isEmpty()) {
if (buf.length > 4) { return 0;
Long mem_byte = Long.parseLong(buf[3].trim()); }
Long mem_byte = Long.parseLong(line.trim());
return (int) (mem_byte / Long.valueOf(1024)); return (int) (mem_byte / Long.valueOf(1024));
} }
} catch (IOException e) {
} Log.getInstance(null).debug("OS::FreeBSD::getMemory exception " + e);
b.close();
}
catch (Exception e) {
e.printStackTrace();
} }
return 0; return 0;