1.檔案管理
檔案系統描述檔案在硬碟中的組織,儲存在硬碟中的檔案,目錄,軟鏈結。
為了更加方便的管理持久化檔案儲存,作業系統一般對應胖進行有規劃的管理,
規劃包括:
。分割槽。格式化
檔案系統指乙個分區內,檔案儲存組織的方式
在linux下,通過mount命令將分割槽掛載到虛擬檔案系統
2,inode
乙個音訊分割槽,被格式化之後,可以認為硬碟被劃分成兩部分:管理資料和資料
管理資料部分儲存著這個分割槽的分割槽資訊,以及inode表.
inode儲存檔案的屬性資訊,stat命令能看到的資訊,大部分都是儲存在inode裡的乙個inode占用128或256個位元組,這個依賴具體的檔案系統,每當在硬碟上建立乙個檔案/目錄 時,系統為這個檔案/目錄分配乙個inode。值得注意的是,檔名,不存在inode中,而是存在檔案內容部分.
3,資料塊
資料部分被簡單的,根據等大尺寸劃分成n塊,一般每塊資料塊的尺寸為1024--4096,由具體檔案系統決定
4,檔案
當建立乙個檔案時,系統為該檔案分配乙個inode.如果往該檔案寫資料,那麼系統為該檔案分配資料庫,inode會記錄這個資料塊的位置,當乙個資料塊不夠用的時候,系統會繼續為他分配資料塊
5,目錄
當建立乙個目錄時,系統為該目錄分配乙個inode,同時分配乙個資料庫,並且在該資料塊中,記錄檔案好對應的inode,同時分配乙個資料塊,並且在該資料塊中,記錄檔案和對應的inode
如果該目下建立檔案,newfile,會為該檔案建立inode,最後將newfile檔名he ==和它的indoe,做了一條記錄,儲存在目錄的數資料塊.
如果乙個inode被別人引用,那麼它的引入計數器加1.
6,路口和定址
linux系統採用以/劃分的路徑字串來定址檔案
比如命令mkdir testdir,定址和操作過程如下圖:
補充:檢視磁碟資訊
sudo fdisk -l
磁碟名字sda sdb....
分割槽名字 sda1 sda2....
分割槽sudo fdisk /dev/sdb
n 建立新分割槽
p輸出分割槽資訊
w儲存分割槽資訊並退出
分割槽和掛載
sudo mkfs.ext4 /dev/sdb1
sudo mount /dev/sdb1 xxyy
掛載成功之後,對xxyy目錄的讀寫,其實實在/dev/sdb1檔案系統中
開機自動掛載
通過mount掛載的目錄時臨時的.如果希望開機就掛載,那麼可以將掛載命令寫入到etc/profil.或者修改/etc、fstab檔案,/etc/fstab描述了開機需要掛載的檔案系統資訊
去除掛載
通過手動umount去除掛載
7 硬鏈結和軟連線
硬鏈結不占用inode,只占用目錄項
軟鏈結占用inode
建立鏈結命令ln,硬鏈只將對應的inode在目錄總增加乙個名字,並且將inode的引用計數器+1
為了可以跨檔案系統和對目錄進行鏈結,建立軟鏈結這種軟鏈結這個方式. ln -s
8,虛擬檔案系統 vfs
記憶體無法載入硬碟所有內容,應為一般記憶體比硬碟小,但是在linux 核心中,維護了乙個虛擬檔案系統,將硬碟的目錄結構對映到記憶體中,這個對映一般只包含已經被開啟的檔案
9, 檔案刪除
使用unlink命令和函式可以刪除乙個檔案。
如果此時檔案已經被開啟,那麼該檔案也可以被unlink,但是刪除操作不會立即執行,而會保留到檔案關閉時執行
unlink 刪除檔案,如果是鏈結,就刪除鏈結,如果不是鏈結就刪除檔案
rmdir 只能刪除空目錄
rm 會判斷引數型別,如果是檔案那麼會呼叫unlink,如果是目錄會呼叫rmdir
如果要刪除非空目錄,要使用rm -r, -r選項先刪除目錄中的檔案,再呼叫rmdir
10 檔案時間
對檔案的訪問,會導致檔案時間發生變化,系統會自動記錄使用者對檔案的操作的時間戳,以便將來可以查詢檔案修改時間
如果需要故意修改,那麼可以通過utime函式,修改檔案的訪問時間和修改時間
touch 命令也可以將檔案的時間修改為當前時間,touch命令的***是,如果引數所指檔案不存在, 那麼建立乙個空檔案
當使用者進行打規模拷貝時,cp操作會修改檔案的訪問時間,如果想提高效率,可以使用-p選項,避免檔案屬性的修改時間
11 目錄操作
建立和刪除目錄
mkdir和rmdir
遍歷目錄
opendir, closedir, readdir, rewinddir , telldir, seekdir
零散知識收集
success在介面com.opensymphony.xwork2.action中定義,另外同時定義的還有error,input,login,none。值得一提的是struts 2.0中的result不僅僅是struts 1.x中forward的別名,它可以實現除forward外的很激動人心的功能,...
C 零散知識
全域性變數的初始化時機 c 是在編譯期初始化,c 是在程式執行時,main 函式之前初始化.不使用中間變數實現 strlen int mystrlen const char str c 語言函式引數入棧順序為從右至左。具體原因為 c 方式引數入棧順序 從右至左 的好處就是可以動態變化引數個數。通過棧...
Python 零散知識
1.set 集合 2.格式化字串時 可以使用 元組 eg info zhangsan 18 print s 年齡是 d info 3.zip的 使用方法 a 1,2,3 b 4,5,6 c 4,5,6,7,8 zipped zip a,b 打包為元組的列表 1,4 2,5 3,6 zip a,c 元...