Java代码获取Linux服务器的网卡流量
public double getNetwork(){
double size = 0;
InputStream bypassFis = null;
Process processBypass = null;
try {
String[] cmd = { "/bin/sh","-c","sar -n DEV 1 1 | awk -F \" \" '{print $5,$6}'"};
//语法格式: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
processBypass = Runtime.getRuntime().exec(cmd);
String bypassLine = "";
bypassFis = processBypass.getInputStream();
int exitVal = processBypass.waitFor();
BufferedReader bufferedReaderBypass = new BufferedReader(new InputStreamReader(bypassFis));
double inSize = 0, outSize = 0, tempSize = 0;
while ((bypassLine = bufferedReaderBypass.readLine()) != null) {
bypassLine = bypassLine.trim();
if(bypassLine.contains(".")){
String[] temp = bypassLine.split("\\s+");
inSize += Double.parseDouble(temp[0]);
outSize += Double.parseDouble(temp[1]);
tempSize = inSize + outSize;
}
if(bypassLine.contains("rxkB/s") && bypassLine.contains("txkB/s") && tempSize > 0){
size = tempSize;
break;
}
}
bufferedReaderBypass.close();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != bypassFis) {
bypassFis.close();
}
if(null!=processBypass){
processBypass.destroy();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return size;
}