Linux根目录详解-转自鸟哥的私房菜

转自:http://myhat.blog.51cto.com/391263/107931/
 
  • *根目录(/)的意义与内容:
    根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。 由于系统开机时需要特定的开机软体、核心档案、开机所需程式。函式库等等档案资料,若系统出现错误时,根目录也需要包含有能够修复档案系统的程式才行。 因为根目录是这么的重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分割槽内, 因为越大的分割槽你会放入越多的资料,如此一来根目录所在分割槽就可能会有较多的发生错误的机会。
    因此FHS标准建议:根目录(/)所在分割槽应该越小越好,且应用程式所安排的软体最好不要与根目录放在同一个分割槽内,保持根目录越小也好。如此不但效能较佳,根目录所在的档案系统也较不容易发生问题。
    有鉴于上述的说明,因此FHS定义根目录(/)底下应该要有底下这些次目录的存在才好:
目录
应放置档案内容
/bin
系统有很多放置执行档的目录,但/bin 比较特殊。因为/bin 放置的在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root一般账号所使用,主要有:cat,chmod,chown,date,mv,mkdir,cp,bash等等常用的指令。
/boot
这个目录主要是放置开机会使用到的档案,包括Linux核心档案以及开机选单与关机所需设定档等等。Linux Kernel常用的档名为:vmlinuz,  如果使用的是grub这个开机管理程式,则还会存在/boot/grub这个目录哦!
/dev
在Linux系统上,任何装置与周边设备都是以档案的形态存在于这个目录当中的. 你只要透过存取这个目录底下的某个档案,就等于存取某个装置哦~ 比较重要的档案有/dev/null,/dev/zero./dev/tty,/dev/lp*,/dev/hd*,/dev/sd*等等
/etc
系统主要的设定档几乎都放置在这个目录内,例如人员的账号密码档,各种服务的起始档等等。一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权限修改。 FHS建议不要放置可执行档(binary)在这个目录中哦。比较重要的档案有:/etc/inittab,/etc/init.d,/etc/modprobe.conf,/etc/X11,/etc/fstab,/etc/sysconfig等等。另外,其下重要的目录有:
  • /etc/init.d/:所有服务的预设启动 . 都是放在这里的,例如要启动或关闭iptables 的话:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
  • /etc/xinetd.d/:这就是所谓的super daemon管理各项服务的设定档。
  • /etc/X11/:与Xwindow有关的各种设定档,尤其是 xorg.conf 或 XF86Config 这两个 X Server 的设定档。
/home
这个系统预设的使用者家目录(home directory)。在你新增一个一般使用者账号时,预设的使用者家目录就会规范到这里来。比较重要的是,家目录有两种代号:
~:代表目前这个使用者的家目录,
~dmtsai :则代表dmtsai 的家目录!
/lib
系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或、sbin/底下的指令会呼叫的函式库而已。什么是函式库呢?你可以将它想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程式的执行之意。尤其重要的是/lib/modules/这个目录,因为该目录会放置核心先关的模组(驱动程式)哦!
/media
media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦!包括软碟、光碟、DVD等等装置都暂时挂在于此。常见的档名有:、media/floppy, /media/cdrom等等。
/mnt
如果你想要暂时挂在某些额外的装置,一般建议你可以放置到这个目录中。在古早时候,这个目录的用途与/media相同,知识有了/media 之后,这个目录就用来暂时挂在用了。
/opt
这个是给第三方协力软体放置的目录.什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果你想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来,不过,以前的Linux系统中,我们还是习惯放置在/user/local目录下。
/root
系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。
/sbin
Linux有非常多指令时用来设定系统环境的, 这些指令只有root 才能够用来【设定】系统,其他使用者最多只能用来【查询】而已。 放在/sbin 底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软体程式,一般则放置到/user/sbin当中。 至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/user/local/sbin、当中了。 常见的指令包括: fdisk,fsck,ifconfig,init,mkfs 等等。
/srv
srv可以视为【service】的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW,FTP等等。举例来说,WWW服务器需要的网页资料就可以放置在/srv/www里面。
/tmp
这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是人和人都能够存取的,所以你需要定期的清理一下。 当然,重要资料不可放置在此目录。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除!
 
事实上FHS针对根目录所定义的标准就仅有上面的东西,不过我们的Linux底下还有许多目录你也需要了解一下的。 底下是几个在Linux当中也是非常重要的目录哦:
目錄
應放置檔案內容
/lost+found
這個目錄是使用標準的ext2/ext3檔案系統格式才會產生的一個目錄,目的在於當檔案系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。這個目錄通常會在分割槽的最頂層存在, 例如你加裝一顆硬碟於/disk中,那在這個系統下就會自動產生一個這樣的目錄『/disk/lost+found』
/proc
這個目錄本身是一個『虛擬檔案系統(virtual filesystem)』喔!他放置的資料都是在記憶體當中, 例如系統核心、行程資訊(process)、周邊裝置的狀態及網路狀態等等。因為這個目錄下的資料都是在記憶體當中, 所以本身不佔任何硬碟空間啊!比較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。
/sys
這個目錄其實跟/proc非常類似,也是一個虛擬的檔案系統,主要也是記錄與核心相關的資訊。 包括目前已載入的核心模組與核心偵測到的硬體裝置資訊等等。這個目錄同樣不佔硬碟容量喔!
除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之後才會持續的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:
  • /etc:設定檔
  • /bin:重要執行檔
  • /dev:所需要的裝置檔案
  • /lib:執行檔所需的函式庫與核心所需的模組
  • /sbin:重要的系統執行檔
這五個目錄千萬不可與根目錄分開在不同的分割槽!請背下來啊! 好了,談完了根目錄,接下來我們就來談談/usr以及/var囉!先看/usr裡面有些什麼東西:
  • /usr 的意義與內容:
依據FHS的基本定義,/usr裡面放置的資料屬於可分享的與不可變動的(shareable, static), 如果你知道如何透過網路進行分割槽的掛載(例如在伺服器篇會談到的NFS伺服器),那麼/usr確實可以分享給區域網路內的其他主機來使用喔!
很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦!這點要注意。 FHS建議所有軟體開發者,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。
因為是所有系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:\Windows\ + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。 一般來說,/usr的次目錄建議有底下這些:
目錄
應放置檔案內容
/usr/X11R6/
為X Window System重要資料所放置的目錄,之所以取名為X11R6是因為最後的X版本為第11版,且該版的第6次釋出之意。
/usr/bin/
絕大部分的使用者可使用指令都放在這裡!請注意到他與/bin的不同之處。(是否與開機過程有關)
/usr/include/
c/c++等程式語言的檔頭(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時,會使用到裡頭的許多包含檔喔!
/usr/lib/
包含各應用軟體的函式庫、目標檔案(object file),以及不被一般使用者慣用的執行檔或腳本(.)。 某些軟體會提供一些特殊的指令來進行伺服器的設定,這些指令也不會經常被系統管理員操作, 那就會被擺放到這個目錄下啦。要注意的是,如果你使用的是X86_64的Linux系統, 那可能會有/usr/lib64/目錄產生喔!
/usr/local/
系統管理員在本機自行安裝自己下載的軟體(非distribution預設提供者),建議安裝到此目錄, 這樣會比較便於管理。舉例來說,你的distribution提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝於/usr/local/目錄下,可與原先的舊版軟體有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔!
/usr/sbin/
非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)囉!
/usr/share/
放置共享文件的地方,在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料, 因為幾乎都是文字檔案嘛!在此目錄下常見的還有這些次目錄:
  • /usr/share/man:線上說明文件
  • /usr/share/doc:軟體雜項的文件說明
  • /usr/share/zoneinfo:與時區有關的時區檔案
/usr/src/
一般原始碼建議放置到這裡,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下。
  • /var 的意義與內容:
如果/usr是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。 因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案, 包括程序檔案(lock file, run file),或者例如MySQL資料庫的檔案等等。常見的次目錄有:
目錄
應放置檔案內容
/var/cache/
應用程式本身運作過程中會產生的一些暫存檔;
/var/lib/
程式本身執行的過程中,需要使用到的資料檔案放置的目錄。在此目錄下各自的軟體應該要有各自的目錄。 舉例來說,MySQL的資料庫放置到/var/lib/mysql/而rpm的資料庫則放到/var/lib/rpm去!
/var/lock/
某些裝置或者是檔案資源一次只能被一個應用程式所使用,如果同時有兩個程式使用該裝置時, 就可能產生一些錯誤的狀況,因此就得要將該裝置上所(lock),以確保該裝置只會給單一軟體所使用。 舉例來說,燒錄機正在燒錄一塊光碟,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的資料?所以當第一個人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續使用囉。
/var/log/
重要到不行!這是登錄檔放置的目錄!裡面比較重要的檔案如/var/log/messages, /var/log/wtmp(記錄登入者的資訊)等。
/var/mail/
放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為連結檔啦!
/var/run/
某些程式或者是服務啟動後,會將他們的PID放置在這個目錄下喔! 至於PID的意義我們會在後續章節提到的。
/var/spool/
這個目錄通常放置一些佇列資料,所謂的『佇列』就是排隊等待其他程式使用的資料啦! 這些資料被使用後通常都會被刪除。舉例來說,系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件後該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出後就被刪除。如果是工作排程資料(crontab),就會被放置到/var/spool/cron/目錄中!
建議在你讀完整個基礎篇之後,可以挑戰FHS官方英文文件 ,相信會讓你對於Linux作業系統的目錄有更深入的瞭解喔!
  • 針對FHS,各家distributions的異同
由於FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的檔案或目錄資料, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。舉例來說,CentOS的網路設定資料放在 /etc/sysconfig/network-.s/ 目錄下,但是SuSE則是將網路放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的FHS標準,差異性其實有限啦!
 
PS.
FHS:Filesystem Hierarchy Standard(文件系统目录标准),FHS采用树形结构组织文件,定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
 
    
 

posted on 2015-01-27 12:38  linuxSu  阅读(4571)  评论(0编辑  收藏  举报

导航