1 概述
我們常以為目錄是個容器,放著目錄和檔案。實際上,目錄是個對映表。人使用檔名來引用檔案,計算機使用inode號碼來引用檔案。而目錄則是檔名和inode號碼之間的對映表。
2 cp和inode
用法:
cp [選項] 檔案 [檔案2|檔案3...] 目標
選項:-i 在覆蓋檔案前詢問
-r 遞迴地複製整個目錄樹
-p 保留許可權,所有者,和時間戳
-a -r和-p的結合
cp命令必須總是至少有兩個引數,如果給出的引數超過兩個,除了最後乙個引數以外的所有引數都會被解系成原始檔
目標影響cp的行為:
如果目標是目錄,複製後的檔案就會被放置其中
如果目標是檔案,複製後的檔案就會覆蓋目標
如果目標不存在,複製後的檔案就會被重新命名為目標名
inode角度:
1)分配乙個未用的inode號碼,在inode表中新增乙個新專案
2)在目錄對映表建立一行,關聯檔名和inode號碼
3 mv和inode
mv的行為和cp相同,除了mv時,原始檔會消失
當乙個檔案mv後,構成這個檔案的實際內容,不管是inode專案還是硬碟上的資料,都沒有被轉移。被轉移的僅僅是目錄對映表。
兩種情況:
1)目標和原檔案在同乙個檔案系統
a)在目錄對映表新建一行
b)刪除帶有源檔名的原有目錄行
2)如果目標是不同的檔案系統
mv的行為就是複製和刪除
案例:
[root@think water]# ll -i w
3496568 -rw-r--r-- 1 root root 17 09-25 15:12 w
[root@think water]# mv w /home/water
[root@think water]# cd /home/water
[root@think water]# ll -i w
3496568 -rw-r--r-- 1 root root 17 09-25 15:12 w
inode號碼仍就一樣。檔案系統上的資料沒轉移,inode表沒變,只不過其上的時間戳被更新
4 rm和inode
rm -r 刪除目錄及其內容,但每刪一樣之前都會詢問
rm -f 刪除目錄及其內容,但每刪一樣之前不會詢問
inode分析:
1)遞減鏈結計數,從而釋放inode號碼,這個inode號碼可以被重用
2)把資料塊掛到可用空間列表
3)刪除目錄對映表中的相關行
但是底層資料實際上沒有被刪除,只是當資料塊被另乙個檔案使用時,原來的資料就會被覆蓋
描述角度的分布彙總
最近在尋找描述角度的分布時,發現了一本書 statistical analysis of circular data 對於這些分布的特性與應用比較詳細,在這裡先記錄幾個典型分布作為之前博文的備選。f c 1 2 f theta frac fc 2 1 其中 0,2 0,1 2 theta in 0,...
從記憶體角度看問題
本人程式設計時間雖然不長。但現在覺得一些問題不能光從語法角度理解,能從在記憶體中是如何的角度考慮,似乎問題想得更清楚,更容易理解。畢竟我們讓乙個應用程式執行,就是啟動乙個程序,作業系統賦予它位址空間,將相應的 和資料載入到位址空間。再載入dll,啟動新執行緒,也都是在分配記憶體 物理空間 載入 或維...
從設計角度分析MVC
ps 原來寫文章是從來也不寫提綱的,現在通過不斷的設計訓練和 注釋的影響,沒提綱就寫不下去了 言歸正傳,mvc作為一種軟體設計模式,它用一種業務邏輯 資料和介面顯示互相分離的方法組織 將業務邏輯單獨封裝,使得在介面及與使用者互動的形式改變時不影響到邏輯。1 模式簡介 mvc是一種建立web應用程式的...