add iostat command
This commit is contained in:
parent
60852cf91e
commit
aa0731c3b8
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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));
|
||||||
|
|
Loading…
Reference in New Issue