Linux之文件屬性

文件屬性是什麼?

[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      # 文件名不是文件的屬性

 

inod和block簡介

咱們從得到一個硬盤,到能夠向硬盤中存放數據,都經歷了哪些階段?linux

作一個比喻,把硬盤比做房子的話。shell

有房子----------------->買了個硬盤apache

劃分隔斷-------------->分區windows

裝修-不一樣風格-------->格式化建立文件系統centos

安裝門窗--------------->掛載tomcat

住人--------------------->存數據bash

 

inode

一、inode的含義

用來存放文件屬性的空間app

咱們經過iNode號碼來找到這個空間ssh

inode號碼----家庭住址
inode空間----家

文件名不存放在inode中。

二、inode怎麼出來的

經過格式化建立文件系統,獲得

三、inode的特色

  1. inode存放文件屬性
  2. 存放block的位置(指向block的指針)
  3. 建立一個文件要佔用一個inode
  4. inode節點號相同的文件,互爲硬連接文件,能夠認爲是一個文件的不一樣入口
  5. 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

 

 

block

一、block的含義

 數據塊,實際存放數據的位置

二、block是怎麼來的

也是格式化建立文件系統

三、block的特色

  1. block是實際存放數據的位置
  2. block 默認4k(centos 6.x) 1k 8k
  3. 建立大文件會佔用多個block,若是文件很小1k,4k剩餘的空間會被浪費。
  4. 建立一個非空文件要佔用一個inode和至少1個block
  5. 每讀取一個block就會消耗一次磁盤I/O(input/output 磁盤讀寫)。

四、怎麼使用和查看

[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

 

 

oldboyfile尋寶

 

經典案例:磁盤空間不足

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

 

linux文件類型和擴展名

常見文件類型的種類

- 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

 

 

Linux下面的擴展名

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·ڝ¡o𵮙sṅsL±ȵ¯gՐºµ¯࠿؃󿾟}Ꮅ"(
# 查看壓縮包文件
[root@luffy_boy-001 ~]# tar tf /oldboy.txt 
oldboy/alex.txt

 

linux有如下常見的擴展名

.sh     腳本文件

.conf  配置文件

 

Linux裏面用戶角色分類

總體對於一個文件/目錄來講:用戶能夠分爲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----用戶沒法登錄系統,至關因而傀儡用戶

 

 

Linux基礎權限(9位權限)介紹

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

 

 

軟連接和硬連接

軟連接--至關於win的快捷方式

也叫做,符號連接

 

如何建立軟連接

[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 進程調用數不爲零 文件沒有被完全刪除磁盤空間不足

 

 

磁盤空間不足問題小結(no space left on device)

1.block滿了正常-500G 存放505G視頻
2.inode滿了,大量的小文件
3.block 硬連接數量爲0 進程調用數不爲0 ,文件沒有被完全刪除磁盤空間不足

 

排查:

 

Linux文件屬性之時間

3種mtime   modified  time 文件的修改時間             文件內容的變化時間ctime    change   time 文件屬性的改變時間       硬連接數量 文件大小 文件權限atime   access    time 文件的訪問時間              cat

相關文章
相關標籤/搜索