第三次作業

第三次作業

一、軟鏈接與硬鏈接的區別   

硬鏈接就是同一個文件使用了多個別名(他們有共同的 inode)。

硬鏈接可由命令 link 或 ln 創建,如:

1
2
#link oldfile newfile 
#ln oldfile newfile

  由于硬鏈接是有著相同 inode 號僅文件名不同的文件,因此,刪除一個硬鏈接文件并不影響其他有相同 inode 號的文件。有防止誤刪除的功能

  硬連接大小和源文件一樣

  硬鏈接不能對目錄進行創建,只可對文件創建。


  軟鏈接(也叫符號鏈接)與硬鏈接不同,文件用戶數據塊中存放的內容是另一文件的路徑名的指向。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。不能防止誤刪除

  軟鏈接大小和源文件不一致

  軟鏈接可對文件或目錄創建。

1
2
ln -s old.file soft.link
ln -s old.dir soft.link.dir

加-s選項表示創建的是軟鏈接。

刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接就變成了死鏈接。


二、inode 工作原理

  1、什么是inode

  首先文件的數據分為兩部分:元數據和數據(內容)

  文件存儲在硬盤上,而硬盤的最小存儲單位叫做“扇區”(Sector)。每個扇區存儲512字節(相當于0.5KB)

  而操作系統讀取硬盤的時候,不會一個個扇區的讀取,而是一次連續讀取多個扇區,即一次性讀取一個“塊”(block)。這種有多個扇區組成的“塊”,是文件存取的最小單位,“塊”的大小,最常見的是4KB,即連續八個sector組成的一個block

  文件的數據存儲在“塊”中,那文件的元數據也要存儲在一個地方,而這個地方就叫做inode,中文為:“索引節點”。

  也就是說inode=存儲文件元數據的區域=索引節點

 2、inode的組成

   inode存儲文件元數據的,包括文件的權限、所屬主、組、時間戳、大小等;具體情況如下

   文件的讀(r)、寫(w)、執行(x)權限;例如-rwxrw-rw-

   鏈接數,既有多少文件名指向這個inode(也就是硬鏈接數)

   文件數據block的位置

   文件的大小字節數byte

   文件的擁有者屬主User ID=UID

   文件的屬組Group ID=GID

   文件的時間戳:共有三個,atime=訪問時間;mtime=修改(內容)時間;ctime=更改(由元數據)時間(因為inode存儲元數據,所以也可以說是修改inode的時間)

wKioL1eelliBLsYdAAEOiVl4l5Y512.jpg

可以用stat命令查看文件的inode信息:

wKiom1eelnOz52kcAACJsVQyNh4780.jpg從上圖我們可以看到用stat查看文件的元數據的內容都有哪些(除了文件名),而事實上文件除文件名以外的所有信息都存儲在inode中,而文件名另有存儲區。

 3、inode的大小

   inode中存儲著文件的元數據,所以inode也是要占用存儲空間的;所以在硬盤格式化時,操作系統會自動將硬盤分成兩個區域。一個是數據去,存放文件數據,一個是inode區,存儲文件的元數據。inode節點大小在格式化時,就會設定。一般是128字節或256字節。例如一塊1GB硬盤,每個inode節點大小為128字節,每1KB設置一個inode,那么inode table的大小就會達到128MB,占整塊硬盤的12.8%


查看每個分區的inode總數和使用率,可以使用df -i命令

wKiom1eemlKzU0qgAAB5jzAq-KY321.jpg

  由于每個文件都要有inode,而每個分區提供的inode也是有限的,所以存在硬盤空間未滿,inode已滿,而不能夠創建新文件的情況

  4、inode號碼

    在每個分區中每一個inode都有唯一一個號碼,不同分區,inode號碼有可能相同,所以每個分區都有自己的inode table,操作系統通過分區內唯一的inode號碼來識別查找不同的文件。

    而在linxu系統內部,系統本身是不使用文件名來識別文件的,文件名在系統內只是inode號碼便于用戶使用的別稱。在實際操作過程中,用戶像是通過文件名找到并對文件進行操作,但事實上在系統中,系統顯示用文件名找到對應的inode號碼–>獲取inode的信息(元數據和指針)–>找到文件數據所在的數據塊block,最后讀出數據的。

可是使用ls -i命令查看文件的inode號碼

1
ls -i 文件

  5、目錄文件

      在linux系統中,目錄也是文件;而與inode table對應的這是目錄項(dirent)。每個目錄項,由兩部分組成:包含文件的文件名,以及該文件名對應的inode號碼

 可以用ls -i命令查看目錄的inode號碼

1
ls -i 目錄

  6、inode的特殊作用

    1. 有時,文件名包含特殊字符,無法正常刪除。這時,直接刪除 inode 節點,就能起

到刪除文件的作用。

    2. 移動文件或重命名文件,只是改變文件名,不影響 inode 號碼。

    3. 打開一個文件以后,系統就以 inode 號碼來識別這個文件,不再考慮文件名。因此,

通常來說,系統無法從 inode 號碼得知文件名。

    4.刪除文件,實質上是刪除對應文件的inode,而數據并沒有刪除,如果恢復數據,則恢復對應的inode號碼即可;而如果有新文件占用原inode號碼,則數據會被覆蓋


三、課前預習

  1 、將/etc/issue 文件中的內容轉換為大寫后保存至/tmp/issue.out 文件中

1
cat /etc/issue |tr [[:lower:]] [[:upper:]] > /tmp/issue.out

2 、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out 文件中

1
who |tr [[:lower:]] [[:upper:]] > /tmp/who.out

3 、一個linux 用戶給root 發郵件,要求郵件標題為”help” ,郵件正文如下:

Hello, I am  用戶名,the system version is here,please help me to

check it ,thanks!

操作系統版本信息

1
2
3
4
5
6
7
mail -s Help root <<end
> Hello,I am `whoami`,
> the system version is here,
> please help me to check it,
> thank!
> `lsb_release`
> end

       或者可以將命令 whoami 換成$(echo $USER)也可以

4 、將/root/ 下文件列表,顯示成一行,并文件名之間用 空格 隔開

1
ls /root/ |tr "\n" " "

注意:ls輸出結果在終端上之間顯示是橫向排序!但是實際輸出結果在重定向到文本文件中時,是以列的形式排序,所以要注意

wKioL1efSbzzu2y7AAB-92jimW4979.jpg

     命令解析:ls /root/產生的文件列表結果通過管道傳給tr命令

            tr "\n" " " > Output.txt   是將列表信息中的換行符 \n 替換成空白字符(空格)然后把輸出結果重定向到Output.txt文本文件中

5 、file1 文件 的 內容為:”1 2 3 4 5 6 7 8 9 10”  計算出所有數字的總和

1
2
echo "1 2 3 4 5 6 7 8 9 10" > file1
cat file1 |tr " " "+" |bc

6 、刪除Windows 文本文件中的'^M' 字符

  現在windows創建文本文件test.txt,輸入a、b、c、d每個字母都回車換行

1
2
3
cat -A test.txt        #這一步是查看text.txt文件內的^M符號的,不看也行
cat -A test.txt |tr -d "\r" >Output.txt
cat Output.txt                   #檢查結果

命令解析:window中的換行符號是^M,而linux的是\n所以很容易識別

       利用cat -A test.txt將包括^M在內的所有內容通過管道 | 傳給tr

       tr -d "^M" >Output.txt  將傳過來結果中的"^M"刪除,然后輸出重定向到Output.txt文本文件中

7 、處理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 ”,只保留其中的數字和空格

1
echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 ' |tr -cd [[:digit:]" "]

命令解析:echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 '將結果傳遞給tr

      值得注意的是在此字符串中存在!$,而如果不用''強引用,則會相當于上一命令最后一項

      tr -cd [[:digit:]" "]  中 -c 為補集  -d 是刪除  所以意思是將數字和空白字符的補集,即除了數字和空白字符意外的刪除

8 、將PATH 變量每個目錄顯示在獨立的一行

1
echo $PATH |tr ":" "\n"

命令解析:echo $PATH 得到的變量結果通過管道 | 傳給tr,而$PATH變量中分割符為“:”

      tr ":" "\n"   將分割符“:”替換成“\n”換行符

9 、刪除指定文件的空行 

1
cat Output.txt |tr -s "\n"

命令解析:cat Output.txt 將結果傳給tr

       tr -s "\n" 將重復的"\n" 換行符刪掉壓縮

10、將文件中每個單詞(字母)顯示在獨立的一行,并無空行

1
cat Output.txt |tr -cs [:alpha:] "\n"

命令解析:cat Output.txt將結果傳遞給tr

      tr -cs [:alpha:] "\n"   -c 將大小寫字母[:alpha:]的補集,即除字母意外的,全部替換為換行符"\n",然后利用 -s 將除字母意外的重復的空白字符壓縮刪除;

原創文章,作者:NameLess,如若轉載,請注明出處:http://www.www58058.com/28163

(0)
NameLessNameLess
上一篇 2016-08-03 19:12
下一篇 2016-08-03 19:16

相關推薦

  • Liunx 磁盤管理

    我們先來了解一下在Linux中磁盤的命名方式 命名:/dev/DEV_FILE    Sd :表示SCSI硬盤    Sda:表示SCSI硬盤中第一塊硬盤,b表示第二塊,以此類推 在Linux上次磁盤主要有兩種分區方式MBR和GPT MBR分區格式最多有4個分區,可以是4個主分區,或者3個主分區和1個擴展分區,第一個邏…

    2017-08-21
  • Linux進程與作業1

    Linux進程與作業 操作系統的組成部分:硬件,kernel,lib, 系統調用–>調用kernel lib調用–> 庫調用,kernel調用 運行用戶代碼–>用戶模式–>用戶空間; 運行kernel–>內核模式–>內核空間; 內核的功用:進程管理,文件系統,網絡功能,內存管理,驅動程序,安全功能 C…

    Linux干貨 2016-08-02
  • Linux進程及作業管理

    process 運行中的程序的一個副本,是被載入內存的一個指令集合 進程ID(Process ID,PID)號碼被用來標記各個進程 UID、GID、和SELinux語境決定對文件系統的存取和訪問權限, 通常從執行進程的用戶來繼承 存在生命周期 task struct:Linux內核存儲進程信息的數據結構格式 task list:…

    Linux干貨 2016-09-11
  • 如何修復系統問題–實驗

    實驗一: MBR的數據被破壞了,系統無法開機啟動,如果有光盤,會自動啟動光盤,因為在檢查的時候,認為是沒有硬盤設備的 dd if=/dev/zero of=/dev/sda bs=1 count=446 1. 進入光盤的救援模式中2. 切根  chroot /mnt/sysimage/   再使用 grub-install /d…

    Linux干貨 2017-09-03
  • ping命令的部分用法

    Linux系統的ping命令是常用的網絡命令,它通常用來測試與目標主機的連通性,我們經常會說“ping一下某機器,看是不是開著”不能打開網頁時會說“你先ping網關地址192.168.1.1試試”。它通過發送ICMP ECHO_REQUEST數據包到網絡主機(send ICMP ECHO_REQUEST to&nbsp…

    Linux干貨 2017-07-30
  • Centos6.8 搭建LAMP平臺

    Centos6.8 搭建LAMP平臺 §·運行環境介紹 LAMP的運行環境介紹: L代表: Linux  Centos 6.8 A代表: apache  httpd-2.2.15-53.el6.centos.x86_64 M代表:MySQL  mysql-server-5.1.73-7.el6.x86_64 P代表: php &…

    Linux干貨 2016-10-12
欧美性久久久久