文件的软硬链接
目錄
- 文件的軟硬鏈接
- 系統的鏈接文件
- VIM編輯
- vi和vim的區別
- vim環境變量
文件的軟硬鏈接
系統的鏈接文件
文件有文件名和數據,在linux上被分為兩部分:用戶數據,元數據
用戶數據:文件的數據塊(data block),數據塊是記錄文件真實內容的地方,我們將其稱為block
元數據:文件的附加屬性,例如:文件大小,創建時間,屬組,屬主...等,我們稱其為Inode
在Linux中,inode是文件元數據的一部分,但其并不包含文件名,inode號即索引節點號
文件名僅是為了方便人們的記憶和使用,系統或者程序通過inode號尋找正確的文件數據塊。
下圖為文件讀取的流程:
軟鏈接
1什么是軟鏈接
軟鏈接相當于windows的快捷方式,軟鏈接文件會將inode指向源文件的block
注意:當我們訪問這個軟鏈接文件時,其實就是在訪問源文件的本身。
1.那么當我們對一個文件創建多個軟鏈接時,其實就是多個inode指向同一個block。
2.那么當我們刪除軟鏈接文件時,其實只是刪除了一個inode的指向,并不會對源文件造成影響。
3.如果我們刪除的是源文件,那么該文件的所有軟鏈接文件都會失效。
軟鏈接的應用場景
- 軟件升級
- 代碼發布
- 不方便移動的目錄
- 數據回滾
- 程序讀取
硬鏈接
- 具有同一個inode號的文件,互為硬鏈接文件
- 目錄不能創建連接
軟硬鏈接總結
- 創建命令不同
軟鏈接:ln -s
硬鏈接:ln - 目錄不能創建硬鏈接,并且硬鏈接不可以跨越系統的分區,軟鏈接可以
- 硬鏈接文件與源文件inode相同,軟鏈接文件與源文件inode不同
- 刪除軟鏈接文件,對源文件無影響,但是刪除軟鏈接源文件對軟鏈接文件有影響
- 刪除硬鏈接文件,對源文件也無影響,并且刪除源文件,對硬鏈接文件也無影響
企業面試題
當前磁盤空間還剩余500G,但是就無法往里面寫入數據,報錯,磁盤空間滿了。
1T磁盤,用戶數據把inode沾滿了
[root@db04 ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg_db01-lv_root 1152816 76391 1076425 7% / tmpfs 238319 1 238318 1% /dev/shm /dev/sda1 128016 39 127977 1% /boot#模擬 [root@db04 ~]# dd if=/dev/zero of=/opt/disk bs=1K count=1024 [root@db04 ~]# mkfs.ext4 -i 1024 /opt/disk [root@db04 ~]# mkdir /data1 [root@db04 ~]# mount -t ext4 -o loop /opt/disk /data1 [root@db04 data1]# touch file{1..2000} touch: 無法創建"file1014": 設備上沒有空間 touch: 無法創建"file1015": 設備上沒有空間 touch: 無法創建"file1016": 設備上沒有空間 touch: 無法創建"file1017": 設備上沒有空間 touch: 無法創建"file1018": 設備上沒有空間 [root@db04 data1]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_db01-lv_root 18G 2.0G 15G 12% / tmpfs 931M 0 931M 0% /dev/shm /dev/sda1 485M 39M 421M 9% /boot /opt/disk 891K 39K 801K 5% /data1[root@db04 data1]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg_db01-lv_root 1152816 76393 1076423 7% / tmpfs 238319 1 238318 1% /dev/shm /dev/sda1 128016 39 127977 1% /boot /opt/disk 1024 1024 0 100% /data1硬鏈接數計算
[root@db04 ~]# mkdir hard [root@db04 ~]# ll hard -d drwxr-xr-x 2 root root 4096 6月 1 12:50 hard [root@db04 ~]# cd hard [root@db04 hard]# mkdir test1 [root@db04 ~]# ll -d hard drwxr-xr-x 3 root root 4096 6月 1 12:50 hard [root@db04 ~]# cd hard [root@db04 hard]# touch test [root@db04 ~]# ll -d hard drwxr-xr-x 3 root root 4096 6月 1 12:50 hardVIM編輯
vi和vim的區別
- vi不顯示高亮顏色語法
- vim顯示高亮顏色語法
- 其他功能沒有什么區別
- 所以在linux系統下,使用vi還是vim取決個人習慣。
VIM模式介紹
vim編輯器配置文件整體流程如下:
- 默認打開文件處于普通模式
- 需要從普通模式切換至編輯模式
- 編輯模式修改配置文件, 然后返回普通模式.
- 最后通過普通模式進入末行模式,保存和退出操作.
注意
在vim中,無法直接從編輯模式切換到末行模式。
vim環境變量
環境變量臨時生效
- :set nu 顯示行號
- :set ic 忽略大小寫, 在搜索的時候有用
- :set ai 自動縮進
- :set list 顯示制表符(空行、tab鍵)
:set no[nu|ic|ai…] 取消臨時設定的變量
環境變量永久生效
vim擴展知識
1.如何同時編輯多個文件
vim -o file1 file2 水平分割 vim -O file1 file2 垂直分割 //ctrl+ww 文件間切換2.相同文件之間差異對比
diff vimdiff vim方式打開兩個文件對比,標記不同的內容3.如果vim非正常退出(Ctrl+z)掛起或強制退出終端沒關閉vim
刪除同文件名.swp文件即可解決w 查看是否有人編輯 .filename.swap rm -f .filename.swp轉載于:https://www.cnblogs.com/1naonao/p/11065943.html
總結
- 上一篇: python-map函数
- 下一篇: Kafka 慌了!这个中间件,要火了?