debugfs查詢檔案讀寫

2021-10-08 15:36:25 字數 1800 閱讀 8167

/etc/init.d/syslog stop

echo 1 > /proc/sys/vm/block_dump

sleep 60

dmesg | awk '/(read|write|dirtied)/ end ' |sort -nr |awk '' | \

head -n 10

#dmesg | egrep "read|write|dirtied" | egrep -o '([a-za-z]*)' | sort | uniq -c | sort -rn | head

echo 0 > /proc/sys/vm/block_dump

/etc/init.d/syslog start

dmesg -c && echo 1 >/proc/sys/vm/block_dump && sleep 3 && echo 0 > /proc/sys/vm/block_dump&& dmesg | grep sda

dmesg -c && echo 1 >/proc/sys/vm/block_dump && sleep 3 && echo 0 > /proc/sys/vm/block_dump&& dmesg | grep sdh

flush-8:48(1199): dirtied inode 18942347 (00016c30) on sdd1

flush-8:48(1199): write block 151972088 on sdd1

flush-8:48(1199): write block 151972096 on sdd1

通過dmesg資訊可以看到io正在寫那些檔案,有程序號,inode號,檔名和磁碟裝置名;但每個檔案寫了多少呢,僅僅通過dirtied inode就看不出來了,還需要分析write block,後面的數字並不是真正的塊號,而是核心io層獲取的扇區號,除以8即為塊號,然後根據debugfs工具的icheck和ncheck選項,就可以獲取該檔案系統塊屬於哪個具體檔案,具體請google之。

df ./檢視檔案系統 

debugfs 檔案系統

通過blocks 檔案路徑看檔案的塊號。乙個檔案佔據的塊號並不一定連續。

dd if=檔案系統路徑 of=輸出路徑 bs=4096 count=1 skip=塊號

例如:dd if=/dev/sda5 of=/root/out.txt bs=4096 count=1 skip=10086 

/root/out.txt檔案內容就是從塊號中讀到的內容    bs是塊大小(這裡為4k) count表示連續讀幾塊   skip是從第幾塊開始讀

乙個塊一般是4k大小,也可以在磁碟分割槽格式化時指定大小。乙個檔案可能對應多個塊,但乙個塊的內容只能屬於乙個檔案,不足的地方用00佔據。我們檢視out2.txt的內容:

注意:這裡讀指定塊號內容的寫入方式是會覆蓋掉原檔案的內容的(如果原本有內容的話)

如何使用Debugfs查詢Linux檔案建立時間

在linux系統中,所有的東西都被當作乙個檔案來對待,關於檔案的關鍵元資料,如建立和修改日期都儲存在inodes中。我們已經看了如何在linux系統中使用stat httpie和date命令檢查檔案的最後修改日期。在本教程中,我們將向您展示如何使用debugfs命令查詢檔案的建立時間。使用debug...

Linux find 查詢檔案

在日誌資料夾下判斷是否有web伺服器的日誌資料夾,寫了個指令碼 bin bash cd wls annuity acc for sys in cat wiiserver name list.txt do find logs sys name sys xargs echo en n 123.txt f...

Linux查詢檔案

which locate whereis find which命令 用途 查詢可執行檔案並顯示所在的位置,適用於系統命令,shell命令無法查詢 which lsb release 檢視命令的絕對路徑,即這個可執行檔案的位置 usr bin lsb release which cd 查詢不到路徑,c...