本章重點(diǎn)
1)掌握Linux文件屬性的各個(gè)列的含義(ls -lhi結(jié)果)及對(duì)應(yīng)知識(shí)概念逞频。
2)磁盤空間不足故障的多重判斷和解決(面試常考)任岸。
3)請(qǐng)描述軟鏈接和硬鏈接的特點(diǎn)及區(qū)別(面試吃匍考)。
4)請(qǐng)描述Linux系統(tǒng)文件刪除的原理(面試诚砬保考)困鸥。
分類 | 硬鏈接 | 軟鏈接 |
---|---|---|
概念 | 與原文件指向同一個(gè)inode節(jié)點(diǎn),節(jié)點(diǎn)號(hào)相同 | 快捷方式剑按,指向原文件名 |
創(chuàng)建方式 | ln | ln -s |
特點(diǎn) | 不能對(duì)目錄使用疾就,不可跨文件系統(tǒng),刪除原文件對(duì)鏈接無任何影響 | 經(jīng)常對(duì)目錄使用艺蝴,可跨文件系統(tǒng)猬腰,刪除原文件鏈接失效 |
1. Linux是一個(gè)典型的多用戶,多任務(wù)的系統(tǒng)
用戶:管理Linux系統(tǒng)而存在的
用戶一般分為用戶名和用戶ID猜敢,相當(dāng)于名字和身份證
用戶名是給人用的姑荷,用戶ID是給計(jì)算機(jī)識(shí)別的
user UID
Linux里邊所有的用戶和進(jìn)程都要有對(duì)應(yīng)的用戶
文件存在必須對(duì)應(yīng)用戶
進(jìn)程運(yùn)行必須對(duì)應(yīng)用戶
- 命令:
id root 查UID
id 查看用戶身份
whoami 查自己
2. Linux用戶分3類
- 超級(jí)管理員 root
權(quán)限堪稱黃帝盒延。UID為0(UID為0的都有皇帝對(duì)應(yīng)的權(quán)限)
修改:
不要修改ID為0便管理員
作業(yè):root密碼丟失了如何找回來? - 虛擬用戶(傀儡)
實(shí)際存在的用戶鼠冕,又不允許登錄添寺。
價(jià)值何在?
滿足文件或進(jìn)程或?qū)僦鞯囊笮阜选5遣粫?huì)帶來管理風(fēng)險(xiǎn)
UID: uid 1-499 - 普通用戶
實(shí)際存在的用戶计露,又允許登錄。
管理員身份創(chuàng)建的(大臣)
權(quán)限僅限制在家目錄憎乙,在一些系統(tǒng)級(jí)目錄可讀不可寫票罐,不可以進(jìn)入/root目錄
UID {C7 1000起步 C6 500 起步}最高60000 -
創(chuàng)建用戶
3. 用戶組:集合、組織
-
Linux中每一個(gè)用戶都要有一個(gè)組織寨闹,這個(gè)組織就叫用戶組
用戶組也是給人看的胶坠,用戶組也有唯一標(biāo)識(shí),Group ID簡(jiǎn)稱GID
默認(rèn)情況創(chuàng)建用戶繁堡,并沒有創(chuàng)建用戶組沈善,他自動(dòng)創(chuàng)建一個(gè)
和用戶名相同的用戶組以及相同的GID
4. 用戶和用戶組的對(duì)應(yīng)關(guān)系
- (1)1對(duì)1
(2)1對(duì)多個(gè)用戶組
(3)多個(gè)用戶對(duì)應(yīng)一個(gè)用戶組
(4)多對(duì)多
5. 文件權(quán)限:嚴(yán)格的權(quán)限,Linux安全權(quán)限嚴(yán)格
6. (789)列文件最后修改時(shí)間
- 文件時(shí)間有三種
修改時(shí)間:Modify 文件內(nèi)容被改過
訪問時(shí)間:Access 最后被讀取的時(shí)間
變化時(shí)間:Change 屬性改變的最后時(shí)間
stat 命令可以看
ls 也可以
ls參數(shù):
-t modify椭蹄,文件內(nèi)容被改過之后的時(shí)間闻牡。
-c change,文件屬性發(fā)生改變的時(shí)間绳矩。
-a access罩润,文件內(nèi)容被訪問過的時(shí)間。
[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訪問時(shí)間
Modify: 2013-06-07 22:31:32.000000000 +0800修改時(shí)間
Change: 2019-03-04 11:15:49.426692303 +0800變化時(shí)間
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. 什么是索引點(diǎn)翼馆?
命令:df -i 查看inode數(shù)量
df -h查看block數(shù)量第一列:
表現(xiàn)形式是數(shù)字 33631841 叫做文件的索引節(jié)點(diǎn)(Index Node)
類似人的身份證割以,索引節(jié)點(diǎn)是文件在系統(tǒng)中的唯一標(biāo)識(shí)。
找一個(gè)文件最終都要通過索引節(jié)點(diǎn)才能找到
索引節(jié)點(diǎn)的概念出在ext文件系統(tǒng)中(ext2 ext4 ext3).索引節(jié)點(diǎn)是硬盤上的一塊存儲(chǔ)空間应媚。大小256字節(jié)或512字節(jié)严沥。
索引節(jié)點(diǎn)里存放是數(shù)據(jù)是文件的屬性(大小、時(shí)間中姜、用戶和組消玄、權(quán)限等)都
在索引節(jié)點(diǎn)里,唯獨(dú)不包含文件名(文件名在上級(jí)目錄的block里)丢胚。磁盤要想使用翩瓜,先分區(qū),格式化(創(chuàng)建文件系統(tǒng))携龟。
格式化創(chuàng)建文件系統(tǒng)時(shí)兔跌,就會(huì)生成大量的inode和block。
inode作用存儲(chǔ)文件的屬性信息峡蟋,同時(shí)存放指向文件實(shí)體(block)的指針(類似軟鏈接)
block作用是存放文件內(nèi)容的(大片)浮定。
Block叫做磁盤塊相满,是用來存放實(shí)際數(shù)據(jù)的實(shí)體單元(ext文件系統(tǒng)一般最大為4KB),即用來真正存放數(shù)據(jù)桦卒,例如:照片、視頻等普通文件數(shù)據(jù)匿又,單個(gè)大的文件需要占用多個(gè)Block塊來存儲(chǔ)方灾,
特別小的單個(gè)文件如果不能占滿整個(gè)Block塊,剩余的空間也無法在利用碌更。-
一個(gè)Block最多只能存一個(gè)文件的內(nèi)容裕偿,一個(gè)block 4K,放了0.1K文件痛单,剩3.9K浪費(fèi)了嘿棘。
磁盤滿原因有兩種:
1、inode滿了旭绒。
2鸟妙、block滿了。
====================================
提示:
no space left on device 報(bào)錯(cuò)挥吵,沒有空間在設(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會(huì)滿忽匈?
小文件太多
初始化時(shí)候 block數(shù)量遠(yuǎn)大于inode數(shù)量房午。
一個(gè)文件大片 占一個(gè)inode,10萬個(gè)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)時(shí)候回來講這里
8.硬鏈接
- 什么是硬鏈接折柠?
具有相同inode節(jié)點(diǎn)號(hào)的文件互為硬鏈接。
一個(gè)文件的兩個(gè)入口萎羔。
[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/.. -
硬鏈接原理
- 測(cè)試
創(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/目錄,對(duì)應(yīng)一個(gè)分區(qū)
/home目錄髓废,還可能對(duì)應(yīng)一個(gè)分區(qū)巷懈。
ln /etc/ /home/oldboy
9.軟鏈接:
本質(zhì)是快捷方式,指向源文件實(shí)體慌洪,本身和源文件是不同的文件顶燕。
實(shí)踐:
- 文件
[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 - 目錄:是工作中的重點(diǎn)
[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 - 工作中為什么會(huì)使用軟鏈接凑保。
第一個(gè)用途:
安裝軟件:/application/nginx-1.10
過半年:/application/nginx-1.20
導(dǎo)致一個(gè)問題,工作中涌攻,開發(fā)等引用/application/nginx-1.10路徑欧引。
安裝軟件:/application/nginx-1.10===>/application/nginx(讓開發(fā)用)
過半年: /application/nginx-1.20===>/application/nginx(讓開發(fā)用)
第二個(gè)用途:
/etc/對(duì)應(yīng)的分區(qū)要滿了,沒法放很多文件恳谎,但是程序還想通過/etc/目錄訪問文件冕末。
此時(shí)加酵,我們可以把文件放入/opt/oldboy下掉瞳,然后做一個(gè)到/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文件刪除原理
- 靜態(tài)文件:沒有進(jìn)程或程序正在訪問的文件
所有的硬鏈接數(shù)為0(i_link),即所有硬鏈接都被干掉了鸵膏,包括自身膊升。
硬鏈接的數(shù)量的代表變量符號(hào)i_link
rm -f oldboy.txt oldboy_hard_link
執(zhí)行完 其實(shí)文件也沒刪,關(guān)機(jī)停止運(yùn)行谭企。
a.系統(tǒng)定時(shí)清理沒有文件名的inode廓译。
b.磁盤檢查會(huì)清理。
c.增加新文件時(shí)優(yōu)先占用沒有文件名的inode赞咙。
恢復(fù)的工具:debugfs,ext3grep等等责循。
亡羊補(bǔ)牢其實(shí)不可取的,違反運(yùn)維的三大核心原則攀操。
多備份院仿,操作前備份,異服務(wù)器和異地備份速和。 -
動(dòng)態(tài)文件:有程序或進(jìn)程訪問的文件
刪除原理:
a.所有硬鏈接刪除歹垫。i_link為0.
b..i_count是進(jìn)程調(diào)用文件的數(shù)量(引用計(jì)數(shù))。所有進(jìn)程調(diào)用都要停止取消颠放。i_count為0