Linux文件的類型
在Linux中文件的類型是通過文件權限的首位定義的,可以分為以下幾類。
1.普通文件
普通文件包括源程序文件、腳本文件、可執行程序文件及各種數據文件。普通文件的文件類型標識位為"-",使用ls命令可以查看文件的類型,例如:
- #ls??-l??suple ?
- -rw-r--r--???1?root?root???540?07-23?08:31?suple?
2.目錄文件
目錄實際上是一種特殊的文件。目錄下可以包含文件和子目錄。目錄文件的類型標識位為"d",如下所示:
- #ls??-l??tmp ?
- drwxrwxrwt??21?root?root??4096?07-25?22:49?tmp?
3.套接字文件
套接字(socket)是用來進行網絡通信的常用方法之一。Linux文件系統可以通過套接字文件實現網絡通信。套接字的文件類型標識位為"s",例如:
- #ls??-l??x1 ?
- srwx------??2?root?root??0?07-25?17:49?x1?
4.命名管道
文件系統通過命名管道文件可以實現進程間的通信。命名管道的文件類型標識位為"p",例如:
- #ls??-l??p1 ?
- prwx------??2?root?root??0?07-25?17:59?p1?
5.設備文件
Linux系統將設備識別為特殊的文件進行處理。設備文件可以分為兩類:字符設備和塊設備。字符設備的文件類型標識位為"c",打印機、鍵盤等都屬于字符設備。磁盤、磁帶等都屬于塊設備,塊設備的文件類型標識位為"b"。在系統的/dev目錄下存放了大量的設備文件,例如字符終端tty1的設備文件為/dev/tty1。使用ls命令可以看到字符設備的首字符為"c",塊設備的首字符為"b",如下所示:
- #ls??-l??/dev/tty1 ?
- crw-------??1?root?root?????4,????1?07-25?05:44?tty1 ?
- #ls??-l??/dev/sda1 ?
- brw-r-----??1?root?disk?????8,????1?07-25?05:41?sda1?
6.鏈接文件
為了使用、管理的方便和節省磁盤空間,Linux 允許一個物理文件有一個以上的邏輯名,即可以為一個文件創建一個鏈接文件,用來表示該文件的另一個名字。不同的鏈接文件可為之指定不同的訪問權限,從而實現既可共享,又可安全控制的目的。
Linux文件系統中有兩類鏈接文件:一類叫做硬鏈接,一類叫做符號鏈接。硬鏈接的文件類型標識位與被鏈接的文件相同。不帶參數使用ln命令可以建立硬鏈接文件,例如對sysv文件建立硬鏈接的命令如下:
- #?ls??-il??sysv ?
- 390162?-rw-r--r--?1?root?root?0?07-26?00:51?sysv ?
- #?ln??sysv?syslink ?
- #?ls??-il??sysv?slink ?
- 390162?-rw-r--r--?2?root?root?0?07-26?00:51?slink ?
- 390162?-rw-r--r--?2?root?root?0?07-26?00:51?sysv??
從本例中可以看出硬鏈接文件slink與被鏈接的文件sysv指向同一個i節點(節點編號390162),硬鏈接與被鏈接的文件具有相同的文件類型標識位"-",建立硬鏈接后,文件的鏈接數由1變為2。
實際上硬鏈接只是源文件的一個硬復制,它們在目錄文件中的入口項指向的是同一個i節點。只有當硬鏈接的全部鏈接被刪除時才能夠釋放此i節點。用戶對這個文件所做的任何修改,所有的硬鏈接都可以同步看到。硬鏈接的文件必須在同一個文件系統中,目錄不能建立硬鏈接。
建立符號連接可以使用帶參數"-s"的ln命令,符號鏈接只是指定到真實文件的訪問路徑上,與源文件的i節點號不同。如果源文件被刪除,符號鏈接就被損壞了。符號鏈接的文件類型標識位為"l"。例如為文件ftpuser建立符號鏈接fuser,命令如下所示:
- #?ls??-il??ftpuser ?
- 390161?-rw-r--r--?1?root?root?0?07-26?01:17?ftpuser ?
- #?ln??-s??ftpuser??fuser ?
- #?ls??-il??ftpuser?fuser ?
- 390161?-rw-r--r--?1?root?root?0?07-26?01:17?ftpuser ?
- 390162?lrwxrwxrwx?1?root?root?7?07-26?01:18?fuser?- > ?ftpuser ?
- #?rm??ftpuser ?
- rm:是否刪除?一般空文件?"ftpuser"??y ?
- #?ls??-il??ftpuser??fuser ?
- ls:?ftpuser:?沒有那個文件或目錄 ?
- 390162?lrwxrwxrwx?1?root?root?7?07-26?01:18?fuser?- > ?ftpuser?
可以看到ftpuser與fuser的i節點號不同(ftpuser為390161,fuser為390162),fuser的文件類型標識位為"l"。源文件ftpuser被刪除后,符號鏈接文件報錯。
與硬鏈接不同,符號鏈接可以跨文件系統建立,并且可以指定到目錄。硬鏈接與符號鏈接的區別如圖6.3所示。
![]() |
圖6.3? 硬鏈接與符號鏈接 |
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
