Linux文件屬性上

来源:http://www.cnblogs.com/0zcl/archive/2017/05/07/6816396.html
-Advertisement-
Play Games

文件屬性概述(ls -lhi) linux里一切皆文件Linux系統中的文件或目錄的屬性主要包括:索引節點(inode),文件類型,許可權屬性,鏈接數,所歸屬的用戶和用戶組,最近修改時間等內容: 解釋: 第一列:inode索引節點編號(相當於人的身份證,全國唯一)第二列:文件類型及許可權第二列共11個字 ...


 

文件屬性概述(ls -lhi)

linux里一切皆文件
Linux系統中的文件或目錄的屬性主要包括:索引節點(inode),文件類型,許可權屬性,鏈接數,所歸屬的用戶和用戶組,最近修改時間等內容

解釋:

第一列:inode索引節點編號(相當於人的身份證,全國唯一)
第二列:文件類型及許可權
第二列共11個字元:其中第一個字元為文件類型,隨後的9個字元為文件的對應許可權,最後一個字元點號“.”是和selinux有關的一個標識
第三列:硬鏈接個數(詳細參看ln命令的講解);
相當於超市的多個入口,可以從不同的文件入口進入文件,還可以互為備份(消防通道)
第四列:文件或目錄所屬的用戶 文件的所有者(屬主);
linux裡面文件和程式的存在必須要有用戶和組滿足相應的存在需求。
第五咧:文件或目錄所屬的組
第六列:文件或目錄的大小;
第七八九列:文件或目錄的修改時間:預設月日時分
第十列:實際的文件或目錄名
文件名不算文件的屬性

下麵我們以chensiqi文件為例進行說明,具體列的內容參考下上面的圖:

1736707 -rwx-xr-x- 1 root root 35 Oct 28 11:29 chensiqi

  • inode索引節點編號:1736707
  • 文件類型,文件類型是-,表示這是一個普通文件;
  • 文件許可權:文件許可權是rwxr-xr-x,表示文件屬主可讀,可寫,可執行,文件歸屬的用戶組可讀可執行,其他用戶可執行。
  • 硬鏈接個數:表示chensiqi這個文件沒有其它的硬鏈接,因為連接數是1,就是他本身
  • 文件屬主:這個文件所屬的用戶,這裡意思是chensiqi文件被root用戶擁有,註意,是第一個root;
  • 文件屬組:這個文件所屬的用戶組,在這裡是root用戶組,是顯示信息里的第二個root
  • 文件大小:文件大小是35個位元組
  • 文件修改時間:這裡的時間是該文件最後被更新(包括文件創建,內容更新,文件名更新等)的時間,可用如下命令查看文件的修改,訪問,創建的時間

 

索引節點inode

inode 概述

  • 硬碟要存儲數據,首先要分區,然後格式化創建文件系統,最後掛載,才能存數據。
  • Inode,中文意思是索引節點(index node)。在每個linux存儲設備或存儲設備的分區(存儲設備可以是硬碟,軟盤,U盤...)被格式化為ext4(CentOS6.8)文件系統後,一般生成兩部分:第一部分是Inode(很多個),第二部分是Block(很多個)。
  • 這個Block是用來存儲實際數據用的,例如:照片,視頻等普通文件數據。
  • inode就是用來存儲這些數據屬性信息的(也就是ls -l的結果),inode屬性信息包括不限於文件大小,屬主(用戶),歸屬的用戶組,文件許可權,文件類型,修改時間,還包含指向文件實體的指針功能(inode節點--block的對應關係)等,但是,inode裡面唯獨不包含文件名本身文件名不在inode里,一般在上級目錄的block里

身份證號 ==== inode號

  • Inode除了記錄文件屬性的信息外,還會為每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令,即可通過inode的值最快的找到相對應的文件實體。文件,inode,block之間的關係見下圖:

假如有一本書,存儲設備和分區就相當於這本書,Block相當於書中的每一頁內容,而inode就相當於這本書前面的目錄,一本書有很多內容,一個知識點可能有多頁,如果想查找某部分或某知識點的內容,我們一般先查書的目錄,通過目錄能更快的找到我們想要看的知識點的內容。雖然不太恰當,但還是比較形象。

當我們用ls查看某個目錄或文件時,如果加上-i參數,就可以看到inode節點了:

【root@chengliang /】# ls -i

  • 圖第一列inode值259615;查看一個文件或目錄的inode,通過ls命令的-i參數即可。
  • 因為inode要存放文件的屬性信息,所以每個inode本身是有大小的,Centos5系列inode的預設大小是128位元組,而Centos6系列inode的預設大小是256位元組,inode的大小在分區被格式化創建文件系統之後定下來的,格式化以後就無法更改inode大小,格式化前可以通過參數指定inode的大小,但是一般企業工作環境沒這個需求。
  • 不同Centos版本inode大小不同

查看文件系統inode總量以及剩餘量:df -i

查看磁碟使用量: df -h

Inode:存放文件的屬性+文件內容的位置(block的位置)

Block:存放實際數據

 

 企業案例模擬:模擬磁碟滿的情況

磁碟滿的一個特征(no space left on device

1.block 滿了 磁碟空間滿了

2.inode 滿了 創建一個文件就需要一個inode

有關inode的小結

  1. 誕生:磁碟被分區並格式化為ext4文件系統後,會生成一定數量的inode和block
  2. inode稱為索引(目錄)節點,它的作用是存放文件的屬性信息以及作為文件的索引(指向文件的實體block)
  3. ext3/ext4 文件系統的block 存放的是文件的實際內容(數據)。
  4. inode是磁碟上的一塊存儲空間,CentOS6非啟動分區inode預設大小256位元組,CentOS5是128位元組
  5. inode的表現是形式一串數字,不同的文件對應的inode(一串數字)在文件系統里是唯一的。
  6. inode節點號相同的文件,互為硬鏈接文件,可以認為是一個文件的不同入口。
  7. ext3/ext4文件系統下,一個文件至少要占用一個inode和一個block。(文件size比較大)
  8. ext3/ext4文件系統下,正常情況一個文件占用且只能占用一個inode(人和身份證號)
  9. block是用來存儲實際數據的,每個block的大小一般有1k,2k,4k幾種。其中引導分區等為1k,其他普通分區多為4K(CentOS6)
  10. 如果一個文件很大(高清大片4G),需要占用多個block,如果文件很小(0.01k),至少占一個block,並且這個block的剩餘空間就浪費了,即無法在存儲其他數據

有關Block的知識小結

  1. 磁碟讀取數據是按block為單位讀取的
  2. 一個文件可能占用多個block。每讀取一個block就會消耗一次磁碟I/O
  3. 如果要提升磁碟I/O性能,那麼就要儘可能一次性讀取數據儘量的多
  4. 一個block只能存放一個文件的內容,無論內容多小。如果block預設是4K大小,那麼存放一個1K的文件,剩餘3K就不能存放別的文件,只能浪費了
  5. Block並非越大越好。Block太大對於存放小文件就會浪費磁碟空間
  6. 根據業務需求,確定預設的block大小,如果是大文件(大於16K)一般設置block大一點,小文件(小於1K)一般設置block小一點
  7. block太大,例如4K,文件都是0.1K的,大量浪費磁碟空間,但是訪問性能高
  8. block太小,例如1K,文件都是1000K,消耗大量磁碟I/O
  9. 企業里文件都會比較大(一般會大於4K),block設置大一些會提升磁碟訪問效率。
  10. ext3/ext4文件系統(CentOS5和CentOS6),一般都設置為4K
    當前的生產環境一般設置為4K,特殊的業務,如視頻可以加大block大小

 

企業面試題一:

一個100M(100000K)的磁碟分區,分別寫入1K的文件或寫入1M的文件,分別可以寫多少個?

  • 1K文件雖小,但是block一般預設4K,即使1K的數據也會占用4K大小,比如大家創建一個空文件,然後du -sk 看看大小是多少。(如果大家此時認為應該100000/4的話,那麼你就掉坑了-_-!別忘了存儲數據,消耗的不光是block還有inode,inode預設只有256K(centos6),每個文件至少占用一個block的同時還會占用一個inode)
  • 1M的數據他剛好能被4整除。所以不會浪費空間,大約為100個左右,inode充足。總上對於大文件一般inode是足夠的,大文件基本也不會浪費空間,整除就可以;但是對於小文件來說,inode是不足夠的,因此能夠存儲的數量就是inode的數量

企業面試題二:

如果向磁碟寫入數據提示如下錯誤:No space left on device,通過df -h查看磁碟空間,發現沒滿,請問可能原因是什麼?企業場景什麼情況下會導致這個問題發生?

磁碟沒滿但是不能卸乳文件,最可能的原因就是inode被耗盡了
企業工作中郵件臨時隊列/var/spool/clientmquene或/var/spool/postfix/maildrop這裡很容易被大量小文件占滿導致No space left on device的錯誤。clientmquene目錄只有安裝了sendmail服務,才會有,是sendmail的臨時隊列。centos5.8預設就會裝sendmail,centos6預設沒有sendmail,但是有postfix

 

文件類型及文件擴展名

文件類型介紹

  • windows擴展名讓系統區分不同文件類型,擴展名錯誤導致文件無法打開。
  • linux通過擴展名讓人區分文件類型,為了易讀,錯誤也可以正常使用

例如:

windows圖片文件擴展名:jpg,jpeg,png,gif等
文本文件擴展名:doc,docx,txt,pdf

 

Linux中的文件類型

感覺對於實際應用意義不大,大家只需要知道通過ls -l查看目錄的時候

如果許可權那裡是-rw--r--r--,第一個字元是‘-’就代表是普通文件
如果第一個字元是d例如drw--r--r--.就代表是個文件夾
如果第一個字元是l例如lrw--r--r--,就代表是個軟鏈接

 

Linux下擴展名的作用

在linux中,雖然擴展名沒什麼意義,但是為了相容windows,同時,便於我們大多數windows用戶區分文件的不同,所以,我們還是習慣通過擴展名來表示不同文件的類型。

如下

  1. tar,tar.gz,tgz,zip,tar.bz表示壓縮文件,創建命令一般為tar,gzip,unzip等
  2. .sh表示shell腳本文件,通過shell語言開發的程式
  3. .pl表示perl語言文件,通過perl語言開發的程式
  4. .py表示python語言文件,通過python語言開發的程式
  5. .html,.htm,.php,.jsp,.do表示網頁語言的文件
  6. .conf表示系統的配置文件
  7. .rpm表示rpm安裝包文件

參考博客:http://www.cnblogs.com/chensiqiqi/p/6247146.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一招、mysql服務的啟動和停止 net stop mysql net start mysql 第二招、登陸mysql 語法如下: mysql -u用戶名 -p用戶密碼 鍵入命令mysql -uroot -p, 回車後提示你輸入密碼,輸入12345,然後回車即可進入到mysql中了,mysql的提 ...
  • 整體結構 首先創建一個名為employee的資料庫 create database employee; 然後在該資料庫下建一張表 然後就是項目和資料庫進行聯繫,然後操作資料庫(增刪改查) 如果看了上一個項目大家應該被每次操作都要重新連接資料庫而煩惱,而且代碼具有高度的重覆性,那麼我們把相同的代碼封裝 ...
  • 如何讓一個表的時間欄位,隨著用戶對該行操作修改時自動更新 顯示表的所有欄位 數值列類型取值範圍及占用位元組 字元串列類型最大尺寸及占用位元組 時間列類型取值範圍及占用位元組 ...
  • Cygwin Unable to get setup from * 錯誤 解決方案 是因為用自定義鏡像站點,比如 http://mirrors.xdlinux.info/cygwin/x86_64/ 安裝x86_64位Cygwin時,因為多加了/導致Cygwin安裝程式找不到steup 換成如下即可 ...
  • shell的性質 Linux系統的shell相當於操作系統的“一層外殼”,它是命令語言解釋器,它為用戶提供了使用操作系統的介面。它不屬於內核,而是在內核之外以用戶態方式運行。它的基本功能是解釋並執行用戶打入的各種命令,實現用戶與Linux內核的介面。 個人理解:shell就是普通的用戶態程式,能夠理 ...
  • 前言:學習通配符有點為正則表達式打基礎的感覺……之前學python有學過正則表達式,所以這篇博客學起來還是挺快的。 特殊符號 通配符 他是shell的內置功能通配符,用過DOS的應該很瞭解,也很常用。通配符,指包含這些字元的字元串“?”,“*”,“[]”,{} 通配符含義 >匹配文件名 通配符詳解 ...
  • 不同的軟體的安裝方法是並不相同的。有的軟體只能通過特定的方法來安裝。 在不同的Linux發行版本上安裝同一個軟體的方法也未必相同, 因此有的時候,你在網上找到的在Ubuntu上安裝某個軟體的方法,也許在CentOS上並不能成功。 RPM、YUM、dpkg、apt-get、aptitude ...
  • Linux GSO邏輯分析 ——lvyilong316 (註:kernel版本linux 2.6.32) GSO用來擴展之前的TSO,目前已經併入upstream內核。TSO只能支持tcp協議,而GSO可以支持tcpv4, tcpv6, udp等協議。在GSO之前,skb_shinfo(skb)有兩 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...