linux磁盘信息文件,linux系统获取硬盘使用信息

2023-11-06

1、df命令

Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况。df命令经常用的参数为:

a:显示全部的档案系统和各分割区的磁盘使用情形

i:显示i -nodes的使用量

k:大小用k来表示 (默认值)

t:显示某一个档案系统的所有分割区磁盘使用量

x:显示不是某一个档案系统的所有分割区磁盘使用量

T:显示每个分割区所属的档案系统名称

常用命令:df -hi

举例截图如下所示

1591d3accf5497abe52611683e06439d.png

2、du命令

du命令用来查询档案或目录的磁盘使用空间,通过man获取du命令的详细介绍。常用的命令参数如下:

a:显示全部目录和其次目录下的每个档案所占的磁盘空间

b:大小用bytes来表示 (默认值为k bytes)

c:最后再加上总计 (默认值)

s:只显示各档案大小的总合 (summarize)

x:只计算同属同一个档案系统的档案

L:计算所有的档案大小

常用命令:du -ah

举例操作如下图所示:

f956ed6ef9b5f8739f175fba23acbce4.png

3、statfs结构及函数

之前在看APUE时候,在第四章文件和目录中,讲到了获取文件信息的stat结构,通过stat结构可以获文件的大小,创建时间,修改时间,用户id,组id等等。man上stat结构及操作函数如下图所示:

91ab131d421e819c900a8ee5a577529a.png

9162a2679878b72aa57a4924350698c9.png

今天主要总结学习一下获取硬盘信息的statfs结构,通过statfs结构的信息计算出路径所在的磁盘使用情况。man上关于statfs介绍如下所示:

dbc579be84991369b9f9289ecf0109c4.png

statfs结构的中文意思如下所示:

struct statfs

{

long f_type; /* 文件系统类型*/

long f_bsize; /* 经过优化的传输块大小*/

long f_blocks; /* 文件系统数据块总数*/

long f_bfree; /* 可用块数*/

long f_bavail; /* 非超级用户可获取的块数*/

long f_files; /* 文件结点总数*/

long f_ffree; /* 可用文件结点数*/

fsid_t f_fsid; /* 文件系统标识*/

long f_namelen; /* 文件名的最大长度*/

};

b4b6dfc3368f5c1d7072d56a5dcf7184.png

statfs结构中可用空间块数有两种f_bfree和 f_bavail,前者是硬盘所有剩余空间,后者为非root用户剩余空间,ext3文件系统给root用户分有5%的独享空间,所以这里是不同的地方。这里要强调的是每块的大小一般是4K。因此,要实现与df结果一致的就得在获得块数上乘以4,这样已用、可用、总块数就可以实现。

测试程序如下所示:

#include

#include

#include

#include

int main(int argc, char *argv[])

{

struct statfs disk_info;

char *path = "/home/";

int ret = 0;

if (argc == 2)

{

path = argv[1];

}

if (ret == statfs(path, &disk_info) == -1)

{

fprintf(stderr, "Failed to get file disk infomation,\

errno:%u, reason:%s\n", errno, strerror(errno));

return -1;

}

long long total_size = disk_info.f_blocks * disk_info.f_bsize;

long long available_size = disk_info.f_bavail * disk_info.f_bsize;

long long free_size = disk_info.f_bfree * disk_info.f_bsize;

//输出每个块的长度,linux下内存块为4KB

printf("block size: %ld bytes\n", disk_info.f_bsize);

//输出块个数

printf("total data blocks: %ld \n", disk_info.f_blocks);

//输出path所在磁盘的大小

printf("total file disk size: %d MB\n",total_size >> 20);

//输出非root用户可以用的磁盘空间大小

printf("avaiable size: %d MB\n",available_size >> 20);

//输出硬盘的所有剩余空间

printf("free size: %d MB\n",free_size >> 20);

//输出磁盘上文件节点个数

printf("total file nodes: %ld\n", disk_info.f_files);

//输出可用文件节点个数

printf("free file nodes: %ld\n", disk_info.f_ffree);

//输出文件名最大长度

printf("maxinum length of file name: %ld\n", disk_info.f_namelen);

return 0;

}

测试结果如下所示:

db698d6847c853da9214e80b642ef46b.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux磁盘信息文件,linux系统获取硬盘使用信息 的相关文章

  • UG NX导出2D图纸

    创建图纸 1 同时按下ctrl shift D进入制图页面 点击左上角 新建图纸页 选择视图创建向导调整视图 2 方向 gt 定制的视图 然后指定一个面 点击 完成 导出2D图纸 文件 gt 导出AutoCAD DXF DWG 退出制图 同
  • 【Leetcode041】 最大子数组和

    53 最大子数组和 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 子数组 是数组中的一个连续部分 示例 1 输入 nums 2 1 3 4 1 2 1 5 4 输出 6 解释 连续子数
  • Maven仓库(仓库配置) 配置好你的仓库~

    文章目录 远程仓库的配置 远程仓库的认证 部署至远程仓库 镜像配置 远程仓库的配置 Repositories元素下 可以用repository 子元素声明一个或者多个远程仓库 id 远程仓库的ID 必须唯一 maven自带的中央仓库的id为
  • 使用 OpenSSH 从 PC 机传送文件到CPU板时,CPU板和虚拟机不在一个ip网段无法通信

    本人也是萌新小白 这里主要分享一下自己调试过程中遇到的问题和解决方法 希望能帮到大家 gt lt 项目场景 从PC机的虚拟机的Ubuntu系统传输文件到CPU板系统 问题描述 1 首先是CPU板系统连接不到PC机的网络 2 CPU板系统和P
  • XML - insert

    XML insert 属性 属性 描述 id 命名空间中的唯一标识符 可被用来代表这条语句 parameterType 将要传入语句的参数的完全限定类名或别名 这个属性是可选的 因为 MyBatis 可以通过 TypeHandler 推断出
  • vue项目报错in ./src/app.vue?vue&type=style&index=0&lang=less

    原因 less和less loader版本号过高 解决 先删除原来的再重新安装 npm uninstall less loader npm uninstall less npm install less loader 4 1 0 D npm
  • flutter 设置状态栏的颜色,背景appBar: AppBar( elevation: 0.5, brightness: Brightness.light,

    在有AppBar的界面 状态栏一般有Brightness dark 和Brightness light两种模式 分别是白色的导航栏字体颜色和黑色的字体颜色 appBar AppBar elevation 0 5 brightness Bri
  • 【数据结构】单链表详解

    当我们学完顺序表的时候 我们发现了好多问题如下 中间 头部的插入删除 时间复杂度为O N 增容需要申请新空间 拷贝数据 释放旧空间 会有不小的消耗 增容一般是呈2倍的增长 势必会有一定的空间浪费 例如当前容量为100 满了以后增容到200
  • java混编

    java里面总共有八种基本数据类型 其分别为 byte short char int long float double Boolean 其他都是引用数据类型 而引用数据类型是以对象的形式存在 基本数据类型都可以直接进行运算 没必要先换算成
  • [Python人工智能] 十七.Keras搭建分类神经网络及MNIST数字图像案例分析

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了Keras环境搭建 入门基础及回归神经网络案例 本篇文章将通过Keras实现分类学习 以MNIST数字图片为例进行讲解 基础性文章 希望对您有所
  • 将时间戳转换成标准时间格式

    标准时间格式 2023 02 01 15 08 56 如果是要转成 2023 02 01 15 08 56 将下列代码拼接的字符串 改成 即可 毫秒时间戳转换时分秒 毫秒时间戳为16位 export function getLocalTim
  • [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密

    最近开始学习网络安全相关知识 接触了好多新术语 感觉自己要学习的东西太多 真是学无止境 也发现了好几个默默无闻写着博客 做着开源的大神 接下来系统分享一些网络安全的自学笔记 希望读者们喜欢 上一篇文章分享了解BurpSuite工具的安装配置
  • Klocwork部署的安全最佳实践

    Klocwork是一款静态代码分析和SAST工具 适用于 C C C Java JavaScript Python和Kotlin 可识别软件安全性 质量和可靠性问题 帮助强制遵守标准 阅读本文 您将了解Klocwork的设置步骤 助力您实现
  • 微信小程序使用.concat()等数组连接爆错原因

    微信小程序数组连接爆错 当我们在微信小程序中使用数组连接时有时候会出下以下的错误 js里面的写法如下 this setData goods this data goods concat res data 其原因的是因为在微信小程序的data
  • 【STM32F407电机控制学习笔记】TIM8输出PWM&触发ADC采集电流cubeMX配置

    时钟配置 高速时钟使用外部晶振 HCLK配置为160MHz 方便后续定时器分频 TIM8配置 TIM8的Channel1 Channel3用于输出两路互补的PWM Channel4 PWM不输出 用于触发ADC采样 中心对齐模式1 计数器在
  • 如果更好的做好MES系统运维

    因人因时因地制宜 治疗疾病要根据人体的体质 性别 年龄等不同 以及季节 地理环境以制定适宜的治疗方法 我觉得mes运维也应该采用相同的方式 下面先了解一下常见的三种运维方式 第一种方式 企业有自己的信息中心 不同的人负责不同的模块 员工职责
  • 使用ant-design-pro-vue时,将登录从mock换成后台出现问题(请求出现错误,请稍后再试)

    因为我不是专门的前端 所以搞这个时 困难重重 在使用这个模板时 我想要将登录换成从后台进行响应 在一开始我是通过项目中的mock文件下的auth js来找到对应的响应数据 看到如上图所示 我心想 稳了 结果我后台就按照这个来造了一个测试 结
  • 孔板流量计计算公式_差压式流量计常用计算公式及计算实例

    差压式流量计维修中计算工作是仪表人不可缺少的 在本文分享差压式流量计常用流量计算公式及计算实例 掌握这些干货技术 对用好差压式流量计有事半功倍效果 流量计算公式1 差压式流量计的差压与流量关系的换算差压式流量计的差压与流量的平方成正比 或者
  • 【Django快速开发实战】(30~51)使用Django创建一个基础应用:职位管理系统

    30 遗留系统集成 为已有系统数据库生成管理后台 流程说明 为已有数据库生成管理后台 创建项目和应用 创建新项目 django admin startproject empmanager 创建新应用 django admin startap

随机推荐

  • 基于idea-学生管理系统(list),包含五门课的成绩。

    学生的类 有学生的性别 籍贯 姓名和五门课程的成绩 用private进行封装 同时写出getter和setter方法 package com zheng people public class Student private String
  • Redis学习笔记9:主从复制

    一 主从复制是什么 主从复制 是指将一台Redis服务器的数据 复制到其他的Redis服务器 前者称为主节点 master leader 后者称为从节点 slave follower 数据的复制是单向的 只能由主节点到从节点 Master以
  • java和C#在嵌套类上的差异

    平时不太用java的inner class 也就知道里面inner class可以访问外部对象的实例成员 今天碰巧试了一下C 和java的嵌套类的区别 感觉java的嵌套类其实更像是嵌套对象的样子 而C 的嵌套类则就是类定义的嵌套的感觉只可
  • 使用supervisor使Laravel的queue保持后台常驻

    我的个人博客 逐步前行STEP 一 安装supervisor 1 yum install python setuptools 2 easy install supervisor 二 配置supervisor 1 echo superviso
  • 离10000小时的差距

    03年之前没有 看到程序就烦 03年 04年 ASP写网站 打下一点程序基础 对目前影响应该在100小时左右 05年下半年 06年上半年 学WIN32程序设计 DX等 折合每天3小时到4小时 大约1000小时 06年工作原因 基本可以忽略
  • windows10上传文件到vmware虚拟机

    网上看了很多的方案 有共享文件夹的 也有安装vmware tools的 都试过了不成功 后来使用的ftp工具上传 先使用 ip addr 看虚拟机的IP地址 第二条ens33下面的地址 我本机安装的filezilla 然后远程 默认端口22
  • ELI5:导数,偏导数

    导数 导数就是描述某个事物的变化速率 举个最常见的例子 当人从某地移动到另一地点的时候 速度就是这个移动的导数 因为它描述了移动的变化速率 再继续看 加速度就是速度的导数 因为加速度描述了速度的变化速率 当加速度恒定的时候 我们可以想到 速
  • href 属性 和 target属性

  • 悟空浏览器——青龙羊毛

    青龙羊毛之元宵特辑 六 今日中青看点又迎来了一波黑号 本菜鸡再次中奖 非酋体质 每次必中招 啥也不说了 发个新毛吧 悟空浏览器之前毛毛很多 有个群友和我说过 现在那位群友都褪裙了 毛毛才有脚本 猴哥 猴哥浏览器也是头条系的 不知道能坚持多久
  • 初等代数不等式2

    表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指数是 故 表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指数是 第个参数的指数是 故 即 表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指
  • 【JDK】二、环境变量从jdk17切换为jdk8后不生效的解决办法

    环境变量从jdk17切换为jdk8后不生效的解决办法 一 问题描述 二 环境变量为java17时的截图 三 修改为java8时的截图 四 解决办法 1 原因分析 2 删除jdk17和jdk8默认的配置或者把默认的下移 统一使用自己的 JAV
  • 浅谈vlan中pvid的作用

    vlan中的pvid其实就是处理标签的一种方式 在端口为access模式的时候pvid access端口本身的vlan 也无法单独配置 在端口为trunk的时候pvid是可以根据需求配置的 默认的pvid vlan1 而在trunk端口模式
  • GIT使用(踩坑)

    1 关于远程路径的设置 双反斜线 和 单斜线 的问题 这样写可以 git remote add origin L BottleCapDetection 这样写也可以 git remote add origin L BottleCapDete
  • 如何将本地文件上传至阿里云ECS中

    本人尝试利用SSH Secure Shell Client软件登录阿里云ECS 发现并无法登录 但尝试后发现WinSCP可以对ECS的文件进行操作 偷懒不想使用ssh命令上传文件 同时可视化操作会安心一些 具体操作如下 第一步 开启阿里云E
  • 在IDEA中配置Git

    文章目录 在IDEA中配置Git 开发中IDEA的Git常见操作 初始化并提交项目到远程仓库 项目leader 1 在GitHub中创建远程仓库 2 将maven工程交给Git管理 3 配置忽略文件 4 提交到本地仓库 5 推送到远程仓库
  • react 之 styled-components

    css样式并不像JavaScript语法有作用域 因此css样式作用于全局很容易造成全局污染 为了防止这类问题发生 我们可以遵循CSS的BEM规范 即 blockName elementName modifierName 模块名 元素名 修
  • 【C++泛型编程】模板偏特化、局部类和型别映射(Int2Type,Type2Type)以及型别选择

    1 模板偏特化 模板偏特化是让你在template的所有可能实体中特化出一组子集 下面是一个模板全特化的例子 假设有一个类模板 名为Widget template
  • STM32CubeMX串口配置及库printf打印

    最新版STM32CubeMXV5 0 0已经上传到了网盘 或者自己通过软件在线升级 STM32CubeMX运行环境搭建包含两个部分 首先是 Java运行环境安装 其次是STM32CubeMX软件安装 Java 软件和STM32CubeMX
  • java 之泛型详解

    1 什么是泛型 引入 关于泛型 先来说几句集合 都知道集合是可以存储任意对象 当我们创建一个集合时如果没有声明它的存储类型 那该集合便自动提升为Object类型 提示 在我们创建对象的时候 如果没有明确指出一种数据类型 那么编译器会默认为O
  • linux磁盘信息文件,linux系统获取硬盘使用信息

    1 df命令 Linux下可以用df命令获取硬盘的使用情况 通过man可以获取df命令的详细情况 df命令经常用的参数为 a 显示全部的档案系统和各分割区的磁盘使用情形 i 显示i nodes的使用量 k 大小用k来表示 默认值 t 显示某