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; }
}
linux下各文件夹的结构说明及用途介绍
linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /ho ...
【转】linux下各文件夹的结构说明及用途介绍
linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...
Linux下各文件夹的结构说明及用途介绍(转载)
linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...
【转载】Linux下各文件夹的含义和用途