CentOS學習筆記--目錄配置

來源:互聯網
上載者:User

標籤:http   ar   io   os   使用   sp   on   檔案   資料   

  Linux目錄配置

類Linux的目錄看上去差不多,為什嗎? 以下內容節選自l 鳥哥的 Linux 私房菜 -- 基礎學習篇目錄  第六章、Linux 的檔案許可權與目錄配置 3. Linux目錄配置

Linux目錄配置的依據—FHS

Filesystem Hierarchy Standard (FHS)標準,根據FHS(http://www.pathname.com/fhs/)的官方檔案指出, 他們的主要目的是希望讓使用者可以瞭解到已安裝軟體通常放置於那個目錄下, 所以他們希望獨立的軟體開發商、作業系統製作者、以及想要維護系統的使用者,都能夠遵循FHS的標準。

事實上,FHS是根據過去的經驗一直再持續的改版的,FHS依據檔案系統使用的頻繁與否與是否允許使用者隨意更動, 而將目錄定義成為四種互動作用的形態,用表格來說有點像底下這樣:

  可分享的(shareable) 不可分享的(unshareable)
不變的(static) /usr (軟體放置處) /etc (設定檔)
  /opt (第三方協力軟體) /boot (開機與核心檔)
可變動的(variable) /var/mail (使用者郵件信箱) /var/run (程式相關)
  /var/spool/news (新聞群組) /var/lock (程式相關)

上表中的目錄就是一些代表性的目錄

  • 可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行檔案與使用者的郵件等資料, 是能夠分享給網路上其他主機掛載用的目錄;
  • 不可分享的:自己機器上面運作的裝置檔案或者是與程式有關的socket檔案等, 由於僅與自身機器有關,所以當然就不適合分享給其他主機了。
  • 不變的:有些資料是不會經常變動的,跟隨著distribution而不變動。 例如函式庫、檔案說明檔案、系統管理員所管理的主機服務組態檔等等;
  • 可變動的:經常改變的資料,例如登入檔案、一般使用者可自行收受的新聞群組等。

事實上,FHS針對分類樹架構僅定義出三層目錄底下應該放置什麼資料而已,分別是底下這三個目錄的定義:

  • / (root, 根目錄):與開機系統有關;
  • /usr (unix software resource):與軟體安裝/執行有關;
  • /var (variable):與系統運作過程有關。
根目錄 (/) 的意義與內容:

根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的, 同時根目錄也與開機/還原/系統修複等動作有關。 由於系統開機時需要特定的開機軟體、核心檔案、開機所需程式、 函式庫等等檔案資料,若系統出現錯誤時,根目錄也必須要包含有能夠修複檔案系統的程式才行。 因為根目錄是這麼的重要,所以在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/:所有服務的預設啟動 script 都是放在這裡的,例如要啟動或者關閉 iptables 的話:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
  • /etc/xinetd.d/:這就是所謂的super daemon管理的各項服務的設定檔目錄。
  • /etc/X11/:與 X Window 有關的各種設定檔都在這裡,尤其是 xorg.conf 這個 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系統中,我們還是習慣放置在/usr/local目錄下呢!
/root 系統管理員(root)的家目錄。之所以放在這裡,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。
/sbin Linux有非常多指令是用來設定系統內容的,這些指令只有root才能夠利用來『設定』系統,其他使用者最多隻能用來『查詢』而已。 放在/sbin底下的為開機過程中所需要的,裡麵包括了開機、修複、還原系統所需要的指令。 至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔案(system binary), 則放置到/usr/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 的意義與內容:

依據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),以及不被一般使用者慣用的執行檔或指令碼(script)。 某些軟體會提供一些特殊的指令來進行伺服器的設定,這些指令也不會經常被系統管理員操作, 那就會被擺放到這個目錄下啦。要注意的是,如果你使用的是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標準之後, 對於硬碟分割,有點想法了嗎?

根據FHS的定義,最好能夠將/var獨立出來, 這樣對於系統的資料還有一些安全性的保護呢!因為至少/var死掉時,你的根目錄還會活著嘛! 還能夠進入救援模式啊!

絕對路徑與相對路徑

除了需要特別注意的FHS目錄配置外,在檔案名稱部分我們也要特別注意喔!因為根據檔名寫法的不同,也可將所謂的路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。 這兩種檔案名稱/路徑的寫法依據是這樣的:

  • 絕對路徑:由根目錄(/)開始寫起的檔案名稱或目錄名稱, 例如 /home/dmtsai/.bashrc;
  • 相對路徑:相對於目前路徑的檔案名稱寫法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正開頭不是 / 就屬於相對路徑的寫法

而你必須要瞭解,相對路徑是以『你當前所在路徑的相對位置』來表示的。舉例來說,你目前在 /home 這個目錄下, 如果想要進入 /var/log 這個目錄時,可以怎麼寫呢?

  1. cd /var/log   (absolute)
  2. cd ../var/log (relative)

因為你在 /home 底下,所以要回到上一層 (../) 之後,才能繼續往 /var 來移動的! 特別注意這兩個特殊的目錄:

  • .  :代表當前的目錄,也可以使用 ./ 來表示;
  • .. :代表上一層目錄,也可以 ../ 來代表。

這個 . 與 .. 目錄概念是很重要的,你常常會看到 cd .. 或 ./command 之類的指令下達方式, 就是代表上一層與目前所在目錄的工作狀態喔!很重要的吶!

CentOS學習筆記--目錄配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.