add iostat command

This commit is contained in:
Doug MacEachern 2004-12-07 06:26:25 +00:00
parent 60852cf91e
commit aa0731c3b8
2 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,110 @@
package net.hyperic.sigar.cmd;
import java.util.ArrayList;
import net.hyperic.sigar.Sigar;
import net.hyperic.sigar.SigarException;
import net.hyperic.sigar.FileSystem;
import net.hyperic.sigar.FileSystemMap;
import net.hyperic.sigar.FileSystemUsage;
import net.hyperic.sigar.shell.FileCompleter;
import net.hyperic.sigar.util.GetlineCompleter;
/**
* Report filesytem disk space usage.
*/
public class Iostat extends SigarCommandBase {
private static final String OUTPUT_FORMAT =
"%-10s %-10s %-10s %-10s";
//like df -h -a
private static final String[] HEADER = new String[] {
"Filesystem",
"Mounted on",
"Reads",
"Writes",
};
private GetlineCompleter completer;
public Iostat(Shell shell) {
super(shell);
setOutputFormat(OUTPUT_FORMAT);
this.completer = new FileCompleter(shell);
}
public Iostat() {
super();
setOutputFormat(OUTPUT_FORMAT);
}
public GetlineCompleter getCompleter() {
return this.completer;
}
protected boolean validateArgs(String[] args) {
return args.length <= 1;
}
public String getSyntaxArgs() {
return "[filesystem]";
}
public String getUsageShort() {
return "Report filesystem disk i/o";
}
public void printHeader() {
printf(HEADER);
}
public void output(String[] args) throws SigarException {
if (args.length == 1) {
FileSystemMap mounts = this.proxy.getFileSystemMap();
String name = FileCompleter.expand(args[0]);
FileSystem fs = mounts.getMountPoint(name);
if (fs != null) {
printHeader();
output(fs);
return;
}
throw new SigarException(args[0] +
" No such file or directory");
}
else {
FileSystem[] fslist = this.proxy.getFileSystemList();
printHeader();
for (int i=0; i<fslist.length; i++) {
if (fslist[i].getType() == FileSystem.TYPE_LOCAL_DISK) {
output(fslist[i]);
}
}
}
}
public void output(FileSystem fs) throws SigarException {
FileSystemUsage usage =
this.sigar.getFileSystemUsage(fs.getDirName());
ArrayList items = new ArrayList();
items.add(fs.getDevName());
items.add(fs.getDirName());
items.add(String.valueOf(usage.getDiskReads()));
items.add(String.valueOf(usage.getDiskWrites()));
printf(items);
}
private static String formatSize(long size) {
return Sigar.formatSize(size * 1024);
}
public static void main(String[] args) throws Exception {
new Iostat().processCommand(args);
}
}

View File

@ -55,6 +55,7 @@ public class Shell extends ShellBase {
public void registerCommands() throws ShellCommandInitException { public void registerCommands() throws ShellCommandInitException {
registerCommandHandler("df", new Df(this)); registerCommandHandler("df", new Df(this));
registerCommandHandler("iostat", new Iostat(this));
registerCommandHandler("free", new Free(this)); registerCommandHandler("free", new Free(this));
registerCommandHandler("pargs", new ShowArgs(this)); registerCommandHandler("pargs", new ShowArgs(this));
registerCommandHandler("penv", new ShowEnv(this)); registerCommandHandler("penv", new ShowEnv(this));