/** @return The index of the Process, typically starting at 0 */
  public String listProcesses() {

    StringBuffer procNames = new StringBuffer();

    for (int i = 0; i < ids.length; i++) {
      try {
        int id = (int) ((ProcessInfo) procinfo.get(i)).getPID(i);
        procNames
            .append(
                id
                    + " "
                    + ((ProcessInfo) procinfo.get(i)).getUser(id)
                    + " "
                    + ((ProcessInfo) procinfo.get(i)).getStartTime(id)
                    + " "
                    + Sigar.formatSize((long) ((ProcessInfo) procinfo.get(i)).getMemoryUsage(id))
                    + " "
                    + Sigar.formatSize((long) ((ProcessInfo) procinfo.get(i)).getSwapDimension(id))
                    + " "
                    + ((ProcessInfo) procinfo.get(i)).getState(id)
                    + " "
                    + ((ProcessInfo) procinfo.get(i)).getPriority(id)
                    + " "
                    + ((ProcessInfo) procinfo.get(i)).getExecutionTime(id)
                    + " "
                    + ((ProcessInfo) procinfo.get(i)).getCommand(id))
            .append("\n");
      } catch (SigarException ex) {
        Logger.getLogger(ProcessInfojmx.class.getName()).log(Level.SEVERE, null, ex);
      }
    }

    return procNames.toString();
  }
  public static FileDeviceSystem getFileDeviceEntity(FileSystem fs) throws SigarException {
    long used, avail, total, pct;

    FileDeviceSystem fileDeviceSystem = new FileDeviceSystem();
    try {
      FileSystemUsage usage;
      if (fs instanceof NfsFileSystem) {
        NfsFileSystem nfs = (NfsFileSystem) fs;
        if (!nfs.ping()) {
          log.error(nfs.getUnreachableMessage());
          return null;
        }
      }
      usage = sigar.getFileSystemUsage(fs.getDirName());

      used = usage.getTotal() - usage.getFree();
      avail = usage.getAvail();
      total = usage.getTotal();

      pct = (long) (usage.getUsePercent() * 100);

    } catch (SigarException e) {
      log.warn("通过sigar的API获取文件系统信息时出错:" + e.toString());
      used = avail = total = pct = 0;
    }

    String usePct;
    if (pct == 0) {
      usePct = "-";
    } else {
      usePct = pct + "%";
    }

    fileDeviceSystem.setDeviceName(fs.getDevName());
    fileDeviceSystem.setSize(Sigar.formatSize(total * 1024));
    fileDeviceSystem.setAvail(Sigar.formatSize(avail * 1024));
    fileDeviceSystem.setUsed(Sigar.formatSize(used * 1024));
    fileDeviceSystem.setUsePercent(usePct);
    fileDeviceSystem.setMountedOn(fs.getDirName());
    fileDeviceSystem.setTypeName(fs.getTypeName());
    fileDeviceSystem.setSysTypeName(fs.getSysTypeName());

    return fileDeviceSystem;
  }