linux下為什麼每次修改完配置檔案之後都需要重新載入配置檔案

人生的哲理發表於2020-12-14

一.關於inode

1.在linux下一切皆檔案,linux檔案由三部分組成:檔名,inode,block塊

  • ​ 檔名:檔名只是為了更好辨別檔案而起的別名;
  • ​ inode::inode儲存的是檔案的元資訊,比如:檔案位元組數、檔案屬主UID、檔案屬組GID、讀寫執行許可權、時間戳等。inode是linux系統識別檔案的唯一標識;
  • ​ block塊:block塊是真正儲存檔案資料的地方。

2.檢視檔名,inode,block塊的方法:可以使用stat命令

[root@node5 ~]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 2615      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 17363913    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-12-13 11:20:01.293083729 +0800
Modify: 2020-12-10 11:14:34.432545850 +0800
Change: 2020-12-10 11:14:34.434545850 +0800
 Birth: -

二.inode的作用

由於 inode 號碼與檔名分離,這種機制導致了一些 Unix/Linux 系統特有的現象:

  • ​ 有時,檔名包含特殊字元,無法正常刪除。這時,直接刪除 inode 節點,就能起到刪除檔案的作用;
  • ​ 移動檔案或重新命名檔案,只是改變檔名,不影響 inode 號碼;
  • ​ 開啟一個檔案之後,系統就以 inode 號碼來識別這個檔案,不再考慮檔名。因此係統無法從 inode 號碼得知檔名。

二.為什麼每次修改完伺服器配置檔案之後,都需要重新載入一下配置檔案?

答:因為vim每次修改完配置檔案之後,inode號都會改變,這對於linux系統來說這是一個新檔案,需要重新載入配置檔案。

[root@node5 ~]# cp /etc/profile profile

#-i引數可以檢視inode號,此時33688532就是profile的inode號
[root@node5 ~]# ll -i profile 
33688532 -rw-r--r-- 1 root root 1795 Nov 27 15:50 profile
 
#使用echo追加一些內容,發現inode號沒有改變
[root@node5 ~]# echo '#!/bin/bash' >> profile
[root@node5 ~]# ll -i profile 
33688532 -rw-r--r-- 1 root root 1807 Nov 27 15:51 profile
 
#使用vim修改檔案之後inode號已經改變
[root@node5 ~]# vim profile 

[root@node5 ~]# ll -i profile 
34449901 -rw-r--r-- 1 root root 1826 Nov 27 15:52 profile

相關文章