Linux | 文件系统与操作
文章目錄
- 磁盤分區
- 文件系統目錄
- 文件組成
- 文件系統
- 文件系統操作
- 掛載
- 文件類型
- 鏈接命令 :ln
- 硬鏈接VS軟鏈接
- 文件權限
- 表示方法
- chmod:改變權限
- 文件默認權限umask掩碼
- chown:改變屬主
- 文件操作
- 文件描述符
- 函數
磁盤分區
硬盤分區包括主分區、擴展分區和邏輯分區;在一個硬盤中,主分區和擴展分區最多是4個,邏輯分區數量不限。
每一個硬件設備映射到一個系統的文件
- Linux為IDE設備(光驅,硬盤)分配一個由hd前綴組成的文件
驅動器標識符是“hdx*”,hd表示是IDE設備;x是盤號(a是基本盤,b是基本從屬盤,c是輔助主盤,d是輔助從屬盤);*表示分區,前4個分區用數字1~4表示(主分區或擴展分區),從第5個分區開始是邏輯分區
例:
/dev/hda2:第1個IDE硬盤上的第2 個主分區或擴展分區
/dev/hdb1:第2個IDE硬盤上的第21個主分區或擴展分區
- Linux為SCSI設備分配一個由sd前綴組成的文件
驅動器標識符是“sdx*”,sd表示是SCSI設備;x是盤號(a是基本盤,b是基本從屬盤,c是輔助主盤,d是輔助從屬盤);*表示分區,前4個分區用數字1~4表示(主分區或擴展分區),從第5個分區開始是邏輯分區
注:
文件系統目錄
Directory Tree
文件組成
注:inode中并不包含文件的名字,文件名字存放在 文件所在目錄中
stat test.sh:查看文件inode信息
df -i :查看每個硬盤分區的inode總數和已經使用 的數量
inode表指針執行數據塊
文件系統
- ext3:加入了記錄元數據的日志功能
- ext2
- Swap文件系統
Linux的交換分區,使用整個交換分區來提供虛擬內存,分區大小一般是系統物理內存的2倍 - ISO9660
標準文件系統 - proc
Linux系統上的/proc目錄是一種文件系統(proc文件系統),/proc是一種偽文件系統(虛擬文件系統),存儲的是當前內核運行狀態的特殊文件,用來作為連接內核數據結構的 - 虛擬文件系統 VFS
不是一種實際的文件系統,只存在于內存中,不存在于任何外存空間
文件系統操作
磁盤分區完成后就要進行文件系統的格式化,本身并不執行建立文件系統的工作,調用相關程序來執行
mkfs -t ext3 /dev/sda1:將sda1分區格式化為ext3
掛載
- 掛載定義:建立文件系統后,還需要將**文件系統安裝到 Linux目錄樹的某個位置上才能使用。**這個過程稱為掛載,文件系統所掛載到的目錄稱為掛載點。
- 磁盤分區、軟盤、USB盤、光盤都需要掛載
- 釋放所掛載的目錄稱為卸載
mount:手動掛載
mount [-t fs-type] [-o option] device mountpoint
fs-type為文件系統類型,option常用選項:ro只讀方式;rw讀寫方式;remount重新掛載已掛載的文件系統。
自動掛載:Linux操作系統的文件系統信息都存儲/etc/fstab腳本文件中,在系統引導過程中自動讀取并加載該文件內容中的文件系統。
例:
要使用優盤,在/etc/fstab中添加如下一行
/dev/sda1 /mnt/disk1 vfat iocharset = cp936, rw 0 0
umount:卸載
例:
要卸載已經掛載到/mnt/sda5上的文件系統,可以使用如下命令:
[root@localhost /]# umount /dev/sda5
或
[root@localhost /]# umount /mnt/sda5
du:磁盤統計,使用情況
[root@localhost /]# du - a /home/user1
df :磁盤空間統計(未使用)
df -lh:
a:顯示所有文件系統的信息,包括swap和proc
h:以最合適的容量單位顯示
i:顯示文件節點數inode的使用情況
l:只顯示本地文件系統的使用情況
文件類型
| - | d | ln命令 | ||
| 文本文件、二進制文件、數據文件 | 字符設備、塊設備 | 硬鏈接、軟鏈接 | ||
| file test*:查看當前目錄下以test開頭的所有文件類型 | 在/dev目錄下 | 文件的鏈接就是為一個文件起多個名字 |
鏈接命令 :ln
- 鏈接文件: ln命令
一個文件可能有多個文件名
ln 不帶選項:會增加鏈接數,rm命令會減少鏈接數
一個文件除非鏈接數為0,否則不會物理地從文件系統中被刪除。
將一個路徑名鏈接到一個文件
這些文件是一種特別類型的文件。它只是一個小文本文件(如b目錄下的m2.c文件),其中包含它所鏈接的目標文件的絕對路徑名。
注:
1.用“ln -s”命令建立符號鏈接時,最好源文件用絕對路徑名,這樣可以在任何工作目錄下進行符號鏈接。
2.在目錄長列表中,符號鏈接作為一種特殊的文件類型顯示出來,第一個字母是l
3.符號鏈接的大小是其鏈接文件的路徑名中的字節數
4.當用ls -l列出文件時,可以看到符號鏈接名后有一個箭頭指向源文件或目錄。
硬鏈接VS軟鏈接
硬鏈接和源文件是同一份文件,而軟鏈接是獨立的文件,類似于快捷方式,與目標文件是不同的inode,存儲著源文件的位置信息便于指向。
使用限制上,不能對目錄創建硬鏈接,不能對不同文件系統創建硬鏈接,不能對不存在的文件創建硬鏈接;
可以對目錄創建軟鏈接,可以跨文件系統創建軟鏈接,可以對不存在的文件創建軟鏈接。
文件權限
| all | user | group | other |
| 所有用戶 | 文件所有者 | 同組用戶 | 其他用戶 |
表示方法
三組九位字母表示法:r w x 讀寫執行
三組九位二進制表示法:有權限標1
三位八進制表示法:r:4 w:2 x:1
| 字母表示法 | r w x | r - x | r - - |
| 對應二進制 | 1 1 1 | 1 0 1 | 1 0 0 |
| 八進制表示法 | 7 | 5 | 4 |
chmod:改變權限
[root@localhost /]# chmod u+x,g+w,o-r f1
[root@localhost /]# chmod a=rw f2
[root@localhost /]# chmod 644 f1
[root@localhost /]# chmod 700 f2
文件默認權限umask掩碼
系統默認掩碼是022
文件創建時的默認權限=666-umask
目錄創建時的默認權限=777-umask
chown:改變屬主
文件操作
文件描述符
非負整數
函數
#include<fcntl.h> #include<sys/types.h> #include <unistd.h> #include <stdio.h> int open(const char *path, int flags, mode t_mode);//int fd=open("myfile",O_CREAT,S_IRUSR|S_IXOTH); int creat(const char *path,mode_t mode); int close(fd); int rename (const char * oldpath,const char * newpath); int remove( const char * pathname); off_t lseek( int file_des, off_t offset, int whence ); ssize_t write( int file_des, const void *buf, size_t nbytes );// file_des:文件描述符,標識要讀取的文件。*buf :緩沖區,用來存儲讀入的數據 nbytes :要讀取的字符數。 ssize_t read( int file_des, void *buf, size_t nbytes ); int dup( int file_des ); int dup2( int file_des, int file_des2 );成功返回文件描述符,失敗返回-1
成功返回以只寫方式打開的文件描述符,失敗返回-1
成功返回0.失敗返回-1
成功返回0,失敗返回-1
成功返回0,失敗返回-1
成功返回已寫字節數,失敗返回-1
返回值:成功返回讀到的字節數,若已到文件結尾返回0,出錯返回-1。
總結
以上是生活随笔為你收集整理的Linux | 文件系统与操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ee me se_java E
- 下一篇: 被娱乐在线报道的“唐骏造假门事件”