第九章:文件核心基礎(chǔ)知識,day12

本章重點

1)掌握Linux文件屬性的各個列的含義(ls -lhi結(jié)果)及對應(yīng)知識概念。
2)磁盤空間不足故障的多重判斷和解決(面試常考)。
3)請描述軟鏈接和硬鏈接的特點及區(qū)別(面試??迹?。
4)請描述Linux系統(tǒng)文件刪除的原理(面試??迹?。

分類 硬鏈接 軟鏈接
概念 與原文件指向同一個inode節(jié)點,節(jié)點號相同 快捷方式,指向原文件名
創(chuàng)建方式 ln ln -s
特點 不能對目錄使用,不可跨文件系統(tǒng),刪除原文件對鏈接無任何影響 經(jīng)常對目錄使用,可跨文件系統(tǒng),刪除原文件鏈接失效
image.png

1. Linux是一個典型的多用戶,多任務(wù)的系統(tǒng)

用戶:管理Linux系統(tǒng)而存在的
用戶一般分為用戶名和用戶ID,相當于名字和身份證
用戶名是給人用的,用戶ID是給計算機識別的
user UID
Linux里邊所有的用戶和進程都要有對應(yīng)的用戶
文件存在必須對應(yīng)用戶
進程運行必須對應(yīng)用戶

  • 命令:
    id root 查UID
    id 查看用戶身份
    whoami 查自己

2. Linux用戶分3類

  • 超級管理員 root
    權(quán)限堪稱黃帝。UID為0(UID為0的都有皇帝對應(yīng)的權(quán)限)
    修改:
    不要修改ID為0便管理員
    作業(yè):root密碼丟失了如何找回來?
  • 虛擬用戶(傀儡)
    實際存在的用戶,又不允許登錄。
    價值何在?
    滿足文件或進程或?qū)僦鞯囊?。但是不會帶來管理風(fēng)險
    UID: uid 1-499
  • 普通用戶
    實際存在的用戶,又允許登錄。
    管理員身份創(chuàng)建的(大臣)
    權(quán)限僅限制在家目錄,在一些系統(tǒng)級目錄可讀不可寫,不可以進入/root目錄
    UID {C7 1000起步 C6 500 起步}最高60000
  • 創(chuàng)建用戶


    image.png
  • image.png

3. 用戶組:集合、組織

  • Linux中每一個用戶都要有一個組織,這個組織就叫用戶組
    用戶組也是給人看的,用戶組也有唯一標識,Group ID簡稱GID
    默認情況創(chuàng)建用戶,并沒有創(chuàng)建用戶組,他自動創(chuàng)建一個
    和用戶名相同的用戶組以及相同的GID


    image.png

4. 用戶和用戶組的對應(yīng)關(guān)系

  • (1)1對1
    (2)1對多個用戶組
    (3)多個用戶對應(yīng)一個用戶組
    (4)多對多

5. 文件權(quán)限:嚴格的權(quán)限,Linux安全權(quán)限嚴格

image.png

image.png

6. (789)列文件最后修改時間

  • 文件時間有三種
    修改時間:Modify 文件內(nèi)容被改過
    訪問時間:Access 最后被讀取的時間
    變化時間:Change 屬性改變的最后時間
    stat 命令可以看
    ls 也可以

ls參數(shù):
-t modify,文件內(nèi)容被改過之后的時間。
-c change,文件屬性發(fā)生改變的時間。
-a access,文件內(nèi)容被訪問過的時間。

image.png

[root@oldboyedu ~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 158 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 16829878 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:net_conf_t:s0
Access: 2020-10-01 00:00:21.849999186 +0800訪問時間
Modify: 2013-06-07 22:31:32.000000000 +0800修改時間
Change: 2019-03-04 11:15:49.426692303 +0800變化時間
Birth: -
[root@oldboyedu ~]# stat -c %A /etc/hosts
-rw-r--r--

[root@oldboyedu /data]# echo oldboy>>test.txt
[root@oldboyedu /data]# stat test.txt
File: ‘test.txt’
Size: 14 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33656257 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-10-01 11:07:28.953508888 +0800
Modify: 2020-10-01 11:07:53.119507988 +0800
Change: 2020-10-01 11:07:53.119507988 +0800
Birth: -
[root@oldboyedu /data]# cat test.txt
oldboy
oldboy
[root@oldboyedu /data]# cat test.txt
oldboy
oldboy
[root@oldboyedu /data]# stat test.txt
File: ‘test.txt’
Size: 14 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33656257 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-10-01 11:08:32.147506535 +0800
Modify: 2020-10-01 11:07:53.119507988 +0800
Change: 2020-10-01 11:07:53.119507988 +0800
Birth: -
[root@oldboyedu /data]# chmod +x test.txt
[root@oldboyedu /data]# stat test.txt
File: ‘test.txt’
Size: 14 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33656257 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-10-01 11:08:32.147506535 +0800
Modify: 2020-10-01 11:07:53.119507988 +0800
Change: 2020-10-01 11:08:57.442505593 +0800
Birth: -

[root@oldboyedu /data]# ls --time-style=long-iso -l
total 12
-rw-r--r--. 1 root root 0 2020-10-01 00:19 1.txt
-rw-r--r--. 1 root root 0 2020-10-01 00:19 2.txt
-rw-r--r--. 1 root root 0 2020-10-01 00:19 3.txt
-rw-r--r--. 1 root root 0 2020-10-01 00:19 4.txt
-rw-r--r--. 1 root root 0 2020-10-01 00:19 5.txt
-rw-r--r--. 1 root root 187 2020-10-01 09:01 oldboy.tar.gz
-rw-r--r--. 1 root root 18 2020-10-01 09:01 paichu.txt
-rwxr-xr-x. 1 root root 14 2020-10-01 11:07 test.txt

7. 什么是索引點?

  • 命令:df -i 查看inode數(shù)量
    df -h查看block數(shù)量

  • 第一列:
    表現(xiàn)形式是數(shù)字 33631841 叫做文件的索引節(jié)點(Index Node)
    類似人的身份證,索引節(jié)點是文件在系統(tǒng)中的唯一標識。
    找一個文件最終都要通過索引節(jié)點才能找到
    索引節(jié)點的概念出在ext文件系統(tǒng)中(ext2 ext4 ext3).

  • 索引節(jié)點是硬盤上的一塊存儲空間。大小256字節(jié)或512字節(jié)。

  • 索引節(jié)點里存放是數(shù)據(jù)是文件的屬性(大小、時間、用戶和組、權(quán)限等)都
    在索引節(jié)點里,唯獨不包含文件名(文件名在上級目錄的block里)。

  • 磁盤要想使用,先分區(qū),格式化(創(chuàng)建文件系統(tǒng))。
    格式化創(chuàng)建文件系統(tǒng)時,就會生成大量的inode和block。
    inode作用存儲文件的屬性信息,同時存放指向文件實體(block)的指針(類似軟鏈接)
    block作用是存放文件內(nèi)容的(大片)。

  • Block叫做磁盤塊,是用來存放實際數(shù)據(jù)的實體單元(ext文件系統(tǒng)一般最大為4KB),即用來真正存放數(shù)據(jù),例如:照片、視頻等普通文件數(shù)據(jù),單個大的文件需要占用多個Block塊來存儲,
    特別小的單個文件如果不能占滿整個Block塊,剩余的空間也無法在利用。

  • 一個Block最多只能存一個文件的內(nèi)容,一個block 4K,放了0.1K文件,剩3.9K浪費了。


    image.png

    image.png

    image.png
  • 磁盤滿原因有兩種:
    1、inode滿了。
    2、block滿了。
    ====================================
    提示:
    no space left on device 報錯,沒有空間在設(shè)備上了。
    磁盤滿了。
    [root@oldboyedu /]# cd /app/logs/
    [root@oldboyedu /app/logs]# touch {1..100}.txt
    touch: cannot touch ‘6.txt’: No space left on device
    touch: cannot touch ‘7.txt’: No space left on device
    ====================================
    檢查步驟:
    步驟1:df -h
    步驟2: df -i 看是不是inode滿了
    ====================================
    為什么inode會滿?
    小文件太多
    初始化時候 block數(shù)量遠大于inode數(shù)量。
    一個文件大片 占一個inode,10萬個block。
    [root@oldboyedu /app/logs]# cp /bin/cat ddd
    [root@oldboyedu /app/logs]# cp /bin/cat dddd
    cp: error writing ‘dddd’: No space left on device
    cp: failed to extend ‘dddd’: No space left on device
    文件滿了。
    9.5.6 磁盤空間不足導(dǎo)致企業(yè)故障的案例 自學(xué)。。 講文件系統(tǒng)時候回來講這里

8.硬鏈接

  1. 什么是硬鏈接?
    具有相同inode節(jié)點號的文件互為硬鏈接。
    一個文件的兩個入口。
    [root@oldboyedu ~]# ls -ldi test test/.
    16964029 drwxr-xr-x. 2 root root 4096 Oct 1 14:07 test
    16964029 drwxr-xr-x. 2 root root 4096 Oct 1 14:07 test/.
    [root@oldboyedu /data]# ls -ldi oldboy
    33631853 drwxr-xr-x. 5 root root 45 Oct 4 21:03 oldboy
    [root@oldboyedu /data]# ls -ldi oldboy oldboy/. oldboy/test{1..3}/..
    33631853 drwxr-xr-x. 5 root root 45 Oct 4 21:03 oldboy
    33631853 drwxr-xr-x. 5 root root 45 Oct 4 21:03 oldboy/.
    33631853 drwxr-xr-x. 5 root root 45 Oct 4 21:03 oldboy/test1/..
    33631853 drwxr-xr-x. 5 root root 45 Oct 4 21:03 oldboy/test2/..
    33631853 drwxr-xr-x. 5 root root 45 Oct 4 21:03 oldboy/test3/..
  2. 硬鏈接原理


    image.png
  3. 測試
    創(chuàng)建硬鏈接:
    命令組成:ln 源文件 硬鏈接文件
  • a.文件硬鏈接
    [root@oldboyedu /data]# echo "I am oldboy." >oldboy.txt
    [root@oldboyedu /data]# cat oldboy.txt
    I am oldboy.
    [root@oldboyedu /data]# ln oldboy.txt oldboy_hard_link
    [root@oldboyedu /data]# ls -lirt
    total 20
    33656257 -rwxr-xr-x. 1 root root 14 Oct 1 11:07 test.txt
    33656238 -rw-r--r--. 2 root root 13 Oct 4 21:10 oldboy.txt
    33656238 -rw-r--r--. 2 root root 13 Oct 4 21:10 oldboy_hard_link
    作用:
    1、備份,防止誤刪。
    [root@oldboyedu /data]# ln /etc/hostname /opt/hostname
    [root@oldboyedu /data]# cat /opt/hostname
    oldboyedu
    [root@oldboyedu /data]# rm -f /etc/hostname
    [root@oldboyedu /data]# cat /etc/hostname
    cat: /etc/hostname: No such file or directory
    [root@oldboyedu /data]# cat /opt/hostname
    oldboyedu
    [root@oldboyedu /data]# ln /opt/hostname /etc/hostname
    [root@oldboyedu /data]# cat /etc/hostname
    oldboyedu
  • b.目錄硬鏈接
    不支持人工創(chuàng)建目錄硬鏈接。
    [root@oldboyedu /data]# ln oldboy oldgirl
    ln: ‘oldboy’: hard link not allowed for directory
    老男孩的思考:
    /etc/目錄,對應(yīng)一個分區(qū)
    /home目錄,還可能對應(yīng)一個分區(qū)。
    ln /etc/ /home/oldboy

9.軟鏈接:

本質(zhì)是快捷方式,指向源文件實體,本身和源文件是不同的文件。
實踐:

  • 文件
    [root@oldboyedu /data]# !echo
    echo "I am oldboy." >oldboy.txt
    [root@oldboyedu /data]# cat oldboy.txt
    I am oldboy.
    [root@oldboyedu /data]# ln -s oldboy.txt oldboy_soft_link
  • 目錄:是工作中的重點
    [root@oldboyedu /data]# mkdir oldboy
    [root@oldboyedu /data]# touch oldboy/test.txt
    [root@oldboyedu /data]# ln -s oldboy oldboy_soft_link_dir
    [root@oldboyedu /data]# ls oldboy_soft_link_dir/
    test.txt
    [root@oldboyedu /data]# ls oldboy
    test.txt
  • 工作中為什么會使用軟鏈接。
    第一個用途:
    安裝軟件:/application/nginx-1.10
    過半年:/application/nginx-1.20
    導(dǎo)致一個問題,工作中,開發(fā)等引用/application/nginx-1.10路徑。
    安裝軟件:/application/nginx-1.10===>/application/nginx(讓開發(fā)用)
    過半年: /application/nginx-1.20===>/application/nginx(讓開發(fā)用)
    第二個用途:
    /etc/對應(yīng)的分區(qū)要滿了,沒法放很多文件,但是程序還想通過/etc/目錄訪問文件。
    此時,我們可以把文件放入/opt/oldboy下,然后做一個到/etc/oldboy的軟鏈接。
    [root@oldboyedu /data]# mkdir /opt/oldboy
    [root@oldboyedu /data]# touch /opt/oldboy/{1..3}.txt
    [root@oldboyedu /data]# ln -s /opt/oldboy/ /etc/oldboy
    [root@oldboyedu /data]# ls /etc/oldboy
    1.txt 2.txt 3.txt
    [root@oldboyedu /data]# ll /opt/oldboy
    total 0
    -rw-r--r--. 1 root root 0 Oct 4 22:02 1.txt
    -rw-r--r--. 1 root root 0 Oct 4 22:02 2.txt
    -rw-r--r--. 1 root root 0 Oct 4 22:02 3.txt

Linux文件刪除原理

  1. 靜態(tài)文件:沒有進程或程序正在訪問的文件
    所有的硬鏈接數(shù)為0(i_link),即所有硬鏈接都被干掉了,包括自身。
    硬鏈接的數(shù)量的代表變量符號i_link
    rm -f oldboy.txt oldboy_hard_link
    執(zhí)行完 其實文件也沒刪,關(guān)機停止運行。
    a.系統(tǒng)定時清理沒有文件名的inode。
    b.磁盤檢查會清理。
    c.增加新文件時優(yōu)先占用沒有文件名的inode。
    恢復(fù)的工具:debugfs,ext3grep等等。
    亡羊補牢其實不可取的,違反運維的三大核心原則。
    多備份,操作前備份,異服務(wù)器和異地備份。
  2. 動態(tài)文件:有程序或進程訪問的文件
    刪除原理:
    a.所有硬鏈接刪除。i_link為0.
    b..i_count是進程調(diào)用文件的數(shù)量(引用計數(shù))。所有進程調(diào)用都要停止取消。i_count為0


    image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容