歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> Linux基礎介紹【第四篇】,linux基礎第四篇

Linux基礎介紹【第四篇】,linux基礎第四篇

日期:2017/3/3 18:00:19   编辑:學習Linux

Linux基礎介紹【第四篇】,linux基礎第四篇

Linux基礎介紹【第四篇】,linux基礎第四篇


Linux文件和目錄的屬性及權限

命令:

第一列:inode(index node)索引節點編號,文件或目錄在磁盤裡的唯一標識,linux讀取文件首先要讀取到這個文件的索引節點(類似書的目錄)。

第二列:

第1個字符:文件類型,-普通文件,d目錄。(windows擴展名.jpg,.avi)

第2—10個字符rw-r—r--:文件權限(r(read)讀取權限、w(write)寫權限,x(execute)執行權限,-無權限)

第11個字符.:SELINUX相關。

第三列:文件硬鏈接數。文件硬鏈接是文件的又一個入口。硬鏈接inode一樣。

第四列:文件的屬主或用戶。

第五列:文件對應的屬組或用戶組(團體)。

權限對應關系圖:

第六列:文件或目錄的大小。

第七八九列:文件最近修改時間。

第十列:文件或目錄名。

索引節點inode

inode概述

硬盤要分區,然後格式化,創建文件系統。

inode,索引節點(index node)。在每個linux存儲設備或存儲設備的分區(存儲設備可以是硬盤、軟盤、U盤等)被格式化為ext4文件系統後,一般都有兩部分:第一部分是inode(很多個),第二部分是block(很多個)。

block是用來存儲實際數據用的,例如:照片、視頻等普通文件數據。inode就是用來存儲這些數據屬性信息的(也就是ls -l的結果),inode包含的屬性信息包括文件大小、宿主、歸屬的用戶組、讀寫權限、文件類型,修改時間,還包含指向文件實體的指針的功能(inode節點—block的對應關系等),但是,inode唯獨不包含文件名。

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

查看inode大小:

查看inode大小:

查看掛載的磁盤inode使用情況:

查看掛載的磁盤block使用情況:

有關inode的小結:

1、磁盤分區格式化ext4文件系統後會生成一定數量的inode和block。

2、inode的索引節點,作用是存放文件的屬性信息以及作為文件的索引(指向文件的實體)。

3、ext3/ext4文件系統的block存放的是文件的實際內容。

4、inode是一塊存儲空間,c6非啟動分區inode默認大小256字節,c5是128字節。

5、inode是一串數字,不同的文件對應的inode(一串數字)在文件系統裡是唯一的。

6、inode號相同的文件,互為硬鏈接文件(文件的又一個入口)。

7、一個文件被創建後至少要占用一個inode和一個block。

8、block的大小一般有1k、2k、4k幾種,其中引導分區等為1k,其他普通分區為4k(c6)。

9、如果一個文件很大,可能占多個block。

10、如果文件很小,至少占一個,並且剩余空間不能被其它文件使用。

11、inode大小和總量查看。

12、查看inode的總量和使用量命令df -i。

13、生成及指定inode大小mkfs.ext4 -b 2048 -I 256 /dev/sdb1。

block的知識:

1、磁盤讀取數據是按block為單位讀取的。

2、一個文件可能占用多個block。每讀取一個block就會消耗一次磁盤I/O。

3、如果要提升磁盤I/O性能,那麼就要盡可能一次性讀取數據盡量的多。

4、一個block只能存放一個文件的內容,無論內容有多小。如果block 4k,那麼存放1k的文件,剩余3k就浪費了。

5、block並非越大越好。block太大對於小文件存放就會浪費磁盤空間。例如:1000k的文件,block為4k,占用250個block,block為1k,占用1000個block。消耗I/O分別為250次和1000次。

6、大文件(大於16k)一般設置block大一點,小文件(小於1k)一般設置block小一點。

7、block太大例如4k,文件都是0.1k的,大量浪費磁盤空間。

8、block的設置也是格式化分區的時候,mkfs.ext4 -b 2048 -l 256 /dev/sdb。

9、文件較大時,block設置大一些會提升磁盤訪問效率。

10、ext3/ext4文件一般設置為4k。

當前的生產環境一般設置為4k。特殊的業務,如視頻可以加大block大小。

linux的文件類型和擴展名

linux中的文件類型

在linux系統中,可以說一切皆文件。文件類型包含有普通文件、目錄、字符設備文件、塊設備文件、符號鏈接文件等。

普通文件(regular file):第一個屬性為"-",按照文件內容,又大略可分為如下三種:

1、純文本文件(ascii):文件內容可以直接讀到數據,例如:字母、數字等。可以用cat命令讀出文件內容。

2、二進制文件(binary):linux當中可執行文件(命令)就是屬於這種格式。例如cat這個執行文件就是一個二進制文件。

3、數據格式文件(data):有些程序在運行的過程中會讀取某些特定格式的文件,那些特定格式的文件可以被稱為數據文件。例如:linux在用戶登錄時,都會將登錄的數據記錄在/var/log/wtmp那個文件內,該文件是一個數據文件。通過last命令讀出來。cat命令會讀出亂碼。因為它屬於一種特殊格式的文件。

文件類型小結:

1、- regular file普通文件

純文本、二進制文件、數據文件。

2、d directory目錄。

3、l link符號鏈接或者軟鏈接文件。

快捷方式,指向文件的實體。

4、字符文件,塊設備文件

c character串口設備、貓

b block硬盤、光驅。

5、.sock進程之間通信

s sock

6、管道文件

p

linux下擴展名的作用

1、源碼.tar、tar.gz、.tgz、.zip、.tar.bz表示壓縮文件,創建命令tar、gzip、zip等。

2、.sh表示shell腳本文件,通過shell語言開發的程序。

3、.pl表示perl語言文件,通過perl語言開發的程序。

4、.py表示python語言文件,通過python語言開發的程序。

5、.html、.htm、.php、.jsp、.do表示網頁語言的文件。

6、.conf表示系統服務的配置文件。

7、.rpm表示rpm安裝包文件。

linux系統硬鏈接和軟鏈接

在linux系統中,鏈接可分為兩種,一種是硬鏈接(Hard Link),另一種為軟鏈接或符號鏈接(Symbolic Link or Soft link)。

創建硬鏈接:ln 源文件 目標文件

創建軟鏈接:ln -s 源文件 目標文件(目標文件不能事先存在)

硬鏈接

硬鏈接是指通過索引節點(Inode)來進行鏈接。在linux(ex2、ex3、ex4)文件系統中,保存在磁盤分區中的文件不管是什麼類型都會給它分配一個編號,這個編號被稱為索引節點編號(index inode)簡稱inode,即在系統中文件的編號。

在linux文件系統中,多個文件名指向同一個索引節點(inode)是正常且允許的。這種情況的文件就稱為硬鏈接。提示:硬鏈接文件就相當於文件的另外一個入口。硬鏈接的作用之一是允許一個文件擁有多個有效路徑名(多個入口),這樣用戶存儲中的快照功能就應用了這個原理,增加一個快照就多了一個硬鏈接。

為什麼一個文件建立了硬鏈接就會防止數據誤刪呢?

因為文件系統(ex2)的原理是,只要文件的索引節點(inode index)還有一個以上的硬鏈接。只刪除其中一個硬鏈接(即僅僅刪除了該文件的鏈接指向)並不影響索引節點本身和其它的鏈接(即數據文件實體並未被刪除),只有當文件的最後一個鏈接被刪除後,此時如果有新數據要存儲到硬盤上時或者系統通過類似fsck做磁盤檢查的時候。被刪除文件的數據塊及目錄的鏈接才會被釋放,空間被新數據占用並覆蓋。此時,數據就再也無法找回了。也就是說,在linux系統中,刪除靜態文件(沒有進程調用)(目錄也是文件)的條件是與之相關的所有硬鏈接文件均被刪除。

硬鏈接原理圖:

硬鏈接示意圖:

硬鏈接小結:

1、具有相同inode節點號的多個文件是互為硬鏈接文件。

2、刪除硬鏈接文件或者刪除源文件任意之一,文件實體並未被刪除。

3、只有刪除了源文件及所有對應的硬鏈接文件,文件實體才會被刪除。

4、當所有的硬鏈接文件及源文件被刪除後,再存放新的數據會占用這個文件的空間,或者磁盤fsck檢查的時候,刪除的數據也會被系統回收。

5、硬鏈接文件就是文件的又一個入口(相當於超市的前門、後門一樣)。

6、可以通過給文件設置硬鏈接文件,來防止重要文件被誤刪。

7、通過執行命令"ln 源文件 硬鏈接文件",即可完成創建硬鏈接。

8、硬鏈接文件可以用rm命令刪除。

9、對於靜態文件(沒有進程正在調用的文件)來講,當對應硬鏈接數為0(i_link),文件就被刪除。i_link的查看方法(ls -l結果的第三列)。

軟鏈接

軟鏈接(Soft Link)也稱為符號鏈接(Symbolic Link)。linux裡的軟鏈接文件就類似於windows系統中的快捷方式。linux裡的軟鏈接文件實際上是一個特殊的文件,文件類型是i。軟鏈接文件實際上可以理解為一個文本文件,這個文件中包含有軟鏈接指向另一個源文件的位置信息內容,因此,通過訪問這個"快捷方式"就可以迅速定位到軟鏈接所指向的源文件實體。

軟鏈接原理圖:

注意:創建軟鏈接文件是需要存在的,要創建的軟鏈接文件是不能存在的,要用ln命令創建。

軟鏈接小結:

1、軟鏈接類似windows的快捷方式(可以通過readlink查看其指向)。

2、軟鏈接類似一個文本文件,裡面存放的是源文件的路徑,指向源文件實體。

3、刪除源文件,軟鏈接文件依然存在,但是無法訪問指向的源文件路徑內容了。

4、失效的時候一般是白字紅底閃爍提示。

5、執行命令"ln -s 源文件 軟鏈接文件",即可完成創建軟鏈接(目標不能存在)。

6、軟鏈接和源文件是不同類型的文件,也是不同的文件,inode號不同。

7、刪除軟鏈接文件可以用rm命令。

目錄創建軟鏈接:

總結:當刪除原始文件oldboyfile後,其硬鏈接文件oldboyfile_hard_link不受影響,對應的數據依然存在,但是其對應的軟鏈接文件oldboyfile_soft_link失效了,找不到源文件了,此時,可以刪除軟鏈接文件重建,或者創建一個oldboyfile_hard_link的硬鏈接文件oldboyfile。

企業生產軟鏈接作用:

1、編譯軟件時指定版本號(/application/apache2.2.23),訪問時希望去掉版本號(/application/apache),可以設置軟鏈接到編譯的路徑。所有程序都訪問軟鏈接文件(/application/apache),當軟件升級高版本後,只需刪除鏈接文件重建到高版本路徑的軟鏈接即可(/application/apache)。

2、企業代碼發布時(php程序),需要把所有代碼傳到一個新發布的臨時目錄或者新的站點目錄。發布時要麼使用mv,也可以重建軟鏈接指向到這個新的臨時目錄或者新的站點目錄。

3、不方便目錄移動,使用ln -s。

有關文件的鏈接小結

1、刪除軟鏈接oldboyfile_soft_link,對oldboyfile、oldboyfile_hard_link無影響;

全局結論:刪除軟鏈接文件對源文件及硬鏈接文件無任何影響。

2、刪除硬鏈接oldboyfile_hard_link,對oldboyfile、oldboyfile_soft_link都無影響;

全局結論:刪除硬鏈接文件對源文件及軟鏈接文件無任何影響。

3、刪除源文件oldboyfile,對硬鏈接oldboyfile_hard_link沒有影響,但是會導致軟鏈接oldboyfile_soft_link失效;

全局結論:刪除源文件,對硬鏈接文件沒有影響,但是會導致軟鏈接文件失效,呈現紅底白字閃爍。

4、同時刪除源文件oldboyfile,硬鏈接文件oldboyfile_hard_link,整個文件會真正的被刪除。

5、很多硬件設備中的快照功能,就是利用了硬鏈接的原理。

6、源文件和硬鏈接文件具有相同的索引節點號,可以認為是同一個文件或一個文件的多個入口。

7、源文件和軟鏈接文件的索引節點號不同,是不同的文件,軟鏈接相當於源文件的快捷方式,含有源文件的位置指向。

有關目錄鏈接小結:

1、對於目錄,不可以創建硬鏈接,但可以創建軟鏈接。

2、對於目錄的軟鏈接是生產場景運維中常用的技巧。

3、目錄的硬鏈接不能跨文件系統(從硬鏈接原理可以理解)。

4、每個目錄下面都有一個硬鏈接"."號,和對應上級目錄的硬鏈接".."。

5、在父目錄裡創建一個子目錄,父目錄的連接數加1(子目錄裡都有..來指向父目錄)。但是在父目錄裡創建文件,父目錄的鏈接數不會增加。

linux下文件刪除原理

刪除原理描述

linux的文件名是存在父目錄的block裡面,並指向這個文件的inode節點,這個文件的inode節點再標記指向存放這個文件的block的數據塊。我們刪除一個文件,實際上並不是清楚inode節點和block的數據。只是在這個文件的父目錄裡面的block中,刪除這個文件的名字,從而使這個文件名消失,並且無法指向這個文件的inode節點,當沒有文件名指向這個inode節點的時候,會同時釋放inode節點和存放這個文件的數據塊,並更新inode MAP和block MAP今後讓這些位置可以用於放置其他文件數據。

linux下文件刪除的原理

文件刪除控制的變量:

i_link:文件硬鏈接數量

i_count:引用計數(有一個程序使用i_count加1)

文件刪除的條件:

i_link=0 and i_count=0

說明:以上圖形i_link=2和i_count=1。

linux是通過link的數量來控制文件刪除的,只有當一個文件不存在任何link的時候,這個文件才會被刪除。一般來說,每個文件都有2個link計數器i_link和i_count。

i_count的意義是當前文件使用者(或被調用)的數量,i_link是磁盤的引用計數器。當一個文件被某一個進程引用時,對應i_count數就會增加;當創建文件的硬鏈接的時候,對應i_link數就會增加。

對於刪除命令rm而言,實際就是減少磁盤引用計數i_link。這裡就會有一個問題,如果一個文件正在被某個進程調用,而用戶卻執行rm操作把文件刪除了,那麼會出現什麼結果呢?

當用戶執行rm操作刪除文件後,再執行ls或者其他文件管理命令,無法再找到這個文件了,但是調用這個刪除的文件的進程卻在繼續正常執行,依然能夠從文件中正確的讀取及寫入內容。這又是為什麼呢?
這是因為rm操作只是將文件的i_link減少了,如果沒有其它的鏈接i_link就為0了;但由於該文件依然被進程引用。因此,此文件對應的i_count並不為0,所以即使執行rm操作,但系統並沒有真正刪除這個文件,當只有i_link和i_count都為0的時候,這個文件才會真正被刪除。也就是說,還需要解除該進程對該文件的調用才行。

i_link及i_count是文件刪除的真實條件,但是當文件沒有被調用時,執行了rm操作刪除文件後是否還可以找回被刪除的文件呢?

rm操作只是將文件的i_link減少了,或者說置0了,實際就是將文件名到inode的鏈接刪除了,此時,並沒有刪除文件的實體即(block數據塊),此時,如果及時停止機器工作,數據是可以找回的,如果此時繼續寫入數據,那麼新數據就可能被分配到被刪除的數據的block數據塊,此時,文件就會真正的回收了。

實驗:inode耗盡。

查看新增的磁盤:

格式化:

取消自動檢查:

掛載:

查看inode:

創建26220個文件:

上述可以看出inode耗盡,不能繼續創建文件。

磁盤空間未滿:

inode耗盡:

刪除:

查看inode:

總結:ln命令不能對目錄創建硬鏈接,但可以對目錄創建軟鏈接,對於目錄的軟鏈接也是生產場景運維中常用的功能。

linux系統用戶和用戶組

linux用戶劃分:

1、超級用戶

root uid=0 gid=0。

2、虛擬用戶

存在linux中沒有實際意義,滿足文件或者程序運行的需要而創建的。不能登錄,不能使用,UID、GID范圍1——499 。在/etc/passwd中末尾以nologin結尾。

3、普通用戶

管理員root創建的用戶,UID、GID從500開始。

linux系統下的賬戶文件主要有/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow文件

passwd文件中一行的各個字段簡述

賬號名稱:賬號密碼:賬號UID:賬號組GID:用戶說明:用戶家目錄:shell解釋器

shadow文件中一行的各個字段詳細說明

字段名稱

注釋說明

賬號名稱

用戶的賬號名稱

賬號密碼

用戶密碼,這是加密過的口令

最近更改密碼的時間

從1970年1月1日起,到用戶最近一次更改口令的天數

禁止修改密碼的天數

從1970年1月1日起,到用戶可以更改密碼的天數

用戶必須更改口令的天數

從1970年1月1日起,到用戶必須更改密碼的天數

警告更改密碼的期限

在用戶密碼過期前多少天提醒用戶更改密碼

不活動時間

在用戶密碼過期之後到禁用賬號的天數

失效時間

從1970年1月1日起,到用戶被禁用的天數(useradd -f)

標志

保留

ls -l:顯示的時間是修改時間。

文件的時間:

Access: 2016-12-11 20:05:12.647999994 +0800(訪問時間)find -atime

Modify: 2016-12-10 16:02:10.162999297 +0800(修改時間,內容發生變化)find -mtime

Change: 2016-12-10 16:02:10.162999297 +0800(變化時間,包含Modify、權限、屬主、用戶組)find -ctime

stat命令查看時間等的屬性

linux正則表達式

使用正則表達式注意事項:

1、linux正則一般以行為單位匹配處理的。

2、注意字符集,export LC_ALL=C。

基礎正則表達式:元字符意義BRE(basic regular expression)。

1、^word搜索以word開頭的。vi ^一行的開頭。

2、word$搜索以word結尾的。vi $一行的結尾。

3、^$表示空行。

4、.代表且只能代表任意一個字符。

5、\例如\.只代表點本身,轉義符號,讓有著特殊身份意義的字符脫掉馬甲還原原型。

6、*例如o*重復0個或多個前面的一個字符。

7、.*匹配所有字符。^.*以任意多個字符開頭。

8、[abc]匹配字符集合內的任意一個字符[a-zA-Z],[0-9]。

9、[^abc]匹配不包含^後的任意一個字符。

10、a\{n,m\}重復n到m次前面一個重復的字符。如果用egrep、grep -E或sed -r可以去掉斜線。

\{n,\}重復至少n次前面一個重復的字符。

\{,m\}無效

\{n\}重復n次前面一個重復的字符。

擴展的正則表達式:

1、+重復一個或一個以上前面的字符。

2、?重復0或一個0前面的字符。

3、|用或的方式查找多個符合的字符串。

4、()找出"用戶組"字符串。

設置別名過濾的內容顯示顏色:

過濾以m開頭

過濾以m結尾

過濾空行顯示

過濾空行顯示行號

匹配以.結尾

精確匹配-o

grep一般常用參數:

-a:在二進制文件中以文本文件的方式搜索數據。

-c:計算找到"搜索字符串"的次數。

-o:僅顯示出匹配regexp的內容(用於統計出現在文中的次數)。

-i:忽略大小寫的不同,所有大小寫視為相同。

-n:在行首顯示行號。

-v:反向選擇,即顯示沒有"搜索字符串"的內容的那一行。

-E:擴展的grep,及egrep。

--color=auto:以特定顏色高亮顯示匹配關鍵字。

-A:After的意思,顯示匹配字符串及其後n行的數據。

-B:Before的意思,顯示匹配字符串及其前n行的數據。

-C:顯示匹配字符串及其前後各num行。

取出ip地址:

方法一:

方法二:

取出HWaddr:

方法一:

方法二:

stat /etc/hosts中取出0644:

http://xxxxxx/Linuxjc/1179791.html TechArticle

Copyright © Linux教程網 All Rights Reserved