重點:
1、軟硬連接區(qū)別闺骚。
2彩扔、文件刪除原理。
1)掌握Linux文件屬性的各個列的含義(ls -lhi結(jié)果)及對應(yīng)知識概念僻爽。
2)磁盤空間不足故障的多重判斷和解決(面試吵娴铮考)。
3)請描述軟鏈接和硬鏈接的特點及區(qū)別(面試承匕穑考)敦捧。
4)請描述Linux系統(tǒng)文件刪除的原理(面試常考)
1.老男孩思想
1.1 優(yōu)秀的運維習(xí)慣
(1)內(nèi)容盡量復(fù)制碰镜,以減少錯誤兢卵。
(2)操作中備份,操作后檢查绪颖。
(3)使用中記憶秽荤。
(4)眼睛里一定不要放過有輸出的英文。
(5)永遠(yuǎn)不要重啟linux柠横。
2.selinux
2.1 什么是selinux窃款?
selinux是一套安全規(guī)則,讓linux系統(tǒng)更安全的一套規(guī)則滓鸠。
但是這個跪著太嚴(yán)格了雁乡,一般情況下都會關(guān)閉selinux。
自己開啟防火墻糜俗,用其他手段來實現(xiàn)同樣的安全目的踱稍。
2.2 怎么關(guān)掉selinux?
查看方法:
[root@oldboyedu ~]# getenforce
Enforcing
臨時關(guān)掉:
[root@oldboyedu ~]# setenforce
usage:? setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@oldboyedu ~]# setenforce 0
[root@oldboyedu ~]# getenforce
Permissive
永久關(guān)閉:
vim /etc/selinux/config
[root@oldboyedu ~]# grep dis /etc/selinux/config
#? ? disabled - No SELinux policy is loaded.
SELINUX=disabled
備注:一般工作中是臨時關(guān)閉再永久關(guān)閉(這樣不用重慶就可以有永久關(guān)閉selinux).
3.防火墻
linux里的防火墻(c6 iptables悠抹、c7 firewalld)
作用:防護(hù)計算機(jī)珠月,防止被入侵。
systemctl status firewalld.service
開啟firewalld(C6 service iptables start 或者/etc/init.d/iptables start)
[root@oldboyedu ~]# systemctl start firewalld.service
[root@oldboyedu ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
? Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
? Active: active (running) since Sun 2020-10-04 20:48:49 CST; 1s ago
? ? Docs: man:firewalld(1)
Main PID: 7003 (firewalld)
? CGroup: /system.slice/firewalld.service
? ? ? ? ? └─7003 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Oct 04 20:48:48 oldboyedu systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 04 20:48:49 oldboyedu systemd[1]: Started firewalld - dynamic firewall daemon.
讓firewalld開機(jī)自啟動
[root@oldboyedu ~]# systemctl enable firewalld.service
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
C6用法:chkconfig iptables off
C7就是一個命令systemctl
備注:自學(xué)systemctl和chkconfig
4.硬鏈接
語法:ln 源文件 硬鏈接文件
4.1什么是硬鏈接楔敌?
就是具有相同indoe節(jié)點號的文件互為硬鏈接啤挎,相當(dāng)于一個文件的兩個入口。
4.2 硬鏈接的作用
備份、防止誤刪
[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
4.3目錄硬鏈接
不支持人工創(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
5.軟鏈接
5.1什么是軟鏈接象对?
軟鏈接本質(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
5.2 工作中為什么會使用軟鏈接。
第一個用途:
安裝軟件:/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
6.linux文件刪除原理
1.靜態(tài)文件:(沒有進(jìn)程或程序正在訪問的文件)
所有的硬鏈接數(shù)為0(i_link) 垃帅,即所有硬鏈接都被干掉延届,包括自身。
硬鏈接的數(shù)量的代表變量符號? i_link
rm -f oldboy.txt oldboy_hard_link 執(zhí)行完贸诚,其實文件也沒刪方庭。(如果想拿回,直接關(guān)機(jī)酱固,停止執(zhí)行)
什么時候才刪:a.系統(tǒng)定時清理沒有文件名的inode械念。
? ? ? ? ? ? ? ? ? ? ? ? b.磁盤檢查的時候會清理。
? ? ? ? ? ? ? ? ? ? ? ? c.增加新文件時运悲,會優(yōu)先占用沒有文件名的inode
恢復(fù)的工具:debugfs龄减、ext3grep等等。
注意:亡羊補牢是不可取的班眯。直接違反運維的三大核心原則希停。
多備份,操作前備份署隘,異服務(wù)器和異地備份宠能。
流浪地球,人類備份磁餐。
2违崇。動態(tài)文件:有程序或進(jìn)程訪問的文件
刪除:
a.? i_link為0 。所有硬鏈接都要刪除。
b. i count為0.i_count是進(jìn)程調(diào)用文件的數(shù)量(引用計數(shù))羞延,所有進(jìn)程調(diào)用都要停止取消渣淳。
補充課外:
光一秒30w公里
月地距離? ? 38萬公里
日地距離? ? 1.5億公里 8分鐘
太陽系大小?
第二近的恒星 4光年
地球 46億年了。42億前伴箩。
太陽處于中年 壽命70億年水由。大到太陽吞噬地球。
銀河系大小 10萬光年
宇宙大小? 可探測到的直徑1000億光年
3.實踐文件刪除原理
環(huán)境準(zhǔn)備赛蔫,命令集合如下:
mkdir -p /app/logs? ? ? ? ? ? ? ? ? ? ? ? ? #<==創(chuàng)建用于掛載的目錄。
dd if=/dev/zero of=/dev/sdc bs=8K? count=10? #<==創(chuàng)建指定大小的文件泥张。
mkfs.ext4 /dev/sdc? ? ? ? ? ? ? ? ? ? ? ? ? #<==格式化呵恢。
mount -o loop /dev/sdc /app/logs? ? ? ? ? ? #<==掛載。
df -h? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #<==檢查掛載結(jié)果媚创。
實踐:
[root@oldboyedu /data]# cd /app/logs/
[root@oldboyedu /app/logs]# touch nginx.log
[root@oldboyedu /app/logs]# tail -f nginx.log
[root@oldboyedu /app/logs]# cat /etc/services >>nginx.log
cat: write error: No space left on device
[root@oldboyedu /app/logs]# df -h
Filesystem? ? ? Size? Used Avail Use% Mounted on
/dev/sda3? ? ? ? 19G? 1.9G? 18G? 10% /
devtmpfs? ? ? ? 980M? 80K? 980M? 1% /dev
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /dev/shm
tmpfs? ? ? ? ? 991M? 9.5M? 981M? 1% /run
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /sys/fs/cgroup
/dev/sda1? ? ? 253M? 136M? 118M? 54% /boot
tmpfs? ? ? ? ? 199M? ? 0? 199M? 0% /run/user/0
/dev/loop0? ? ? 73K? 71K? ? 0 100% /app/logs
明明刪除了渗钉,結(jié)果還是100%。
[root@oldboyedu /app/logs]# rm -f nginx.log
[root@oldboyedu /app/logs]# lsof|grep nginx
tail? ? ? 7927? ? ? ? root? ? 3r? ? ? REG? ? ? ? ? ? ? ? 7,0? ? 57344? ? ? ? 12 /app/logs/nginx.log (deleted)
[root@oldboyedu /app/logs]# df -h
Filesystem? ? ? Size? Used Avail Use% Mounted on
/dev/sda3? ? ? ? 19G? 1.9G? 18G? 10% /
devtmpfs? ? ? ? 980M? 80K? 980M? 1% /dev
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /dev/shm
tmpfs? ? ? ? ? 991M? 9.5M? 981M? 1% /run
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /sys/fs/cgroup
/dev/sda1? ? ? 253M? 136M? 118M? 54% /boot
tmpfs? ? ? ? ? 199M? ? 0? 199M? 0% /run/user/0
/dev/loop0? ? ? 73K? 71K? ? 0 100% /app/logs
重來:
模擬進(jìn)程讀文件:
[root@oldboyedu /app/logs]# touch nginx.log
[root@oldboyedu /app/logs]# tail -f nginx.log
ln nginx.log nginx_hard.log
當(dāng)前:
i_link=2
i_count=1
模擬把文件變大钞钙,讓分區(qū)滿
[root@oldboyedu /app/logs]# cat /etc/services >>nginx.log
cat: write error: No space left on device
[root@oldboyedu /app/logs]# df -h
Filesystem? ? ? Size? Used Avail Use% Mounted on
/dev/sda3? ? ? ? 19G? 1.9G? 18G? 10% /
devtmpfs? ? ? ? 980M? 80K? 980M? 1% /dev
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /dev/shm
tmpfs? ? ? ? ? 991M? 9.5M? 981M? 1% /run
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /sys/fs/cgroup
/dev/sda1? ? ? 253M? 136M? 118M? 54% /boot
tmpfs? ? ? ? ? 199M? ? 0? 199M? 0% /run/user/0
/dev/loop0? ? ? 73K? 71K? ? 0 100% /app/logs
分區(qū)滿了:清理鳄橘,刪除。
刪除源文件
[root@oldboyedu /app/logs]# rm -f nginx.log
結(jié)果:
i_link=1
i_count=1
ctrl+c 中斷 進(jìn)程調(diào)用文件
結(jié)果:
i_link=1
i_count=0
刪除硬鏈接文件
[root@oldboyedu /app/logs]# rm -f nginx_hard.log
結(jié)果:
i_link=0
i_count=0
[root@oldboyedu /app/logs]# df -h
Filesystem? ? ? Size? Used Avail Use% Mounted on
/dev/sda3? ? ? ? 19G? 1.9G? 18G? 10% /
devtmpfs? ? ? ? 980M? 80K? 980M? 1% /dev
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /dev/shm
tmpfs? ? ? ? ? 991M? 9.5M? 981M? 1% /run
tmpfs? ? ? ? ? 991M? ? 0? 991M? 0% /sys/fs/cgroup
/dev/sda1? ? ? 253M? 136M? 118M? 54% /boot
tmpfs? ? ? ? ? 199M? ? 0? 199M? 0% /run/user/0
/dev/loop0? ? ? 73K? 14K? 54K? 21% /app/logs
7.通配符
7.1 什么是通配符:
鍵盤上的特殊符號芒炼,用這些符號來代替一些功能瘫怜,例如,用于*來表示所有
7.2通配符的應(yīng)用范圍
通配符適用范圍是命令行中【普通命令】或腳本編程中本刽。
7.3實例:
第一組 模糊匹配:
準(zhǔn)備:
[root@oldboyedu /data]# touch a.txt b.txt aa.txt test.txt
[root@oldboyedu /data]# ls
aa.txt? a.txt? b.txt? test.txt
補:mv移動原理