Linux文件系統的核心結構?
大神Hi起來
Linux文件系統的核心結構?
vfs?:
file_system_typesuper_block/super_operationsvfsmount/mount/mountpoint/mnt_namespace
inode/inode_operationsdentry/dentry_operationsfile/file_operationsaddress_space/address_space_operationspath/nameidata......題主匿名了,這有什麼好匿名的。
題主的意思是不是想了解下linux下的文件系統的結構?還是想了解這種文件系統結構怎麼實現的?Linux下的文件系統為樹形結構,入口為/ 樹形結構下的文件目錄: 無論哪個版本的Linux系統,都有這些目錄,這些目錄應該是標準的。各個Linux發行版本會存在一些小小的差異,但總體來說,還是大體差不多。
1. / 文件系統的入口,最高一級目錄;
2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。
3. /boot 包含Linux內核及系統引導程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;
4. /dev 設備文件存儲目錄,比如音效卡、磁碟... ... 這是一個非常有趣的目錄,是Linux文件系統的一個閃亮的特性 - 所有對象都是文件或目錄。仔細觀察這個目錄你會發現hda1, hda2等, 它們代表系統主硬碟的不同分區。
/dev/cdrom和/dev/fd0代表你的CDROM驅動器和floppy驅動器。看上去可能有些奇怪,但比較文件和硬體的特性這卻是十分合理的。它們都可以讀出和寫入。例如/dev/dsp,這個文件代表你的揚聲器。那麼寫入這個文件的數據都回傳送到喇叭。試一試 "cat /etc/lilo.conf &> /dev/dsp" 你會聽到一些聲音。這是你的 lilo.conf 文件的聲音!同樣,向 /dev/ttyS0 ( COM 1 ) 讀出或寫入數據你可以和接到上面的設備進行通訊。5. /etc 存放系統程序或者一般工具的配置文件。
如安裝了apache2之後,配置文件在/etc/apache2/目錄下。/etc/init.d 這個目錄是用來存放系統或伺服器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。如apache2的/etc/init.d apache2 start|stop|restart MySQL為/etc/init.d mysql start|stop|restart
6. /home 普通用戶默認存放目錄 Linux 是多用戶環境,所以每一個用戶都有一個只有自己可以訪問的目錄(當然管理員也可以訪問)。它們以 /home/username 的方式存在。這個目錄也保存一些應用對於這個用戶的配置,比如 IRC, X 等。
7. /lib 庫文件存放目錄這裡包含了系統程序所需要的所有共享庫文件,類似於 Windows 的共享庫 DLL 文件。
8. /lost+found 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這裡。當系統啟動的過程中fsck工具會檢查這裡,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
Linux 應該正確的關機。但有時你的系統也可能崩潰掉或突然斷電使系統意外關機。那麼啟動的時候 fsck 將會進行長時間的文件系統檢查。Fsck 會檢測並試圖恢復所發現的不正確的文件。被恢復的文件會放置在這個目錄中。所恢復的文件也許並不完整或並不合理,但畢竟提供了一些恢複數據的機會。9. /media 即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載後,會在這個目錄下產生一個目錄 ;CDROM/DVD自動掛載後,也會在這個目錄中創建一個目錄,類似cdrom 的目錄。這個只有在最新的發行套件上才有.
10. /mnt /mnt 這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom 等目錄。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這裡也是可以的。比如光碟機可以掛載到/mnt/cdrom 。
這是一個普通的載入目錄,在這裡你可以載入你的文件系統或設備。載入是使一個文件系統對於系統可用的過程。在載入後你的文件可以在載入目錄下訪問。
這個目錄通常包含載入目錄或用於載入軟碟機和光碟機的子目錄。如果需要,你也可以在這裡建立其它的載入目錄。對於載入目錄的位置並沒有強制性的要求,你可以在系統的任意位置建立載入目錄。建立 /mnt 只是為了使系統更工整的慣例。11. /opt 表示的是可選擇的意思,有些軟體包也會被安裝在這裡,也就是自定義軟體包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這裡。有些我們自己編譯的軟體包,就可以安裝在這個目錄中;通過源碼包安裝的軟體,可以通過 ./configure --prefix=/opt/,將軟體安裝到opt目錄。
這個目錄包含所有默認系統安裝之外的軟體和添加的包。
12. /proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬碟分區、內存信息等)存放在這裡。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。
這是系統中極為特殊的一個目錄,實際上任何分區上都不存在這個目錄。它實際是個實時的、駐留在內存中的文件系統。
13. /root Linux超級許可權用戶root的家目錄;
14. /sbin 大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地,普通用戶無許可權執行這個目錄下的命令;
這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin 目錄是相似的; 我們記住就行了,凡是目錄sbin中包含的都是root許可權才能執行的。15. /tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。 /tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
許多程序在這裡建立lock文件和存儲臨時數據。有些系統會在啟動或關機時清空此目錄。16. /usr 這個是系統存放程序的目錄,比如命令、幫助文件等。這個目錄下有很多的文件和目錄。
當我們安裝一個Linux發行版官方提供的軟體包時,大多安裝在這裡。如果有涉及伺服器配置文件的,會把配置文件安裝在/etc目錄中。/usr目錄下包括:涉及字體目錄/usr/share/fonts ,
幫助目錄 /usr/share/man或/usr/share/doc,
普通用戶可執行文件目錄/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,
超級許可權用戶root的可執行命令存放目錄,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;
還有程序的頭文件存放目錄/usr/include。
/usr/bin 這個目錄是可執行程序的目錄,普通用戶就有許可權執行; 當我們從系統自帶的軟體包安裝一個程序時,他的可執行文件大多會放在這個目錄。
/usr/sbin 這個目錄也是可執行程序的目錄,但大多存放涉及系統管理的命令。只有root許可權才能執行;相似目錄是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等; /usr/local 這個目錄一般是用來存放用戶自編譯安裝軟體的存放目錄;一般是通過源碼包安裝的軟體,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中。這個目錄下面有子目錄。/usr/lib 和/lib 目錄相似,是庫文件的存儲目錄;/usr/share 系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,是用戶都共用的吧。/usr/share/doc和/usr/share/man幫助文件,也是共用的吧;
/usr/src 是內核源碼存放的目錄,比如下面有內核源碼目錄,比如 linux 、linux-2.xxx.xx 目錄等。有的系統也會把源碼軟體包安裝在這裡。比如Fedora/Redhat,當我們安裝file.src.rpm的時候,這些軟體包會安裝在 /usr/src/redhat相應的目錄中。請參考: 《file.src.rpm 使用方法的簡單介紹》 。另外Fedhat 4.0 5.0,他的內核源碼包的目錄位於/usr/src/kernels目錄下的某個目錄中(只有安裝後才會生成相應目錄);17. /var 這個目錄的內容是經常變動的,看名字就知道,我們可以理解為vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。/var/www目錄是定義Apache伺服器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地;/var/log 系統日誌存放,分析日誌要看這個目錄的東西;/var/spool 印表機、郵件、代理伺服器等假離線目錄;上面內容參考於http://blog.sina.com.cn/s/blog_662234020101ebfd.html
administrator@ubuntu:/$ ls -l
總用量 100
drwxr-xr-x 2 root root 4096 8月 22 07:33 bin
drwxr-xr-x 3 root root 4096 8月 22 07:34 boot
drwxr-xr-x 2 root root 4096 8月 22 07:29 cdrom
drwxr-xr-x 16 root root 4320 11月 1 22:26 dev
drwxr-xr-x 136 root root 12288 11月 1 22:38 etc
drwxr-xr-x 5 root root 4096 10月 24 10:02 home
drwxrwxrwx 1 root root 4096 10月 31 18:59 host
lrwxrwxrwx 1 root root 32 8月 22 07:31 initrd.img -&> boot/initrd.img-3.5.0-17-generic
lrwxrwxrwx 1 root root 33 8月 22 07:14 initrd.img.old -&> /boot/initrd.img-3.5.0-17-generic
drwxr-xr-x 21 root root 4096 8月 22 07:33 lib
drwx------ 2 root root 16384 8月 22 07:14 lost+found
drwxr-xr-x 3 root root 4096 8月 24 22:13 media
drwxr-xr-x 2 root root 4096 10月 9 2012 mnt
drwxr-xr-x 2 root root 4096 10月 17 2012 opt
dr-xr-xr-x 205 root root 0 11月 2 2015 proc
drwx------ 8 root root 4096 8月 24 23:48 root
drwxr-xr-x 22 root root 780 11月 1 22:27 run
drwxr-xr-x 2 root root 12288 8月 22 07:34 sbin
drwxr-xr-x 2 root root 4096 6月 11 2012 selinux
drwxr-xr-x 2 root root 4096 10月 17 2012 srv
dr-xr-xr-x 13 root root 0 11月 2 2015 sys
drwxrwxrwt 8 root root 4096 11月 1 22:44 tmp
drwxr-xr-x 10 root root 4096 10月 17 2012 usr
drwxr-xr-x 15 root root 4096 10月 25 23:11 var
lrwxrwxrwx 1 root root 29 8月 22 07:31 vmlinuz -&> boot/vmlinuz-3.5.0-17-generic
administrator@ubuntu:~$ pwd
/home/administratoradministrator@ubuntu:~$ cd ..administrator@ubuntu:/home$ cd ..administrator@ubuntu:/$ linux的console界面的默認路徑不是根目錄google 搜索lfs (linux filesystem)
man hier
Filesystem Hierarchy Standard
送你一張轉載過來的桌面壁紙http://pan.baidu.com/s/1nt7w8DN
底層調用vfs,屏蔽物理硬體,上層可以是在內核空間或者用戶空間實現
推薦閱讀:
※Linux 伺服器有必要開啟 iptables 防火牆么?
※為什麼把部分蘋果設備的系統時間調整為1970.1.1,重啟後就會變磚?
※QT5 中的.pro 文件中為何要加入QT += widgets,而不能在包頭文件的時候就包一個widgets/QApplication呢?
※linux下如何刪除文件夾而不刪除文件夾里的內容?
※fork如何實現執行一次返回兩個值的?
TAG:Linux |