1.第一种使用shell命令实现:

 private DiskInfo LinuxGetFolderDiskInfo(string path)
{
DiskInfo disk = new DiskInfo();
if (string.IsNullOrEmpty(path))
{
return disk;
}
if (!path.StartsWith("/"))
{
path = "/" + path;
} string shellPathLine = string.Format("cd {0}", path);
string printLine = " awk '{print $2,$3,$4,$5}'";
string shellLine = string.Format("df -k {0} |", path) + printLine;
logger.Debug(string.Format("执行命令:{0}", shellLine)); Process p = new Process();
p.StartInfo.FileName = "sh";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(shellPathLine);
p.StandardInput.WriteLine(shellLine);
p.StandardInput.WriteLine("exit"); string strResult = p.StandardOutput.ReadToEnd();
logger.Debug(string.Format("输出结果:{0}", strResult));
string[] arr = strResult.Split('\n');
if (arr.Length==)
{
return disk;
}
string[] resultArray = arr[].TrimStart().TrimEnd().Split(' ');
if (resultArray==null || resultArray.Length == )
{
return disk;
} disk.TotalSize = Convert.ToInt32(resultArray[]);
disk.UsedSize = Convert.ToInt32(resultArray[]);
disk.AvailableSize = Convert.ToInt32(resultArray[]);
disk.Use = resultArray[];
logger.Debug(string.Format("Linux获取目录:{0},总大小:{1},已用:{2},未用:{3},使用率:{4}", path, disk.TotalSize, disk.UsedSize, disk.AvailableSize, disk.Use)); return disk;
}

2.第二种使用statvfs()函数实现:(需要下载Mono.Posix.dll,引用using Mono.Unix.Native;)

 public DiskInfo LinuxGetFolderDiskInfo(string path)
{
DiskInfo disk = new DiskInfo();
try
{
if (string.IsNullOrEmpty(path))
{
return disk;
}
if (!path.StartsWith("/"))
{
path = "/" + path;
} Statvfs stavfs;
Syscall.statvfs(path, out stavfs);
disk.TotalSize = (long)(stavfs.f_blocks * stavfs.f_bsize);
disk.AvailableSize = (long)(stavfs.f_bavail * stavfs.f_bsize);
disk.UsedSize = (long)(stavfs.f_bfree * stavfs.f_bsize); logger.Debug(string.Format("Linux获取目录:{0},总大小:{1},已用:{2},未用:{3}", path, disk.TotalSize, disk.UsedSize, disk.AvailableSize));
return disk;
}
catch (Exception ex)
{
logger.Error(ex);
return disk;
}
}
 public class DiskInfo
{
public long TotalSize { get; set; } public long UsedSize { get; set; } public long AvailableSize { get; set; } public string Use { get; set; }
}

C#在Linux下获取文件夹信息(所在磁盘总大小,使用空间,已用空间,使用率)的更多相关文章

  1. linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令.   /dev:设备特殊文件.   /etc:系统管理和配置文件.   /etc/rc.d:启动的配 置文件和脚本.   /ho ...

  2. 【转】linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  3. Linux下各文件夹的结构说明及用途介绍(转载)

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  4. 【转载】Linux下各文件夹的含义和用途

    原文地址:https://www.cnblogs.com/lanqingzhou/p/8037269.html Linux下各文件夹的含义和用途 Linux根目录”/“下各个系统文件夹的含义和用途 1 ...

  5. linux下各文件夹的结构说明及用途介绍:Linux目录结构介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  6. Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作

    (11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...

  7. .net core在Linux下获取AD域信息

    .net core在Linux下获取AD域信息 .net Core 2.1.4 .net core现在System.DirectoryServices只支持Windows平台下使用. 参考: http ...

  8. Linux下的文件夹创建命令使用实践

    [文章摘要] 本文以实际的C源程序为样例,介绍了Linux下的文件夹创建命令(mkdir)的用法.为相关开发工作的开展提供了故意的參考. [关键词] C语言  Linux  文件夹创建  makefi ...

  9. cocos2d-x3.2下获取文件夹下所有文件名的方法

    这里提供一个函数获取文件夹下所有文件名的方法,直接上代码了. 原文地址:http://blog.csdn.net/qqmcy/article/details/36184733 // //  Visib ...

随机推荐

  1. 手机端打开调试工具,模拟console.log

    将下列代码考入需要调试页面即可 <script src="//cdn.jsdelivr.net/npm/eruda"></script> <scrip ...

  2. CAD使用GetxDataString读数据(com接口)

    主要用到函数说明: MxDrawEntity::GetxDataString2 读取一个字符扩展数据,详细说明如下: 参数 说明 [in] LONG lItem 该值所在位置 [out, retval ...

  3. 小b和矩阵

    2486 小b和矩阵 2 秒 262,144 KB 5 分 1 级题   小b有一个m行n列的矩阵. 她会从(1,1)开始,顺时针螺旋访问该矩阵,每个元素恰好被访问一次. 请你按小b的访问顺序输出每个 ...

  4. php生成订单号-当天从1开始自增

    /** * 生成订单号 * -当天从1开始自增 * -订单号模样:20190604000001 * @param Client $redis * @param $key * @param $back: ...

  5. wdcp 打开网页显示 Apache 2 Test Page powered by CentOS -- 来自辉哥博客

    是因为更新过系统,安装并更新了系统自带的apache 执行这个命令即可 #ln -sf /www/wdlinux/init.d/httpd /etc/rc.d/init.d/httpd#reboot ...

  6. windows 下安装 RabbitMQ

    一.安装 RabbitMQ 前需要先安装 Erlang http://www.erlang.org/downloads 下下载对应版本的安装文件进行安装. 安装完成后配置环境变量: ERLANG_HO ...

  7. 神经网络(NN)+反向传播算法(Backpropagation/BP)+交叉熵+softmax原理分析

    神经网络如何利用反向传播算法进行参数更新,加入交叉熵和softmax又会如何变化? 其中的数学原理分析:请点击这里.

  8. CF1065D Three Pieces

    题目描述:给出一个n*n的棋盘,棋盘上每个格子有一个值.你有一个子,要求将这个子从1移到n*n(去k时可以经过比k大的点). 开局时它可以作为车,马,相(国际象棋).每走一步耗费时间1.你也可以中途将 ...

  9. Linux基础学习一

    swap:虚拟内存ctrl+a:跳到命令首部 ctrl+e:跳到命令尾部alias:指令别名cp -r:递归复制粘贴mv 源路径 目标路径:移动操作 (如果提示是否覆盖,在mv前加\即可不提示:\mv ...

  10. oracle亲手安装过程

    适用于centos6 radhat6版本 1.检查依赖库: rpm -q binutils compat-libcap1 compat-libstdc++ compat-libstdc++.i686 ...