1. 程式人生 > >linux下軟鏈接和硬鏈接的區別

linux下軟鏈接和硬鏈接的區別

var oldboyedu 追加 軟鏈接文件 tin ger 相關 star 鏈接

2) 1) 如何創建:
a)默認不帶參數情況下,ln命令創建的是硬鏈接,帶-s參數的ln命令創建的是軟鏈接。
2) 含義:
a)硬鏈接文件與源文件的inode節點號相同,而軟鏈接文件相當於windows下面的快捷方式(inode節點號與源文件不同)
3) 特點:
a)不能對目錄創建硬鏈接,但可以創建軟鏈接,對目錄的軟鏈接會經常被用到
b)軟鏈接可以跨文件系統,硬鏈接不可以跨文件系統。

4) 怎麽沒的(源文件,軟鏈接,硬鏈接與刪除)
a)除軟鏈接文件,對源文件及硬鏈接文件無任何影響;
b)除文件的硬鏈接文件,對源文件及軟鏈接文件無任何影響;
c)除鏈接文件的源文件,對硬鏈接文件無影響,會導致其軟鏈接失效(紅底白字閃爍狀);

d)時刪除源文件及其硬鏈接文件,整個文件才會被"真正"的刪除。

文件刪除原理

1)刪除這個文件所有相關的硬鏈接-rm---刪除廁所所有的入口
2)這個文件的進程調用數也為0 ------沒有人在使用廁所

1.硬鏈接數量為0
2.進程調用數為0

某個文件沒有被徹底刪除,導致的磁盤空間滿了。

模擬思路
向/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

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

linux下軟鏈接和硬鏈接的區別