天天看點

檔案屬性-檔案删除原理

第1章 磁盤空間不足

執行個體1-1             no space left on device 原因 如何排查與解決

1.inode  df -i ; 找出系統中目錄大小大于1M   确認之後 删除大量小檔案

2.block  df -h ; du -sh 一層一層查找         确認之後 删除檔案

第2章 檔案屬性

2.1 檔案類型:

2.1.1 擴充名

.conf            配置檔案

.sh               腳本

.tar.gz          壓縮包

.py              python腳本

2.1.2 檔案類型:

1.二進制檔案(指令)

2.文本檔案(text)

3.資料檔案(data)需要單獨指令檢視

f          file                 檔案

d          dir                 目錄

l           softlink          軟連接配接

b    block       塊裝置

c    character         字元裝置

p    pipe                 管道

s    socket              套接字

[root@oldboyedu50-lnb /tmp]# file  /bin/ls /etc/hosts /tmp/etc-pai.tar.gz

/bin/ls:             ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

/etc/hosts:          ASCII text

/tmp/etc-pai.tar.gz: gzip compressed data, from Unix, last modified: Fri Jul 20 02:39:55 2018

 [root@oldboyedu50-lnb /tmp]# ll  etc.tar.gz

-rw-r--r-- 1 root root 9734648 Jul 20 01:41 etc.tar.gz

[root@oldboyedu50-lnb /tmp]# mv etc.tar.gz etc.txt

[root@oldboyedu50-lnb /tmp]# ll etc.txt

-rw-r--r-- 1 root root 9734648 Jul 20 01:41 etc.txt

2.2 檔案權限

r----read       可讀     4

w----write      可寫     2

x----execute    可執行   1

-                        0

2.2.1 權限的計算

-rw-    r--     r-- 2 root root 186 Jul 26 11:19 /etc/hosts

 420    400     400

 6      4       4

1.字元轉換數字

-rw-r-----          640

-r--r--r--            444

-rw-r--r--           644

-rw-------          600

2.數字轉換字元

644             -rw-r--r--

755             -rwxr-xr-x

400             -r--------

640             -rw-r-----

2.3 連結:

軟連接配接(softlink  或 符号連結 symlink)   硬連結  (hard link)

2.3.1 硬連結:

在同一個磁盤分區中,檔案的inode号碼相同,互為硬連結

1.特點  同一個分區中  inode相同的檔案,互為硬連結

2.防止誤删除

3.徹底删除一個檔案條件:

 檔案硬連結數為0(rm)

建立硬連結 ln指令建立

 [root@oldboyedu50-lnb /oldboy]# echo oldboyedu.com > oldboy.txt

[root@oldboyedu50-lnb /oldboy]# ll oldboy.txt

-rw-r--r-- 1 root root 14 Jul 27 21:49 oldboy.txt

[root@oldboyedu50-lnb /oldboy]# ln oldboy.txt  oldboy.txt-hard

-rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt

[root@oldboyedu50-lnb /oldboy]# ll -i oldboy.txt oldboy.txt-hard

1046996 -rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt

1046996 -rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt-hard

2.3.2 軟連接配接:

相當于windows快捷方式 存放的源檔案的位置

建立軟連接配接

[root@oldboyedu50-lnb /oldboy]# ln  -s   oldboy.txt   oldboy.txt-soft

[root@oldboyedu50-lnb /oldboy]# ls -l  oldboy.txt*

-rw-r--r-- 2 root root 14 Jul 27 21:49 oldboy.txt-hard

lrwxrwxrwx 1 root root 10 Jul 27 22:09 oldboy.txt-soft -> oldboy.txt

lrwxrwxrwx 1 root root 18 Jul 27 22:16 oldboy.txt-soft2 -> /oldboy/oldboy.txt

[root@oldboyedu50-lnb /oldboy]# mv alex.txt oldboy.txt

2.4 檔案删除原理:

1.硬連接配接數為0    rm

2.程序調用數為0 是否有人使用

2.4.1 如何檢視 被占用的檔案                    

lsof |grep oldboy.txt           tail -f /oldboy/oldboy.txt

list open files    

[root@oldboyedu50-lnb /oldboy]# lsof |grep oldboy.txt

tail    3755   root    3r    REG      8,3      14   1046996    /oldboy/oldboy.txt

指令或服務名稱                                 檔案大小         inode号碼 檔案名

執行個體2-1             模拟 檔案沒有被徹底删除(i_link)為0 程序調用數(i_count)不為0

seq 500000000 >>/var/log/messages

1.檢視磁盤使用

[root@oldboyedu50-lnb /oldboy]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G   17G  1.1G  95% /

tmpfs           931M     0  931M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

/dev/sdc         73K   14K   55K  21% /app/logs

[root@oldboyedu50-lnb /oldboy]# du -sh /*|sort -h |tail -1

16G /var

[root@oldboyedu50-lnb /oldboy]# du -sh /var/*|sort -h|tail -1

16G /var/log

[root@oldboyedu50-lnb /oldboy]# du -sh /var/log/*|sort -h|tail -1

16G /var/log/messages

2.删除這個檔案

[root@oldboyedu50-lnb /oldboy]# ll /var/log/messages

-rw------- 1 root root 16197811985 Jul 27 23:00 /var/log/messages

tmpfs           931M     0  931M   0% /dev/shm

[root@oldboyedu50-lnb /oldboy]# \rm -f /var/log/messages

3.磁盤空間不足  繼續通過du -sh 排查

[root@oldboyedu50-lnb /oldboy]# du -sh /* |sort -h |tail

du: cannot access `/proc/3800/task/3800/fd/4': No such file or directory

du: cannot access `/proc/3800/task/3800/fdinfo/4': No such file or directory

du: cannot access `/proc/3800/fd/4': No such file or directory

du: cannot access `/proc/3800/fdinfo/4': No such file or directory

376K   /root

7.6M   /bin

16M /sbin

27M /lib64

30M /etc

38M /boot

80M /var

114M   /tmp

214M   /lib

1.1G   /usr

4. 原因:檔案沒有被徹底删除

       找出這個被占用檔案

[root@oldboyedu50-lnb /oldboy]# lsof |grep messages

rsyslogd  1412      root    4w      REG                8,3 16197811985     392705 /var/log/messages (deleted)

5.解決

#deleted  lsof标記  表示檔案硬連結數為0  程序調用數不為0

#程序調用數為0 ==== 重新開機服務/軟體

[root@oldboyedu50-lnb /oldboy]# /etc/init.d/rsyslog restart

Shutting down system logger:                               [  OK  ]

Starting system logger:                                    [  OK  ]

/dev/sda3        19G  1.6G   17G   9% /

tmpfs           931M     0  931M   0% /dev/shm

繼續閱讀