[root@luffy_boy-001 /]# ls -lhi /etc/hosts 129822 -rw-r--r--. 2 root root 198 Jan 11 2019 /etc/hosts
文件屬性就是 ls -lhi 命令輸出結果每一列的含義node
l list one file per line i --inode print the index number of each file h --human-readable with -l, print sizes in human readable format (e.g., 1K 234M 2G)
129822 # inode號碼 - # 文件類型 rw-r--r--. # 文件的權限.(.與selinux有關) 2 # 文件硬連接數量 root # 主人 root # 家人 198 # 文件大小 Jan 11 2019 # 最後修改時間 /etc/hosts # 文件名不是文件的屬性
咱們從得到一個硬盤,到能夠向硬盤中存放數據,都經歷了哪些階段?linux
作一個比喻,把硬盤比做房子的話。shell
有房子----------------->買了個硬盤apache
劃分隔斷-------------->分區windows
裝修-不一樣風格-------->格式化建立文件系統centos
安裝門窗--------------->掛載tomcat
住人--------------------->存數據bash
用來存放文件屬性的空間app
咱們經過iNode號碼來找到這個空間ssh
inode號碼----家庭住址
inode空間----家
文件名不存放在inode中。
經過格式化建立文件系統,獲得
[root@luffy_boy-001 /]# df -i (系統裏面inode用了多少,剩餘多少) Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 462384 55433 406951 12% / tmpfs 488562 1 488561 1% /dev/shm /dev/sda1 51200 39 51161 1% /boot /dev/sr0 0 0 0 - /mnt [root@luffy_boy-001 /]# df -ih (-h人類可讀) Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 452K 55K 398K 12% / tmpfs 478K 1 478K 1% /dev/shm /dev/sda1 50K 39 50K 1% /boot /dev/sr0 0 0 0 - /mnt [root@luffy_boy-001 /]# ls -ilh (查看某些文件的inode) total 122K 143585 drwxr-xr-x. 3 root root 4.0K Jan 12 2019 app 29 dr-xr-xr-x. 2 root root 4.0K Jan 10 2019 bin 2 dr-xr-xr-x. 5 root root 1.0K Jan 10 2019 boot 143562 drwxr-xr-x. 2 root root 4.0K Jan 10 2019 data 143552 drwxr-xr-x. 3 root root 4.0K Jan 10 2019 data_bak 4 drwxr-xr-x. 20 root root 3.7K Jan 10 2019 dev 129795 drwxr-xr-x. 78 root root 4.0K May 20 01:08 etc 30 drwxr-xr-x. 3 root root 4.0K Jan 11 2019 home
數據塊,實際存放數據的位置
也是格式化建立文件系統
[root@luffy_boy-001 /]# df -h (查看磁盤block使用狀況) Filesystem Size Used Avail Use% Mounted on /dev/sda3 6.9G 1.5G 5.1G 22% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sr0 3.7G 3.7G 0 100% /mnt
[root@luffy_boy-001 /]# ls -lh total 122K drwxr-xr-x. 3 root root 4.0K Jan 12 2019 app dr-xr-xr-x. 2 root root 4.0K Jan 10 2019 bin dr-xr-xr-x. 5 root root 1.0K Jan 10 2019 boot drwxr-xr-x. 2 root root 4.0K Jan 10 2019 data drwxr-xr-x. 3 root root 4.0K Jan 10 2019 data_bak drwxr-xr-x. 20 root root 3.7K Jan 10 2019 dev
no space left on device磁盤空間不足-由於block滿了。 seq 100000000 >/tmp/big #第一個里程碑-看看到底哪裏滿了 [root@oldboyedu01-nb ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 8.8G 0 100% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot #第二個里程碑-是哪個目錄佔得空間大,最終定位到目錄或文件 [root@oldboyedu01-nb ~]# [root@oldboyedu01-nb ~]# du -sh /*|grep G 1.1G /usr 7.4G /var [root@oldboyedu01-nb ~]# du -sh /var/*|grep G 7.3G /var/log [root@oldboyedu01-nb ~]# du -sh /var/log/*|grep G 7.3G /var/log/messages [root@oldboyedu01-nb ~]# ls -lh /var/log/messages -rw------- 1 root root 7.3G Oct 16 19:20 /var/log/messages #第三個里程碑-問清楚是否能夠刪除,而後在操做。 【Y】企業案例:若是向磁盤寫入數據提示以下錯誤:No space left on device(磁盤空間不足),經過df -h查看磁盤空間,發現沒滿,請問可能緣由是什麼?企業場景什麼狀況下會致使這個問題發生? inode用光了。 模擬環境的命令。 mkdir -p /app/logs dd if=/dev/zero of=/dev/sdc bs=8K count=10 ls -l /dev/sdc mkfs.ext4 /dev/sdc mount -o loop /dev/sdc /app/logs [root@oldboyedu01-nb ~]# cd /app/logs/ [root@oldboyedu01-nb logs]# touch stu{1..6}.log touch: cannot touch `stu6.log': No space left on device [root@oldboyedu01-nb logs]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.6G 6.9G 19% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdc 73K 14K 55K 21% /app/logs [root@oldboyedu01-nb logs]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 593344 58530 534814 10% / tmpfs 488562 1 488561 1% /dev/shm /dev/sda1 51200 39 51161 1% /boot /dev/sdc 16 16 0 100% /app/logs
解決辦法:刪除一些不須要的文件,釋放一些inode
- f file 普通文件
d directory 目錄
l softlink 軟連接(快捷方式)
普通文件 都顯示的是 - ,可是也是有區別的,怎麼查看不一樣類型的普通文件呢? [root@oldboyedu01-nb ~]# ls -l /tmp/etc.tar.gz /bin/ls /etc/hosts -rwxr-xr-x. 1 root root 117048 Mar 23 2017 /bin/ls -rw-r--r--. 2 root root 200 Sep 25 20:19 /etc/hosts -rw-r--r-- 1 root root 9744299 Oct 20 2017 /tmp/etc.tar.gz
用file 查看文件詳細類型 ##二進制文件 命令 [root@oldboyedu01-nb ~]# file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped ##文本文件 [root@oldboyedu01-nb ~]# file /etc/hosts /etc/hosts: ASCII text ##數據文件 data [root@oldboyedu01-nb ~]# file /tmp/etc.tar.gz /tmp/etc.tar.gz: gzip compressed data, from Unix, last modified: Fri Oct 20 01:36:16 2017
windows windows下經過擴展名區分不一樣類型的文件。
linux 擴展名是用來給咱們本身看的。就算手動修改或者添加了擴展名,他的文件類型仍是不會改變
# 建立壓縮包文件 [root@luffy_boy-001 ~]# tar zcf /oldbo_y.txt /oldboy/alex.txt tar: Removing leading `/' from member names # 查看文件 [root@luffy_boy-001 ~]# cat /oldboy.txt Dz Y@P²'PؽF;MpM)´ê½吾43e¹ࠊR·ڝ¡osṅsL±ȵ¯gՐºµ¯}Ꮅ"( # 查看壓縮包文件 [root@luffy_boy-001 ~]# tar tf /oldboy.txt oldboy/alex.txt
linux有如下常見的擴展名
.sh 腳本文件
.conf 配置文件
總體對於一個文件/目錄來講:用戶能夠分爲3類
主人 全部者的名字
家人 全部者屬於的組的名字
陌生人
[root@oldboyedu01-nb tmp]# ll -hi /etc/hosts 390174 -rw-r--r--. 2 root root 200 Sep 25 20:19 /etc/hosts
假設我是pizza用戶,如何查詢我與這個文件有什麼關係?
[root@luffy_boy-001 ~]# id pizza
uid=500(pizza) gid=500(pizza) groups=500(pizza) #id查詢用戶信息 #屬於哪一個用戶組
linux中存在於系統中的用戶如何分類
linux中存在於系統中的用戶如何分類 UID user id 用戶的id號碼=====身份證號碼 √√√√√ GID group id 用戶組的id號碼===戶口本的號碼 UID 1.皇帝 root 0 2.傀儡 虛擬用戶 1-499 系統中每一個進程要有一個對應的用戶,沒法使用的. 3.貧民百姓 普通用戶 500+ 如何保護皇帝root 1.禁止root遠程登陸 2.修改ssh默認的端口號22 3.按期分析/var/log/secure 記錄着用戶的登陸信息 #與用戶有關的文件 /etc/passwd 存放的是用戶的信息 /etc/shadow 用戶密碼的信息 /etc/group 用戶組的信息 /etc/passwd root :x:0 :0 :root:/root :/bin/bash oldboy:x:500:500: :/home/oldboy:/bin/bash 第一列:用戶名字 第二列:存放密碼的地方 第三列:UID 第四列:GID 第五列:用戶的說明信息,默認爲空 第六列:用戶的家目錄 ~ root ~ /root oldboy ~ /home/oldboy 第七列:用戶使用的shell,用戶使用的命令解釋器 /bin/bash--------centos默認的命令解釋器 /sbin/nologin----用戶沒法登錄系統,至關因而傀儡用戶
r 4 read能夠讀取文件內容
w 2 write修改文件內容
x 1 execute能夠運行文件(命令 腳本)
- 0 什麼權限都沒有
[root@luffy_boy-001 ~]# ls -l total 40 -rw-------. 1 root root 1061 Jan 10 2019 anaconda-ks.cfg -rw-r--r--. 1 root root 21736 Jan 10 2019 install.log # 權限的顯示,和查看方法,分割成三部分 # rw- --- --- # rw- r-- r-- # 主人 家人 陌生人
420 000 000
420 400 400
6 0 0
6 4 4
[root@oldboyedu01-nb ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117048 Mar 23 2017 /bin/ls
421401401
7 5 5
也叫做,符號連接
如何建立軟連接
[root@luffy_boy-001 oldboy]# ln -s alex.txt alex.txt-soft [root@luffy_boy-001 oldboy]# ll total 36 -rw-r--r--. 1 root root 0 Jan 10 2019 alex.txt lrwxrwxrwx. 1 root root 8 May 20 23:02 alex.txt-soft -> alex.txt
軟連接的特色
一、存放着源文件的位置
二、源文件被刪除,軟連接會找不到原連接,並失效,顯示爲紅色,並閃動
三、節約時間
至關於,超市的先後門,經過不一樣的大門進入超市
在同一個分區中,兩個文件或多個文件的inode號碼相同,這些文件互爲硬連接
如何建立硬連接
[root@luffy_boy-001 oldboy]# ln alex.txt alex.txt-hard [root@luffy_boy-001 oldboy]# ll total 44 -rw-r--r--. 2 root root 4 May 20 23:04 alex.txt -rw-r--r--. 2 root root 4 May 20 23:04 alex.txt-hard lrwxrwxrwx. 1 root root 8 May 20 23:02 alex.txt-soft -> alex.txt
觀察到硬連接數量由 1 變成了 2
硬連接的特色
1.至關因而超市的先後門,硬連接數量就是超市一共有多少門
2.刪除硬連接或源文件,文件仍是可使用的
3.把硬連接和源文件都刪除,文件被刪除====>硬連接數量爲0
描述linux下軟連接和硬連接的區別 解答: 1) 如何建立: a)默認不帶參數狀況下,ln命令建立的是硬連接,帶-s參數的ln命令建立的是軟連接。 2) 含義: a)硬連接文件與源文件的inode節點號相同,而軟連接文件至關於windows下面的快捷方式(inode節點號與源文件不一樣)
b)硬連接主要用來防止誤刪,由於備份會佔大量空間 3) 特色: a)不能對目錄建立硬連接,但能夠建立軟連接,對目錄的軟連接會常常被用到 b)軟連接能夠跨文件系統,硬連接不能夠跨文件系統。 4) 怎麼沒的(源文件,軟連接,硬連接與刪除) a)刪除軟連接文件,對源文件及硬連接文件無任何影響; b)刪除文件的硬連接文件,對源文件及軟連接文件無任何影響; c)刪除連接文件的源文件,對硬連接文件無影響,會致使其軟連接失效(紅底白字閃爍狀); d)刪除源文件及其硬連接文件,整個文件纔會被"真正"的刪除。
什麼狀況,纔是文件被刪除了?
一、硬連接數爲0,使用rm
二、進程調用數爲0
三、當某個文件沒有被完全刪除,會致使磁盤空間滿了,由於只刪除了硬連接數,而一直有進程調用,這個文件會愈來愈大
四、如何解決:查找機器自身的服務,而後重啓apache和tomcat
模擬問題
模擬思路 向/var/log/secure 追加8億行 seq 800000000 #首先收到報警 [root@oldboyedu01-nb oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 8.8G 0 100% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdc 73K 14K 55K 21% /app/logs #正常的排錯過程。 [root@oldboyedu01-nb oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 8.8G 0 100% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdc 73K 14K 55K 21% /app/logs [root@oldboyedu01-nb oldboy]# du -sh /* |grep G du: cannot access `/proc/2904/task/2904/fd/4': No such file or directory du: cannot access `/proc/2904/task/2904/fdinfo/4': No such file or directory du: cannot access `/proc/2904/fd/4': No such file or directory du: cannot access `/proc/2904/fdinfo/4': No such file or directory 1.1G /usr 7.4G /var [root@oldboyedu01-nb oldboy]# du -sh /var/* |grep G 7.3G /var/log [root@oldboyedu01-nb oldboy]# du -sh /var/log/* |grep G 7.3G /var/log/secure [root@oldboyedu01-nb oldboy]# \rm -f /var/log/secure #磁盤空間滿了 [root@oldboyedu01-nb oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 8.8G 0 100% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdc 73K 14K 55K 21% /app/logs [root@oldboyedu01-nb oldboy]# du -sh /* |grep G du: cannot access `/proc/2914/task/2914/fd/4': No such file or directory du: cannot access `/proc/2914/task/2914/fdinfo/4': No such file or directory du: cannot access `/proc/2914/fd/4': No such file or directory du: cannot access `/proc/2914/fdinfo/4': No such file or directory 1.1G /usr 佔用空間明明很小,空間卻滿了 這就是由於,系統中某個文件沒有被完全刪除。
如何找出硬連接數量爲0,進程調用數不爲0 lsof 顯示系統中全部的文件 [root@oldboyedu01-nb oldboy]# lsof |grep delete rsyslogd 1250 root 2w REG 8,3 7803924480 130420 /var/log/secure (deleted) 軟件名稱 文件大小 文件名 (deleted)---標記 這個文件的硬連接數量爲0,進程調用數不爲0。 ##重啓對應的服務 [root@oldboyedu01-nb oldboy]# /etc/init.d/rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ] [root@oldboyedu01-nb oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.6G 6.9G 19% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sdc 73K 14K 55K 21% /app/logs 磁盤空間不足-no space left on device 1.block滿了正常-500G 存放505G視頻 2.inode滿了,大量的小文件 3.block 硬連接數量爲0 進程調用數不爲零 文件沒有被完全刪除磁盤空間不足
1.block滿了正常-500G 存放505G視頻
2.inode滿了,大量的小文件
3.block 硬連接數量爲0 進程調用數不爲0 ,文件沒有被完全刪除磁盤空間不足
排查:
3種mtime modified time 文件的修改時間 文件內容的變化時間ctime change time 文件屬性的改變時間 硬連接數量 文件大小 文件權限atime access time 文件的訪問時間 cat