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();
return ret;
}
catch (Exception e) {
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;
}
@@ -92,23 +114,20 @@ public class FreeBSD extends OS {
public int getMemory() {
try {
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()));
String line = "";
while ((line = b.readLine()) != null) {
if (line.startsWith("avail memory")) {
String buf[] = line.split(" ");
if (buf.length > 4) {
Long mem_byte = Long.parseLong(buf[3].trim());
line = b.readLine();
b.close();
if (line.isEmpty()) {
return 0;
}
Long mem_byte = Long.parseLong(line.trim());
return (int) (mem_byte / Long.valueOf(1024));
}
}
}
b.close();
}
catch (Exception e) {
e.printStackTrace();
catch (IOException e) {
Log.getInstance(null).debug("OS::FreeBSD::getMemory exception " + e);
}
return 0;