linux系統(tǒng)獲取硬盤使用信息
1、df命令
Linux下可以用df命令獲取硬盤的使用情況,通過(guò)man可以獲取df命令的詳細(xì)情況。df命令經(jīng)常用的參數(shù)為:
a:顯示全部的檔案系統(tǒng)和各分割區(qū)的磁盤使用情形
i:顯示i -nodes的使用量
k:大小用k來(lái)表示 (默認(rèn)值)
t:顯示某一個(gè)檔案系統(tǒng)的所有分割區(qū)磁盤使用量
x:顯示不是某一個(gè)檔案系統(tǒng)的所有分割區(qū)磁盤使用量
T:顯示每個(gè)分割區(qū)所屬的檔案系統(tǒng)名稱
常用命令:df -hi
舉例截圖如下所示

2、du命令
du命令用來(lái)查詢檔案或目錄的磁盤使用空間,通過(guò)man獲取du命令的詳細(xì)介紹。常用的命令參數(shù)如下:
a:顯示全部目錄和其次目錄下的每個(gè)檔案所占的磁盤空間
b:大小用bytes來(lái)表示 (默認(rèn)值為k bytes)
c:最后再加上總計(jì) (默認(rèn)值)
s:只顯示各檔案大小的總合 (summarize)
x:只計(jì)算同屬同一個(gè)檔案系統(tǒng)的檔案
L:計(jì)算所有的檔案大小
常用命令:du -ah
舉例操作如下圖所示:
3、statfs結(jié)構(gòu)及函數(shù)
之前在看APUE時(shí)候,在第四章文件和目錄中,講到了獲取文件信息的stat結(jié)構(gòu),通過(guò)stat結(jié)構(gòu)可以獲文件的大小,創(chuàng)建時(shí)間,修改時(shí)間,用戶id,組id等等。man上stat結(jié)構(gòu)及操作函數(shù)如下圖所示:
今天主要總結(jié)學(xué)習(xí)一下獲取硬盤信息的statfs結(jié)構(gòu),通過(guò)statfs結(jié)構(gòu)的信息計(jì)算出路徑所在的磁盤使用情況。man上關(guān)于statfs介紹如下所示:
statfs結(jié)構(gòu)的中文意思如下所示:
struct statfs
{
long f_type; /* 文件系統(tǒng)類型*/
long f_bsize; /* 經(jīng)過(guò)優(yōu)化的傳輸塊大小*/
long f_blocks; /* 文件系統(tǒng)數(shù)據(jù)塊總數(shù)*/
long f_bfree; /* 可用塊數(shù)*/
long f_bavail; /* 非超級(jí)用戶可獲取的塊數(shù)*/
long f_files; /* 文件結(jié)點(diǎn)總數(shù)*/
long f_ffree; /* 可用文件結(jié)點(diǎn)數(shù)*/
fsid_t f_fsid; /* 文件系統(tǒng)標(biāo)識(shí)*/
long f_namelen; /* 文件名的最大長(zhǎng)度*/
};
statfs結(jié)構(gòu)中可用空間塊數(shù)有兩種f_bfree和 f_bavail,前者是硬盤所有剩余空間,后者為非root用戶剩余空間,ext3文件系統(tǒng)給root用戶分有5%的獨(dú)享空間,所以這里是不同的地方。這里要強(qiáng)調(diào)的是每塊的大小一般是4K。因此,要實(shí)現(xiàn)與df結(jié)果一致的就得在獲得塊數(shù)上乘以4,這樣已用、可用、總塊數(shù)就可以實(shí)現(xiàn)。
測(cè)試程序如下所示:
#include <stdio.h>
#include <sys/statfs.h>
#include <sys/vfs.h>
#include <errno.h>
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;
//輸出每個(gè)塊的長(zhǎng)度,linux下內(nèi)存塊為4KB
printf("block size: %ld bytes\n", disk_info.f_bsize);
//輸出塊個(gè)數(shù)
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);
//輸出磁盤上文件節(jié)點(diǎn)個(gè)數(shù)
printf("total file nodes: %ld\n", disk_info.f_files);
//輸出可用文件節(jié)點(diǎn)個(gè)數(shù)
printf("free file nodes: %ld\n", disk_info.f_ffree);
//輸出文件名最大長(zhǎng)度
printf("maxinum length of file name: %ld\n", disk_info.f_namelen);
return 0;
}
測(cè)試結(jié)果如下所示:
- python獲取linux系統(tǒng)信息的三種方法
- Bash 腳本實(shí)現(xiàn)每次登錄到 Shell 時(shí)可以查看 Linux 系統(tǒng)信息
- 使用 Python 獲取 Linux 系統(tǒng)信息的代碼
- Linux系統(tǒng)信息查看常用命令
- Linux、ubuntu系統(tǒng)下查看顯卡型號(hào)、顯卡信息詳解
- Linux系統(tǒng)查看CPU、機(jī)器型號(hào)、內(nèi)存等信息
- 使用Python獲取Linux系統(tǒng)的各種信息
- 詳解linux下查看系統(tǒng)版本號(hào)信息的方法(總結(jié))
- 使用python獲取CPU和內(nèi)存信息的思路與實(shí)現(xiàn)(linux系統(tǒng))
- Linux系統(tǒng)下利用C程序輸出某進(jìn)程的內(nèi)存占用信息
- linux系統(tǒng)使用python獲取cpu信息腳本分享
- linux如何查看系統(tǒng)信息
相關(guān)文章
在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法
這篇文章主要介紹了在Apache服務(wù)器上啟用GZip壓縮靜態(tài)內(nèi)容的方法,通過(guò)配置.htaccess文件即可輕松實(shí)現(xiàn),同時(shí)附帶了一些GZip的常用命令,需要的朋友可以參考下2015-08-08Apache中利用mod_rewrite實(shí)現(xiàn)防盜鏈
自從上次在博客中推薦《you are my everything》以后,服務(wù)器的流量突然多了起來(lái),有幾次甚至導(dǎo)致了VPS的當(dāng)機(jī)。后來(lái)經(jīng)過(guò)分析:盜鏈這個(gè)MP3的網(wǎng)頁(yè)包括諸如QQ空間、校內(nèi)網(wǎng)空間、更有甚者還放到了Taobao小店、個(gè)人博客也有不少,全部作為了背景音樂(lè),并且導(dǎo)致各種爬蟲(chóng)瘋狂抓取這個(gè)文件。找到了問(wèn)題原因就只有一個(gè)辦法了,就是利用Apache的mod_rewrite模塊把盜鏈行為拒之門外。2008-04-04ubuntu系統(tǒng)下禁用utc時(shí)間的設(shè)置方法
這篇文章主要給大家介紹了在ubuntu系統(tǒng)下禁用utc時(shí)間的設(shè)置方法,需要的朋友可以參考下2017-05-05詳解如何使用Spark和Scala分析Apache訪問(wèn)日志
這篇文章主要介紹了詳解如何使用Spark和Scala分析Apache訪問(wèn)日志,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Linux實(shí)現(xiàn)搭建ssh并允許使用root遠(yuǎn)程
這篇文章主要介紹了Linux實(shí)現(xiàn)搭建ssh并允許使用root遠(yuǎn)程方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02CentOS桌面環(huán)境中網(wǎng)卡啟動(dòng)失敗的解決方法
這篇文章主要為大家詳細(xì)介紹了CentOS桌面環(huán)境中網(wǎng)卡啟動(dòng)失敗的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11基于cobbler 實(shí)現(xiàn)自動(dòng)安裝linux系統(tǒng)
這篇文章主要介紹了cobbler 自動(dòng)安裝linux系統(tǒng)的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11Linux之進(jìn)程間通信(共享內(nèi)存【mmap實(shí)現(xiàn)+系統(tǒng)V】)
這篇文章主要介紹了Linux之進(jìn)程間通信(共享內(nèi)存【mmap實(shí)現(xiàn)+系統(tǒng)V】),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03