Linux運維筆記--第三部

第三部php

3. Linux系統文件重要知識初步講解

  # ls  -lhi     (i: inode,每一個文件前的數字表明文件身份ID;h: human 人類可讀)html

  顯示:25091  -rw-r--r--  1  root  root  81  4月  15  00:33  oldboy.txtjava

  第1列:inode=>index node  索引節點編號。node

  第2列:文件類型及權限(共10個字符,第一個字符爲類型,後9個字符爲文件權限)。python

  第3列:硬連接個數( 詳細參看ln命令的講解)。硬連接是文件的又一個入口。mysql

  第4列:文件或目錄所屬的用戶(屬主)。linux

  第5列: 文件或目錄所屬的組。ios

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

  第七、八、9列:文件或目錄的修改時間。面試

  第10列:實際的文件名或目錄名。

4. Linux系統文件系統重要知識總體介紹

  第2列:2-10個字符  rw-r--r--.  文件權限(r: read ;   w: write   x: 執行;  -:   無)      第11個字符是一個點符號,與SELinux相關。

5. Linux系統文件系統重要知識總體介紹

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

  第五列:文件對應的屬組或用戶主。

6. Linux系統文件系統重要知識inode深度詳解

  inode概述:硬盤要分區,而後格式化,建立文件系統。

  Innode,中文意思是索引節點(index node)。在每一個Linux存儲設備或存儲設備的分區(存儲設備能夠是硬盤、軟盤、U盤.......)被格式化爲EXT4文件系統後,通常都有兩部分:第一部分是Inode(不少個),第二部分是Block(不少個)。Block是用來存儲實際數據用的,例如:照片、視頻等普通文件數據。而inode就是用來存儲這些數據屬性信息的(也就是ls -l的結果),inode包含的屬性信息包括文件大小、屬主、歸屬的用戶主、讀寫權限、文件類型、修改時間,還包含指向文件實體的指針的功能(inode節點 --block的對應關係)等。可是,inode裏惟獨不包含文件名。

  查看inode大小的命令:

  # dumpe2fs  /dev/sda3(1) | grep -i "inode size"

  顯示:Inode size: 256字節

  查看:inode各個分區總量(使用多少,空閒多少,使用百分比)      # df  -i

  查看block總量(硬盤使用狀況)    # df  -h

  有關inode的小結:

  a. 磁盤分區格式化爲ext4文件系統後會生成必定數量的inode和block 。

  b. inode是索引節點,做用是存放文件的屬性信息以及做爲文件的索引(指向文件的屍體block)

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

  d. inode是一塊存儲空間,Centos6非啓動分區inode默認大小256字節,Centos5是128字節。

  e. inode是一串數字,不一樣的文件對應的inode(一串數字)在文件系統裏是惟一的。

7. inode與block重點核心知識13點總結講解

  f. inode號相同的文件,互爲硬連接文件(文件的又一個入口)

  g. 一個額外你見被建立後至少要佔用一個inode和一個 block.

  h. block的大小通常有1k,2k,4k幾種。其中引導分區等爲1k,其餘普通分區爲4k(Centos6) (查看命令 # dumpe2fs  /dev/sda/  | grep  -i "block size" )

  i. 若是一個文件很大,可能佔多個block(4k).

  j. 若是文件很小,至少佔一個block,而且剩餘空間浪費了。

  k. inode大小和總量查看

      # dumpe2fs  /dev/sda3 |egrep -i "block size | inode  size"      ;            # dumpe2fs  /dev/sda3 | egrep  -i "block  count  |  inode count "

  l. 查看inode的總量和使用量命令 df  -i 

  m. 如何生成及指定inode大小  # mkfs . ext4  -b  2048  -I  256  /dev/sdb

8. block重點核心知識總結講解

  有關Block的知識總結:

  a. 硬盤讀取數據是按Block爲單位讀取的。

  b. 一個文件可能佔用多個block,每讀取一個block就會消耗一次硬盤I/O  。

  c. 若是要提高磁盤I/O性能,那麼就要儘量一次性讀取數據儘可能的多。

  d. 一個block只能存放一個文件的內容,不管內容有多少。若是block 4k,那存放1k的文件,剩餘3k 就浪費了。

  e. Block並不是越大越好。Block太大對於小文件存放就會浪費磁盤空間。例如:1000K的文件,BLOCK爲4K,佔用250個BLOCK,BLOCK爲1k,佔1000個BLOCK。 訪問效率誰更高?消耗I/O分別爲250次和1000次。

  f. 大文件(大於16k)通常設置Block大一點,小文件(小於1K)通常設置BLOCK 小一點。

  g. BLOCK太大例如4K,文件都是0.1k,大量浪費磁盤空間。

9. block重點核心知識10點總結講解2

  h. Block太大例如1K,文件都是1000K,消耗磁盤I/O。

  i. 恩健較大時,block 設置大一些會提高磁盤訪問效率。

  j. ext3/ext4文件通常設置爲4K.

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

10. 業務數據大小和block大小設置應用場景選擇利弊說明

  見視頻畫圖說明block佔用空間的理解

11. 企業生產有關inode與block面試題案例

  企業面試題1:一個100M(100000K)的磁盤分區,分別寫入1K的文件或寫入1M的文件,分別能夠寫多少個?

  解答知識點:

  a. 上面的考試題考察的是文件系統inode和block的知識。

  b. inode是存放文件屬性信息的(也包含指向文件實體的指針),默認大小128 byte (C58),256 byte (C 64)

  c. Block是存放文件實際內容的,默認大小1K(boot)或4K(非系統分區默認給4K),通常企業多用4K的block。

  d. 一個文件至少要佔用一個inode及一個block。

  e. 默認較大分區常規企業真是場景狀況下,inode數量是足夠的,而block數量消耗的會更快。

  正確答案:

   a. 默認分區常規狀況下,對大文件來說inode是足夠的。而block數量消耗的會更快,block爲4k的狀況,1M的文件不會有磁盤浪費狀況,因此 文件數量大概爲100/1=100個。

   b. 對於小文件0.1K,inode會消耗的更快。默認分區的時候block數量是大於inode數量的。

       每一個小文件都會佔用一個inode和一個block。因此最終文件的數量:inode會先消耗完,文件總量是inode的數量。

  企業面試題2:若是想磁盤寫入數據提示以下錯誤:No space left on device,經過df -h 查看磁盤空間,發現沒滿,請問可能緣由是什麼?

  解答:多是inode數量被消耗盡了。

  a. df  -i 查看是否耗盡了inode 數量。

  b. 企業工做中郵件臨時隊列/var/spool/clientmquene這裏很容易被大量小文件沾滿致使No space left on device的錯誤。clientmquene目錄只有安裝了sendmail,纔會有。centos5.8默認就會裝

   sendmail ,centos6.6 默認沒有sendmail。

12. Linux系統文件屬性類型介紹及普通文件類型說明

  a. windows裏是經過擴展名(.txt)來區分文件類型的。oldboy.txt

  b. linux裏文件擴展名和文件類型沒有關係。

  c. 爲了容易區分和兼容用戶使用windows的習慣,咱們也會用擴展名文件類型。oldboy.sh ,oldboy.tar.gz

  在Linux系統中,能夠說一切皆文件。文件類型包含有普通文件,目錄文件,塊設備文件,符號連接文件等等。

13. Linux系統文件屬性更多類型介紹

  Linux文件類型分爲如下幾種(帶*號的必需要掌握):

  **b: block(buffered) special      設備文件

     c: character (unbuffered)  special    字符文件

   *****d: directory             目錄文件

          p: named  pipe (FIFO)         管道文件

   *****f : regular file (-)          普通文件

     ***l :  symbolic link ; soft  link      連接文件

   s :  socket                套接字文件

  # mkmod oldboy  c 5 1        建立oldboy爲字符設備文件

  文件類型小結:

  •  - : regular  file    普通文件(*****)
  • d : directory        目錄(*****)
  • l:  link        符號連接或者軟連接文件(***)     快捷方式,它指向文件的實體。
  • 字符文件,塊設備文件:c: character  串口設備、貓    b:   block     硬盤、光驅
  •  *.sock進程之間通訊會用到    s:  sock 
  •  p:  管道文件

14. Linux系統額外你見擴展名介紹

  Linux系統裏常見的文件擴展名以下:

  • 源碼 .tar .tat.gz tgz    .zip    .tar.bz 表示壓縮文件,建立命令通常爲tar 、gzip 、zip等。
  • .sh表示shell腳本文件,經過shell語言開發的程序。
  • .pl表示perl語言文件,經過perl語言開發的程序。
  • .py表示python語言文件,經過python語言開發的程序。
  • .html、.htm、.php、.jsp、.do表示網頁語言的文件。
  • .conf表示系統服務的配置文件。
  • .rpm表示rpm安裝包文件。

  運維開發緣由呢:shell/python/php三者之一,至少會一個,最好會兩個。

15. Linux系統連接的概念介紹 

  在Linux系統中,連接可分爲兩種:一種爲硬連接(Hard Link),另外一種爲軟連接或符號連接(symbolic  link  or  soft  link)。咱們在前面講解過ln這個命令就是建立連接文件的,在默認不帶參數的狀況下,執行ln命令建立的連接是硬連接。

  若是使用ln  -s建立連接則爲軟連接。

  實踐直觀演示理解。

  硬連接:ln  源文件   目標文件

  軟連接:ln  -s  源文件  目標文件(目標文件不能事先存在)   -s  (soft)

16. linux系統屬性硬連接介紹及文件刪除原理初步

  硬連接是指經過索引節點(inode)來進行連接。在Linux(ext2,ext3,ext4)文件系統中,保存在磁盤分區中的文件無論是什麼類型都會給它分配一個編號,這個編號被稱爲硬連接。提示:硬連接文件就至關於文件的另一個入口。硬連接的做用之一是容許一個文件擁有多個有效路徑名(多個入口),這樣用戶就能夠創建硬連接到重要的文件,以防止"誤刪" 原數據。

  在Linux系統中,刪除靜態文件(沒有進程調用)(目錄也是文件)的條件是與之相關的全部硬連接文件均被刪除。

17. Linux系統硬連接知識總結與實踐 

  硬連接的建立:

  直接執行命令"ln  源文件  硬連接文件"便可完成建立硬連接。

  硬連接知識小結:

  1.  具備相同inode節點號的多個文件是互爲硬連接文件。
  2.  刪除硬連接文件或者刪除源文件任意之一,文件實體並未被刪除。
  3.  只有刪除了源文件及全部對應的硬連接文件,文件實體纔會被刪除。
  4.  當全部的硬連接文件及源文件被刪除後,再存放新的數據會佔用這個文件的空間,或者磁盤fsck檢查的時候,刪除的數據也會被系統回收。
  5.  硬連接文件就是文件的另外一個入口(至關於超市的門前,後門同樣)。
  6.  能夠經過給文件設置硬連接文件,來防止重要文件被誤刪。
  7.  經過執行命令"ln  源文件  硬連接文件",便可完成建立硬連接。
  8.  硬連接文件能夠能夠用rm命令刪除。
  9.  對於靜態文件(沒有進程正在調用的文件)來說,當對應硬連接數爲 0(i_link),文件就被刪除。i_link的查看方法(ls -l結果的第三列就是)

  建立硬連接命令:

  1.  # touch  oldboyfile
  2.  # echo "I am raymond linux" >oldboyfile
  3.  # cat  oldboyfile
  4.  # ls -l  oldboyfile
  5.  # ln oldboyfile  oldboyfile_hard_link  (顯示硬連接數爲2)
  6.  # rm -f  oldboyfile
  7.  # cat  oldboyfile_hard_link         (I am oldboy linux)
  8.  # cat oldboyfile         (顯示:沒有那個文件或目錄)   找相同inode編號的多個文件。(例如:inode=141175)
  9.  # find / -type f |xargs ls -lhi | grep 141175  

18. linux系統文件刪除原理深度講解

  文件刪除控制的變量。

  i_link文件的硬連接數量。

  i_count引用計數(有一個陳格許使用i_count+1)

  文件刪除的條件:i_link=0 and i_count=0

19. linux系統文件刪除原理答疑

  1.  被進程佔用的文件能不能刪?能
  2.  如何查看文件是否被進程佔用或者看i_count 。
  3.  如何找回沒有連接指向可是被進程佔用的文件。

20. 企業生產場景文件刪除問題案例準備

  企業案例:若是向磁盤寫入數據提示以下錯誤:No space left on device,經過df -h 查看磁盤空間,發現沒滿,請問可能緣由是什麼?

  解答:多是 inode數量被消耗盡了。

  1.  df -i 查看是否耗盡了inode數量。
  2.  企業工做中郵件臨時隊列/var/spool/clientmquene這裏很容易被大量小文件佔滿致使No space left on device的錯誤。clientmquene目錄只有安裝了sendmail服務,纔會有。 

    Centos5.8默認就會裝sendmail,centos6.6默認沒有sendmail。

       *保留視頻實踐知識。(多看)未了解 *****

21. 企業生產場景文件刪除問題案例準備2

  # df  -h     磁盤分區信息命令

  # du  -sh     /(*)    查看根(/)分區目錄文件的大小

22. 企業生產場景文件刪除原理案例與inode案例

  企業案例:文件刪除生產場景案例解決實戰

  WEB服務器磁盤滿故障深刻解析   (http://oldboy.blog.51cto.com/2561410/612351)     多看本視頻,未了解    (*****)

23.  linux系統目錄的硬連接知識介紹

  以點(.)開頭的文件表明隱藏文件

  # ls  -a 顯示隱藏文件        ls   -al     顯示全部隱藏文件

  #每一個目錄與目錄下的點(當前目錄)互爲硬連接文件。因此目錄有2個入口

24. 有關硬連接數的深度企業面試試題-學生問題

  若是一個目錄含有8個硬連接數。說明該目錄下含有一個當前目錄(.)和7個目錄文件裏上一級目錄(..)。

25.  Linux系統軟連接知識及實踐詳解

  軟連接(soft link)也稱爲符號連接(symbolic link),Linux裏的軟連接文件就相似於windows系統中的快捷方式。Linux裏的軟連接文件其實是一個特殊的文件,文件類型是I 。軟連接文件實際上能夠

  理解爲一個文本文件,這個文件中包含有軟連接指向另外一源文件的位置信息內容。所以,經過訪問這個「快捷方式」就能夠迅速定位到軟連接所指向的源文件實體。

  建立軟連接命令: # ln -s oldboyfile  oldboyfile_soft_link

26. Linux系統軟連接核心知識7點小結

  執行命令 "ln  -s  源文件  軟連接文件「 ,便可完成建立軟連接。

  誤區:建立軟連接源文件是須要存在的,要建立的軟連接文件是不能存在的,是要用ln命令建立的。

  軟連接知識總結:

  1.  軟連接類型windows的快捷方式(可經過readlink查看其指向)
  2.  軟連接相似一個文本文件,裏面存放的是源文件的路徑,指向源文件實體。
  3.  刪除源文件,軟連接文件依然存在,可是沒法訪問指向的源文件路徑內容了。
  4.  失效的時候通常是白字紅底閃爍提示。  oldboy_soft_link_file  --> oldboy  -file  (紅色區域)
  5.  執行命令" ln -s  源文件  軟連接文件 " ,便可完成建立軟連接(目標不能存在)
  6.  軟連接和源連接是不一樣類型的文件,也是不一樣的文件。inode號也不相同。
  7.  刪除軟連接文件能夠用rm命令。

27. 目錄和文件的軟硬連接知識實踐

  看視頻實踐 

28. Linux系統文件連接核心知識7點小結

  有關文件的連接小結:

  經過以上的測試,咱們能夠獲得如下幾個結論:

  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. 源文件和軟連接文件索引節點號不一樣,是不一樣的文件,軟連接至關於源文件的快捷方式,含有源文件的位置指向。

29. Linux系統文件連接核心知識9點小結

  有關目錄連接小結:

  1. 對於目錄,不能夠建立硬連接,但能夠建立軟連接。
  2. 對於目錄的軟連接是生產場景運維中經常使用技巧(例子第二關apache考試題)
  3. 目錄的硬連接不能跨越文件系統(從硬連接原理能夠理解)
  4. 每一個目錄下面都有一個硬連接"."號,和對應上級目錄的硬連接".."  。
  5. 父目錄裏建立一個子目錄,父奴魯的連接數增長1(子目錄都有..來指向父目錄)  ,可是在父目錄裏建立文件,父目錄的連接數不會增長。

  企業面試題:描述Linux下軟連接和硬連接的區別

  解答:在Linux系統中,連接分兩種:一種被稱爲硬連接;另外一種被稱爲符號連接或軟連接。

  1. 弄人不帶參數狀況下,ln命令建立的是硬連接,帶-s參數的ln命令建立的是軟連接。
  2. 硬連接文件與源連接的inode節點號相同,而軟連接文件inode節點號與源文件不一樣。
  3. ln命令不能對目錄建立硬連接,但能夠建立軟連接,對目錄的軟連接會常常被用到。
  4. 刪除軟連接文件,對源文件及硬連接文件無任何影響。
  5. 刪除文件的硬連接文件,對源文件及軟連接文件無任何影響。
  6. 刪除連接文件的源文件,對硬連接文件無影響,會致使其軟連接失效。(紅底白字閃爍狀)
  7. 同時刪除源文件及其硬連接文件,整個文件纔會被真正的刪除。
  8. 不少硬件設備中的快照功能,使用的就相似連接的原理。
  9. 軟連接能夠跨文件系統,硬連接不能夠跨文件系統。

30. 有關軟連接的生產使用案例實戰講解

  1. 軟連接的生產使用案例: 咱們便宜apache軟件時,編譯路徑帶着版本號/application/apache2.2.21(爲了區分版本用,所以路徑比較大),而在訪問目錄時又但願簡便,此時就能夠經過創建一個簡單的軟連接路徑文件ln -s /application/apache2.2.21  /application/apache,來達到方便訪問的目的。有關軟連接的使用建議:生產狀況儘量少或者說合理的建立軟連接,不要過多的使用軟連接,不然在數據進行遷移時會引發麻煩,軟連接過多也會形成目錄看起來很混亂。
  2. 企業生產目錄軟連接做用:

    a. 編譯軟件時指定版本號(/application/apache2.2.23),訪問時但願去掉版本號(/application/apache),能夠設置軟連接到編譯的路徑。全部程序都訪問軟連接文件(/application/apache),當軟件升級高版              本後,只需刪除連接文件重建到高版本路徑的軟連接便可(/application/apache)。

    b. 企業代碼發佈時(php程序),須要把全部代碼傳到一個新發布的臨時目錄或者新的站點目錄。發佈時要麼一個mv,也能夠重建軟連接指向到這個新的臨時目錄揮着新的站點。

    c. 不方便目錄移動,使用ln -s 。

31. 如何獲取知識的源頭

  1. Linux下經過mkdir命令建立一個新目錄/oldboy/etc,它的硬連接數時多少,爲何?
  2. 若是在/oldboy/etc目錄下再常見一個目錄,那麼/oldboy/etc的硬連接數是多少,爲何?

     解答1:硬連接數2個,查看方法爲:ls -ld  /oldboy/etc

          這是由於: a. 建立的目錄自己爲一個硬連接。

                b. 新目錄ett下的隱藏目錄(點號)爲建立的新目錄的又一個硬連接 ,也算一個連接數。所以,硬連接數是2。

     解答2:硬連接數3個。

    經過上面的題,咱們發現ett目錄的inode節點數字編號,和ett目錄下的(.)點目錄。 inode編號是同樣的,而ett目錄下的(..) 兩個點和ett的上級目錄oldboy的inode數字編號是同樣的。

32. Linux文件屬性之用戶和用戶組介紹

  用戶的角色是經過UID和GID識別的。

  UID: User  Identify   用戶ID,至關於各位的身份證,在系統中是惟一 的。

  GID: Group  Identify  組ID,至關於各位的家庭或者大家的學校。

  用戶分爲三類:

  a. 超級用戶:root ( uid = 0 , gid = 0 , uid = 0 的用戶就是超級用戶)         # vi  /etc/passwd   (修改passwd文件,可更改uid,gid) 

  b. 虛擬用戶: 它存在Linux中,知足文件或程序運行的須要而建立的。不能登錄,不能使用,是傀儡。 uid-->gid  (1-->499)

  c. 普通用戶:管理員root建立的用戶,uid-->gid  (500-->65535)

     虛擬用戶Linux安全優化:1. 安裝系統後能夠刪除用不到的虛擬用戶,但最好不刪而是註釋掉,萬一回覆過來。

                 2. 咱們本身部署服務的時候,也會建立虛擬用戶,知足服務的需求:例如:apache, nginx, mysql, nfs, rsync, nagios, zabbix, redis

33. Linux文件屬性之用戶和用戶組關係介紹

  用戶和用戶組的對應關係有:一對一,一對多,多對一和多對多。

  一對一:即一個用戶能夠存在一個組中,也能夠是組中的惟一成員。如 root 。

  一對多:即一個用戶能夠存在於多個用戶組中。

  多對一:多個用戶能夠存在於一個組中,這些用戶具備和組相同的權限。

  多對多: 多個用戶能夠存在多個組中。而且幾個用戶能夠歸屬相同的組。

34. Linux文件屬性之用戶和用戶組的核心文件介紹 

  Linux系統下的帳戶文件主要有/etc/passwd , /etc/shadow , /etc/group , /etc/gshadow文件

  1. /etc/passwd  用戶的配置文件
  2. /etc/shadow       用戶影子口令文件 
  3. /etc/group          用戶組配置文件
  4. /etc/gshadow     用戶組的影子文件 

35. Linux文件屬性之用戶組對應文件內容介紹

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

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

      root                   :x                   :0                    :0                 :root               :/root                  :/bin/bash  

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

  字段名稱        註釋說明

  帳號名稱        用戶的帳號名稱

  帳號密碼        用戶密碼,這是加密的口令

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

  禁止修改密碼的天數      從1970年1月1日起,到用戶能夠更改密碼的天數

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

  警告更改密碼的天數     在用戶密碼過時前多少天提醒用戶更改密碼

  不活動時間            在用戶密碼過時以後到禁用帳戶的天數

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

  標誌                                      保留

  3. group文件中一行的各個字段詳細說明

    字段名稱      註釋說明

    用戶組名                該組的名稱

    用戶組密碼                  一般不須要設置該密碼,因爲安全緣由,該密碼被記錄在/etc/gshadow中,所以,顯示爲"X"。這相似/etc/shadow

     GID                             就是用戶組的ID

     用戶組成員             加入這個組的全部用戶帳號

  4. gshadow文件中一行的各個字段詳細說明

     用戶組名      註釋說明

     用戶組密碼             用戶組密碼,這個段能夠是空的或!,若是是空的或有!。表示沒有密碼

    用戶組管理源帳號         用戶組管理者,這個字段也可爲空,若是有多個用戶組管理者,用,號分割

    用戶主成員                    加入這個組的全部用戶帳號,對錶中多個用戶經過「,」 分割

36. Linux系統文件屬性之各種時間戳介紹

  # ls -l     顯示的時間是修改時間      (文件名在上一級目錄的block,刪文件是產出上一級目錄的block,block受上一級目錄的權限控制)

  # ls -l      --time -style = long - iso    (顯示友好的長格式時間爲:2018-03-23)

  # stat    /etc/hosts     (顯示文件的時間)(顯示文件或文件系統的狀態)

  1.  access:   訪問時間    (find -atime)
  2.  modify:    修改時間,內容發生變化     (find   -mtime)
  3.  change:   變化時間,包含modify,權限,屬主,用戶組都發生改變(find   -ctime) 

37. Linux正則表達式介紹(*****) 

  什麼是正則表達式?

  簡單的說,正則表達式就是爲助理大量的字符串而定義的一套規則和方法。

  例如:假設「@」表明oldboy,「!」表明oldgirl。   echo  "@!"==" oldboyoldgirl "

  經過定義的這些特殊符號的輔助,系統管理員就能夠快速過濾,替換或輸出須要的字符串。

  Linux正則表達式通常以行爲爲單位處理的。

  Linux正則表達式只針對命令三劍客 (grep , egrep , awk, sed)

38. 爲何要使用正則表達式

  在企業工做中,咱們天天作的Linux運維工做中,時刻都會面對大量帶有字符串的文本配置、程序。命令輸出及日誌文件等。而咱們常常會有迫切的須要,從大量的字符串內容中查找符合工做須要的

  特定的字符串。這就要靠正則表達式。所以,能夠說正則表達式就是爲過濾這樣字符串的需求而生的!

  例如:ifconfig的輸出取IP 。    例如:cat  /var/log/message輸出等。

39. 使用正則須要注意的若干問題事項 

  容易混淆的兩個注意事項:

  a. 正則表達式應用很是普遍,存在於各類語言中。例如:php, python,java等。可是,咱們今天將的是Linux系統運維工做中的正則表達式。即Linux正則表達式,最常應用正則表達式的命令就

   grep (egrep),sed,awk換句話說Linux三劍客要想能工做的更高效,那必定離不開正則表達式配合的。

  b. 正則表達式和咱們經常使用的通配符特殊字符是有本質區別的。

  例子: ls *.log這裏的*就是通配符(表示全部),正則表達式的*表示。重複前面的一個字符的0次或屢次。

  注意事項:

  a. linux正則通常以行爲單位匹配處理。

  b. alias grep = 'grep --color = auto',講課是以grep爲例(能夠看到匹配顏色)

  c. 注意字符集: (export  LC_ALL=C)

      咱們要想玩好三劍客,首先就要掌握正則表達式  (找大量例子練習),Linux里正則表達式,主要是awk,sed,grep(egrep)三劍客的正則表達式。

40. Linux基礎正則表達式實戰講解1

  實戰準備:

  1.  調整別名 : # alias  grep = 'grep  --color = auto'  

  2. 注意字符集可能帶來的問題: # export   LC_ALL = C

     基礎正則表達式

  a. ^word  搜索以word開頭的。      vi  ^一行的開頭

  b. word$  搜索以word結尾的。     vi  $一行的開頭

  c. ^$    表示空行,能理解麼?

  例: # grep "^m"  a.txt   (過濾以m開頭的整行)

     # grep "m$"  a.txt   (過濾以m結尾的整行)

     # grep  -v "^$" a.txt   (過濾(去掉)空行所剩下的內容)

41. Linux基礎正則表達式實戰講解2

  d.  .  點表明且只能表明任意一個字符。

  e.  \  例\.就表明點自己,轉義符號,讓有着特殊身份意義的字符脫掉馬甲,還原原型。

   f.  *  例0*重複0個或多個前面的一個字符。

  g.  .*  匹配全部字符。延伸^.*以任意多個字符開頭。*¥ 以任意多個字符結尾。

   例: # grep "."  a.txt    (匹配全部內容,空行除外)

      # grep ".*" a.txt         (匹配全部內容,包括空行)

      # grep "raymo.d"  raymond.txt  (匹配raymo.d,點號表明任一字符)

      # grep "\.$"  raymond.txt     (匹配以點(.)結尾的行的內容)

      # grep "0* "  raymond.txt    (匹配以0開頭的相同的字符串)

42. Linux 基礎正則表達式實戰講解3

  h. [abc]   匹配字符集合內的任意一個字符[a-z A-Z],[0-9]

  i.  [^abc]  匹配不包含^後的任意字符的內容,中括號例^爲取反,注意和...開頭區別。

  j. a\{n,m\}重複n到m次,前一個重複的字符。若是用egrep/sed  -r  能夠去掉斜線。

           \{n,\}重複至少n次,前一個重複的字符。若是用egrep/sed  -r 能夠去掉斜線。

  注意:egrep或sed  -r  過濾通常特殊字符能夠不轉義。

43. Linux核心命令grep多個參數總結

  grep通常經常使用參數:

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

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

  -o: 反顯示出匹配regxp的內容(用於統計出如今文中的次數)

  -i : 忽略大小寫的不一樣,因此大小寫視爲相同                  *****

  -n: 在行首顯示行號                                                         *****

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

  -E: 擴展的grep,即egrep              *****   

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

  提示: -i , -v爲經常使用參數

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

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

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

44. 企業生產場景sed配合正則應用案例1

  例:#ifconfig eth0      (取命令所打印出來的IP地址)

   解答:1. #ifconfig  eth0 | sed  -n 'ip' | sed  -r  ' s# .*addr:##g ' | sed ' s#Bc.*$##g '

      2. # ifconfig eth0 | sed  -n 'ip' | sed ' s#^.*dr: ##g ' | sed ' s#B.*$##g '

45. 企業生產場景sed配合正則應用案例2

  以44節例題爲例 (取命令ifconfig eth0 打印內容中的IP字符串)

  解答:a. # ifconfig eth0 | sed -n 'ip' | sed -r ' s#^.*dr:(.*)  Bc.*$#\1#g '

        b. # ifconfig  eth0 | sed -nr ' 2s#^.*dr:(.*)  Bc.*¥#、1#gP '

相關文章
相關標籤/搜索