获取Linux/Unix文件系统信息

设计一套SAP监控系统

http://blog.youkuaiyun.com/bayaci/archive/2009/10/13/4666456.aspx

显示系统df(linux )/ bdf (hpunix)的信息
o_125.jpg

执行代码,获取诸如 bdf /usr命令后的信息:
DiskInfo diskInfo = new DiskInfo();
diskInfo.info(directory);
long used = diskInfo.getUsed();
long free = diskInfo.getAvailable();
long kbyte = diskInfo.getKbyte();






代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.StringTokenizer;


public class DiskInfo {

/** OS line separator. */
static final String NL = System.getProperty( "line.separator" );

private static long getLong( String value ) throws NumberFormatException {
try {
return Long.parseLong( value );
}
catch( NumberFormatException nfe ) {
throw new NumberFormatException( "On value "+value+": "+nfe.getMessage() );
}
}


private String fileSystem ;
private String mounted ;
private long used = 0L;
private long kbyte = 0L;
private long available = 0L;

public void info(String directory ) throws IOException {

InputStream stream = null;
// Connection connection = null; // Database Connection Object




// to handle standard outputs
final byte[] buf = new byte[1024];
String[] strings;
int i;
int size;


// note OS name
final String osName = System.getProperty( "os.name" );

// System.out.println( "system is " + osName);


if( "Linux".equals( osName ) ) {
final Process p = Runtime.getRuntime().exec( "df " + directory );
stream = p.getInputStream();
final int count = stream.read( buf, 0, buf.length );

String delim = NL;

final StringTokenizer st = new StringTokenizer( new String( buf, 0, count ), delim,
true );

int lineNum = 1;
int field = 0;

while( st.hasMoreTokens() ) {
final String token = st.nextToken(delim);
//System.out.println( "token is " + token);
if( lineNum if( NL.equals( token ) ) {
lineNum++;
if( lineNum == 2 ) {
delim = " " + NL;
}
}
}// else
if( !" ".equals( token ) ) {
field++;
if( field == 0 ) {
setFileSystem ( token );
} else
if( field == 2 ) {
setUsed ( getLong( token ));
} else
if( field == 3 ) {
setAvailable( getLong( token ));
}
}
}
}
else
if( "HP-UX".equals( osName ) ) {
final Process p = Runtime.getRuntime().exec( "bdf " + directory );
stream = p.getInputStream();
final int count = stream.read( buf, 0, buf.length );

String delim = NL;

final StringTokenizer st = new StringTokenizer( new String( buf, 0, count ), delim,
true );

int lineNum = 1;
int field = 0;

while( st.hasMoreTokens() ) {
final String token = st.nextToken(delim);
if( lineNum if( NL.equals( token ) ) {
lineNum++;
if( lineNum == 2 ) {
delim = " " + NL;
}
}
} else
if( !" ".equals( token ) ) {
field++;



if( field == 0 ) {
setFileSystem ( token );
} else
if( field == 3 ) {
setUsed ( getLong( token ));
} else
if( field == 4 ) {
setAvailable( getLong( token ));
}
}
}
} else {
throw new RuntimeException( "Unknown OS name: " + osName + " to implement..." );
}

setKbyte ( getUsed() + getAvailable());
setMounted(directory );


}

private void setUsed(long used) {
this.used = used;
}

public long getUsed() {
return used;
}

private void setKbyte(long kbyte) {
this.kbyte = kbyte;
}

public long getKbyte() {
return kbyte;
}

private void setAvailable(long available) {
this.available = available;
}

public long getAvailable() {
return available;
}

private void setFileSystem(String fileSystem) {
this.fileSystem = fileSystem;
}

public String getFileSystem() {
return fileSystem;
}

private void setMounted(String mounted) {
this.mounted = mounted;
}

public String getMounted() {
return mounted;
}





}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值