您好,登錄后才能下訂單哦!
作為一名電腦使用者,不懂圖形化操作文件系統就不算會使用電腦。那么作為一名程序員,如果不懂命令行操作 Linux 文件系統,就不敢說自己是一名合格的程序員。我們工作中使用 Unix / Linux 作為應用程序服務器,無非就是把我們編寫好的軟件部署到遠程服務器,其中少不了對文件的各種操作,如果你不會操作文件那么將寸步難行。接下來我們來認識一下 Unix / Linux 文件系統。
在這里我們將討論面向本地磁盤的文件系統(硬盤,CD-ROM,DVD-ROM,USB)。這類文件系統UFS(Unix File System),FAT(File Allocation File 通常是 Windows 和 DOS 系統的文件系統),NTFS(New Technology File System,通常是 Windows NT,2000,XP 的文件系統),UDF(Universal Disk Formt 通常是 DVD 文件系統),HFS+(Hierarchical File System 分級文件系統,例如 Mac OS X),ISO9660 通常為 CD-ROM 文件系統 和 EXT2 擴展文件系統(它是 Linux 默認的內核文件系統)等等。
說了這么多,那我們使用的虛擬機中的 CentOS 7 使用的是什么類型的文件系統呢?使用 df -T 來查看一下。
從 Type 一列我們看到它使用了 xfs 文件系統,這是一種高性能的日志文件系統,誕生于 1993 年,在 2000 年被移植到 Linux 系統上。上面介紹的都是面向磁盤的本地文件系統,其實還有面向網絡的和臨時的虛擬文件系統,例如上圖中的 tmpfs 就是一種面向內存的臨時文件系統。
要想熟練操作文件就必須了解系統的目錄結構,Unix / Linux 使用分層的文件系統結構,"/" 是文件系統的根基,其他的所有的目錄都是從這里開始。我們使用 tree 命令來查看從根目錄開始的目錄結構,只顯示一層深度。如下:
?
bin 目錄主要存放二進制可執行文件,例如上一篇文章我們使用的 passwd,cat,vi 等程序。boot 目錄存放用于啟動系統的文件。dev 目錄存放設備文件。etc 目錄存放系統配置文件,如 用戶信息,hosts 信息。lib 存放共享庫的文件。media 存放掛在的媒體文件。mnt 存放掛在的移動設備文件。opt 額外安裝的軟件可以指定安裝到該目錄下,便于管理。proc 存在系統當前正在運行的進程信息。root 我的系統用戶主目錄。run 未查到相關信息。sbin -> usr/sbin 存放系統管理的必須程序。srv 存放用戶主動產生的文件,對外服務。sys 存放全局設備文件,例如總線控制等。tmp 存放臨時文件。usr 可以存放任意的文件,例如被很多用戶使用的聯機幫助頁。var 存放長度可變的文件,例如日志文件。
要想操作文件,必須先學會文件系統的導航。接下來了解幾個常用的導航命令吧!
也許你已經注意到了,用 ls 命令列出來的文件中的最左邊有一些信息。例如 drwxr-xr-x,第一位代表的就是文件的類型,后面的9位代表的文件的權限。- 代表這是一個文本文件,或者可執行文件。b 代表這是一個塊文件,例如硬盤。c 字符設備文件,如硬盤。d 代表這是一個目錄文件。l 代表這是一個符號鏈接,可以理解為 Windows 系統中的快捷方式。p 代表這是一個管道,用于通訊。s 代表這是套接字,用于通訊。由于我們平時操作會用到符號鏈接,因此我們簡要介紹下符號鏈接。Unix / Linux 使用 inode 來引用文件而不是文件名,inode 在一個分區中是唯一的。符號鏈接有 2 種,硬鏈接 和 軟連接。首先我們來創建一個文件,然后分別為它創建一個硬鏈接和一個軟連接。
?
接下來我們分別對源文件,硬鏈接,軟鏈接進行寫入操作,我們會發現,對它們中任何的一個的寫入操作在其他的上面都會反映出來。
?
既然效果都一樣,那么軟鏈接和硬鏈接究竟有什么區別呢?硬鏈接使用 inode 來實現,軟鏈接使用文件名來實現。因此,如果我們刪除 file 文件,然后創建一個新的 file 文件。此時我們的軟鏈接是依然生效的,而硬鏈接已經失效了。如下實驗數據:
?
我們使用 ls -l 命令查看文件的時候,最左邊開始的字符串反映了文件的權限,如下例:
?
如上圖我們可以清楚的明白各個用戶對于文件的權限在哪里查看,那么對應的 r,w,x 分別就是讀,寫,執行權限。我們可以使用 chmod(change mode)來更改文件的權限,操作的時候有 2 中選擇,一種是使用符號模式,即rwx,另外一種是絕對模式用8 個數字分別代表一種權限。使用 chmod 用戶(a/u/g/o)+/- 權限(rwx) 文件名 命令格式來操作文件權限,實驗結果:
?
?
同時我們也可以使用絕對模式來操作文件權限,例如 chmod 777 file,代表所有用戶都用于對 file 文件的最大操作權限。絕對模式的數字代表的含義如下:
0 無權限,1 執行權限,2 寫入權限,3 執行和寫入權限,4 讀取權限,5 讀取和執行權限,6 讀取和寫入權限,7所有權限。此處留一道腦筋急轉彎,為啥不用 3 代表 讀取權限呢?
程序出錯以后難免要去查看日志文件,此時查看文件的命令就尤為重要。我們可以使用 cat,more,less,head,tail等命令查看文件內容。cat 將內容一股腦全部打印在屏幕上,不適合查看內容多的文件。此時使用 more 就可以,查看完后按 enter 鍵,繼續顯示下一行,less 命令更加強大,可以使用 上下方向鍵來移動。head 查看文件頭部的內容,tail查看尾部的內容。在查看一些不斷輸出的日志文件時候,我們可以使用 tail -f 命令來不斷刷新顯示的內容。
如果有個笨蛋程序員寫了一個死循環的程序,那么避免不了產生一個超級大日志文件撐爆服務器。那么我們如何查看分區的空間使用率呢?df(disk free)顯示磁盤使用情況,例如:df -k
掌握以上命令以后,我們已經可以對 Unix / Linux? 系統的文件一頓操作了,但是強大的系統遠不止這點命令,就讓我們在實戰的過程中,邊用邊學習吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。