Linux快速入门02-文件系统管理
繼續進入Linux文件系統的學習,加油,早日突破MS壓在自己身上的那道束縛。
?
文件屬性基本概念:文件所有者,文件組,其他人。
對上圖來說,-rw-r—r—表示文件的權限,1表示連接數,兩個root分別表示所有者和用戶組,264表示文件大小(單位為B),之后信息為文件修改日期和文件名(.開頭表示隱藏文件)。
這部分最終要的概念就是文件權限,可以將文件權限部分內容分為之后的4個部分來理解,例如對于[-][rwx][r-x][r--],有:
| 部分 | 詮釋 |
| 第一部分[-] | 文件類型,d表示目錄,-表示文件,l表示連接文件(linkfile),b,c等表示設備 |
| 第二部分[rwx] | 文件所有者的權限,可讀、可寫、可執行 |
| 第三部分[r-x] | 文件用戶組的權限,可讀、可執行 |
| 第四部分[r--] | 其他用戶的權限,可讀 |
權限相關常見命令
| 命令 | 詮釋 |
| chgrp | 改變文件所屬用戶組 |
| chown | 改變文件所有者 |
| chmod | 改變文件權限,rwx=4+2+1, chmod 764 |
| cd | 訪問目錄(需要x權限),cd .., ~, .表示相對路徑, cd /xxx表示絕對路徑 |
| Uname –t | 查看內核版本 |
Linux目錄配置標準FHS(FileSystem Hierarchy Standard)如下所示
| ? | 可分享的 | 不可分享的 |
| 不可變的 | /usr軟件放置處 | /etc配置文件 |
| /opt第三方軟件 | /boot開機和內核文件 | |
| 可變動的(跟隨distribution變動) | /var/mail用戶郵件信箱 | /var/run程序相關 |
| /var/spool/news新聞組 | /var/lock程序相關 |
本文最后的附錄中,可以看到Linux中根目錄(/)、/usr目錄(放置可分享但不可變動數據),/var目錄中主要的目錄結構(主要針對常態性變動的文件)。
?
這部分基本上會介紹最為常見的Linux命令,需要熟練掌握。
| 命令 | 詮釋 |
| cd | Change Directory切換目錄 |
| pwd | Print Working Directory顯示當前目錄 |
| mkdir | 新建一個目錄, -p自行創建多層目錄 |
| rmdir | 刪除一個空的目錄, -p連同上層某目錄一起刪除,需要注意這只能刪除空目錄 |
| echo $PATH | 執行文件路徑 |
| ls | 查看文件和目錄, ls –a顯示全部文件,包括隱藏;-d,僅列出目錄本身;-l,顯示詳細信息,包括文件的屬性和權限 |
| cp | 復制,cp [參數] 源文件 目標文件。參數-a表示-pdr;-i若目標文件存在,覆蓋時會詢問;-r遞歸持續復制,用于目錄的復制行為 |
| rm | 刪除文件/目錄,參數-r遞歸刪除,非常危險 |
| mv | 移動文件和目錄,或更名,mv 文件1 [,文件2] 目錄,可以通過mv 文件 新文件名改名 |
| basename | 以及dirname 文件,用于獲取文件名和完整目錄名 |
| 文件內容查閱 | 方式比較多,包括cat,tac(逆序),nl顯示時輸出行號,more,less向后向前翻頁,head,tail只看首尾幾行,od以二進制方式讀取 |
| touch | 修改文件時間或創建新文件 |
| umask | 新建一個文件的的默認權限,默認為0022,這時新建文件的權限時-rw-r—r--,目錄為drwxr-xr-x。注意mask掩碼其實就是對權限的異或操作,022代表去除組和其他用戶的寫權限。 |
| 文件隱藏屬性 | 是9個權限外的權限,對于安全有很大幫助,參數a表示文件只能增加而不能刪除修改,參數i表示文件不能被刪除、改名,設置連接也無法寫入或添加數據,只有root可用 設置文件隱藏屬性:chattr +i attrtest, chattr –i attrtest 顯示文件隱藏屬性:lsattr 文件 |
| 文件特殊屬性 | 比如ls –ld /tmp ; ls –l /usr/bin/passwd,可以看到除rwx外的s和t 簡單來說,就是用戶執行這個2進制文件是會獲得額外的權限,SUID所有者權限,SGID組權限,SBIT目錄權限,其對應的值分別為4,2,1 |
| file | 查看文件類型 |
| which | 腳本文件名查詢,which ifconfig |
| whereis | 文件名的查找whereis ifconfig, 文件名模糊查找locate ifconfig |
| find | 功能更強大的文件查找,參數-uid id,-gid id,這個id可以在/etc/passwd中看到 -user name, -group name, -nouser, -nogroup 查找目錄:find -name dirname?-type d ? |
?
Linux的默認文件系統Ext3的基礎結構主要包括3個主要的概念。
super block:記錄此文件系統的整體信息,包括inode/block的總量、使用量、剩余量,以及文件系統的格式和相關信息。
inode:記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數據所在的block號碼。
block:實際記錄文件的內容,若文件太大,會占用多個block。
比較有意思的是,Linux文件系統使用異步處理方式來保存數據,比如系統加載一個文件到內存并設置其狀態為clean,如果修改了文件就設置為dirty。此時操作都還在內存中,并未寫入到磁盤,系統會不定時的異步寫入,此外Linux VFS虛擬文件系統功能也非常不錯,可以兼容多種不同的文件系統。
?
文件系統操作
| 命令 | 詮釋 |
| df | 文件系統整體磁盤使用量,參數-h以人們易閱讀的方式GB,MB顯示,-i顯示inode數量 |
| du | 評估文件系統的磁盤使用量,-d列出總量 |
| ln | 連接文件,連接包括兩種:類似快捷方式的軟連接(符號連接);通過文件系統inode連接來產生新文件名的硬連接。 Hardlink: ln /etc/crontab . Symbolic link: ln –s /etc/corntab crontab2 |
| fdisk | 磁盤分區:df /, fdisk /dev/vda1, 可以使用m查看命令,d用于刪除分區,n用于新增分區,p顯示分區,q退出,w寫入剛才操作到分區表 |
| mkfs | 磁盤格式化,mkfs –t ext3 /dev/hdc6???? |
| fsck,badblocks | 磁盤檢測,fsck –C –f –t ext3 /dev/hdc6, badblocks –sv /dev/hdc6 |
| mount | 磁盤掛載,mount –a將未掛載的磁盤掛載 mount /dev/hdc6 /mnt/hdc6 |
| umount | 磁盤卸載,umount /dev/hdc6 |
| 磁盤參數修改 | mknod,e2label修改卷標名,tune2fs,hdparm |
| 開機掛載 | /etc/fstab, /etc/mtab |
| Swap內存交換空間的建立 | 先進行分區并partprobe讓內核更新分區表,創建hdc7,之后mkswap /dev/hdc7, free, swapon /dev/hdc7, free, swapon-s |
?
Linux提供了很多不同的壓縮文件和打包格式,但現在主要還在使用的主要為.tar和.tar.gz等。
| 命令 | 示例 |
| gzip/bzip2 | 壓縮:gzip –c node.config > node.config.gz 解壓縮:gzip –d node.config.gz |
| tar打包命令 | 壓縮:tar –jcv –f filename.tar.bz2 xxx目標壓縮文件 查詢:tar -jtv –f filename.tar.bz2 解壓縮:tar –jxv –f filename.tar.bz2 –C xxx欲解壓到的目錄 |
| 備份/恢復文件系統 | 備份步驟: df –h 查看文件系統 dump –S/dev dump -0u –f /root/boot.dump/boot 恢復步驟: restore –t –f /root/boot.dump |
| dd備份磁盤或文件 | dd if=/etc/passwd of=/tmp/passwd.back dd if=/dev/vda1 of=/tmp/mbr.back |
通常來說,會使用tar來備份關鍵數據,而用dd來備份整塊分區或磁盤。
此外還有一些備份工具,需要時再查詢就好,比如:mkisofs新建鏡像文件;cdrecord光盤刻錄工具;
?
| 目錄 | 應放置文件內容 |
| /bin | 執行文件,可以在單用戶維護模式使用,主要有cat,chmod,mkdir,bash等命令 |
| /boot | 開機使用到的文件,包括linux內核文件和開機所需配置文件等,vmlinz,/boot/grub |
| /dev | 任何設備和接口都是以文件的形式存放在該目錄,/dev/nul,zero,tty,lp*,hd*,sd* |
| /etc | 系統主要的配置文件,例如用戶的賬號密碼,各種服務的init文件,比較重要的文件包括,/etc/inittab,init.d/,modprobe.conf,X11/,fstab,sysconfig/ |
| /home | 系統默認的用戶主文件夾,~表示當前用戶的主文件夾,~xionger則表示熊二的主文件夾 |
| /lib | 開機時會用到的函數庫,以及/bin或/sbin下命令調用的函數庫 |
| /media, /mnt | 放置可刪除設備,如cdrom等; 放置臨時需要掛載的設備 |
| /opt | 放置第三方軟件的目錄,也可以放在/usr/local中 |
| /root | 系統管理員root的主文件夾,需要和根目錄放置在同一分區 |
| /sbin | 包括開機、修復、還原系統的命令,常見命令有fdisk,fsck,ifconfig,init,mkfs |
| /srv | 一些網絡服務啟動,所需數據的目錄,例如WWW服務需要/srv/www/ |
| /tmp | 臨時文件,推薦定期刪除 |
| /lost+found | 對于ext2/ext3文件系統格式來說,當系統出現錯誤時,會把丟失的片段放在該目錄,此外,如果加一塊硬盤到/disk中,那么系統會自動產生/disk/lost+found |
| /proc | 虛擬文件系統,其數據放置在內存,包括系統內核、進程、外部設備和網絡狀態,重要的文件包括/proc/cpuinfo,dma,interrupts,ioports,net/* |
| /sys | 和/proc內絲,也是一個虛擬文件系統,主要記錄與內核有關的信息 |
| /usr/bin | 絕大部分的用于可使用命令都在這,不過不支持單用戶維護模式 |
| /usr/include | C/C++等程序頭文件放置處,當使用tarball方式安裝數據時會用到這里的很多包含文件 |
| /usr/lib | 包含應用程序的函數庫、目標文件和腳本,對于x86_64的linux還有/usr/lib64/產生 |
| /usr/local | 系統管理員自己下載的軟件推薦安裝在此 |
| /usr/sbin | 非系統正常運行需要的系統命令,例如某系網絡服務軟件的服務命令(daemon) |
| /usr/share | 放置共享文件的地方 |
| /usr/src | 一般用來放置源碼 |
| /var/cache | 應用程序運行時產生的暫存文件 |
| /var/lib | 程序本身執行需要使用的數據文件放置在這,比如mysql的數據庫放置在/var/lib/mysql |
| /var/lock | 對于某些系統資源來說,一次只能供一個應用使用,因此需要將其加鎖 |
| /var/log | 登錄文件放置的目錄,比較重要的有/var/log/messages,wtmp |
| /var/mail | 放置個人電子郵箱的目錄,鏈接到/var/spool/mail |
| /var/run | 某些程序或服務啟動后,會將其PID放置在此 |
| /var/spool | 放置一些隊列數據,"隊列"就是排隊等待其他程序使用的數據了,比如工作任務數據(crontab),就防止在/var/spool/cron/中 |
?
整個linux的學習,重在命令的熟練,加油!"天行健,君子以自強不息;地勢坤,君子以厚德載物" -- 《周易》
?
參考資料:
轉載于:https://www.cnblogs.com/xiong2ge/p/Linux_FileSystem_Fast02.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Linux快速入门02-文件系统管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate和jdbc的优缺点,概
- 下一篇: Gradle笔记