<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 5.3 Linux目錄配置 在了解了每個文件的相關種類與屬性,以及了解了如何更改文件屬性/權限的相關信息后,再來要了解的就是, 為什么每套Linux distributions他們的配置文件啊、可執行文件啊、每個目錄內放置的咚咚啊,其實都差不多? 原來是有一套標準依據的哩!我們下面就來瞧一瞧。 ### 5.3.1 Linux目錄配置的依據--FHS 因為利用Linux來開發產品或distributions的社群/公司與個人實在太多了,如果每個人都用自己的想法來配置文件放置的目錄,那么將可能造成很多管理上的困擾。 你能想像,你進入一個企業之后,所接觸到的Linux目錄配置方法竟然跟你以前學的完全不同嗎?很難想像吧~所以,后來就有所謂的Filesystem Hierarchy Standard (FHS)標準的出爐了! 根據FHS[[2]](#ps2)的標準文件指出,他們的主要目的是希望讓使用者可以了解到已安裝軟件通常放置于那個目錄下, 所以他們希望獨立的軟件開發商、操作系統制作者、以及想要維護系統的使用者,都能夠遵循FHS的標準。 也就是說,FHS的重點在于規范每個特定的目錄下應該要放置什么樣子的數據而已。 這樣做好處非常多,因為Linux操作系統就能夠在既有的面貌下(目錄架構不變)發展出開發者想要的獨特風格。 事實上,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):與系統運行過程有關。 為什么要定義出這三層目錄呢?其實是有意義的喔!每層目錄下面所應該要放置的目錄也都又特定的規定喔! 由于我們尚未介紹完整的Linux系統,所以下面的介紹你可能會看不懂!沒關系,先有個概念即可, 等到你將基礎篇全部看完后,就重頭將基礎篇再看一遍!到時候你就會豁然開朗啦!^_^ ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 這個 root 在 Linux 里面的意義真的很多很多~多到讓人搞不懂那是啥玩意兒。 如果以“帳號”的角度來看,所謂的 root 指的是“系統管理員!”的身份, 如果以“目錄”的角度來看,所謂的 root 意即指的是根目錄,就是 / 啦~ 要特別留意喔! * 根目錄 (/) 的意義與內容: 根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的,同時根目錄也與開機/還原/系統修復等動作有關。 由于系統開機時需要特定的開機軟件、核心文件、開機所需程序、函數庫等等文件數據,若系統出現錯誤時,根目錄也必須要包含有能夠修復文件系統的程序才行。 因為根目錄是這么的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分區內, 因為越大的分區你會放入越多的數據,如此一來根目錄所在分區就可能會有較多發生錯誤的機會。 因此FHS標準建議:根目錄(/)所在分區應該越小越好, 且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好。 如此不但性能較佳,根目錄所在的文件系統也較不容易發生問題。 有鑒于上述的說明,因此FHS定義出根目錄(/)下面應該要有下面這些次目錄的存在才好,即使沒有實體目錄,FHS也希望至少有鏈接文件存在才好: | 目錄 | 應放置文件內容 | | --- | --- | --- | | 第一部份:FHS 要求必須要存在的目錄 | | /bin | 系統有很多放置可執行文件的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。 在/bin下面的指令可以被root與一般帳號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 | | /boot | 這個目錄主要在放置開機會使用到的文件,包括Linux核心文件以及開機菜單與開機所需配置文件等等。 Linux kernel常用的文件名為:vmlinuz,如果使用的是grub2這個開機管理程序, 則還會存在/boot/grub2/這個目錄喔! | | /dev | 在Linux系統上,任何設備與周邊設備都是以文件的型態存在于這個目錄當中的。 你只要通過存取這個目錄下面的某個文件,就等于存取某個設備啰~ 比要重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/loop*, /dev/sd*等等 | | /etc | 系統主要的配置文件幾乎都放置在這個目錄內,例如人員的帳號密碼檔、 各種服務的啟始檔等等。一般來說,這個目錄下的各文件屬性是可以讓一般使用者查閱的, 但是只有root有權力修改。FHS建議不要放置可可執行文件(binary)在這個目錄中喔。比較重要的文件有: /etc/modprobe.d/, /etc/passwd, /etc/fstab, /etc/issue 等等。另外 FHS 還規范幾個重要的目錄最好要存在 /etc/ 目錄下喔:/etc/opt(必要):這個目錄在放置第三方協力軟件 /opt 的相關配置文件 /etc/X11/(建議):與 X Window 有關的各種配置文件都在這里,尤其是 xorg.conf 這個 X Server 的配置文件。 /etc/sgml/(建議):與 SGML 格式有關的各項配置文件 /etc/xml/(建議):與 XML 格式有關的各項配置文件 | | /lib | 系統的函數庫非常的多,而/lib放置的則是在開機時會用到的函數庫, 以及在/bin或/sbin下面的指令會調用的函數庫而已。 什么是函數庫呢?你可以將他想成是“外掛”,某些指令必須要有這些“外掛”才能夠順利完成程序的執行之意。 另外 FSH 還要求下面的目錄必須要存在:/lib/modules/:這個目錄主要放置可抽換式的核心相關模塊(驅動程序)喔! | | /media | media是“媒體”的英文,顧名思義,這個/media下面放置的就是可移除的設備啦! 包括軟盤、光盤、DVD等等設備都暫時掛載于此。常見的文件名有:/media/floppy, /media/cdrom等等。 | | /mnt | 如果你想要暫時掛載某些額外的設備,一般建議你可以放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media之后,這個目錄就用來暫時掛載用了。 | | /opt | 這個是給第三方協力軟件放置的目錄。什么是第三方協力軟件啊? 舉例來說,KDE這個桌面管理系統是一個獨立的計劃,不過他可以安裝到Linux系統中,因此KDE的軟件就建議放置到此目錄下了。 另外,如果你想要自行安裝額外的軟件(非原本的distribution提供的),那么也能夠將你的軟件安裝到這里來。 不過,以前的Linux系統中,我們還是習慣放置在/usr/local目錄下呢! | | /run | 早期的 FHS 規定系統開機后所產生的各項信息應該要放置到 /var/run 目錄下,新版的 FHS 則規范到 /run 下面。 由于 /run 可以使用內存來仿真,因此性能上會好很多! | | /sbin | Linux有非常多指令是用來設置系統環境的,這些指令只有root才能夠利用來“設置”系統,其他使用者最多只能用來“查詢”而已。 放在/sbin下面的為開機過程中所需要的,里面包括了開機、修復、還原系統所需要的指令。 至于某些服務器軟件程序,一般則放置到/usr/sbin/當中。至于本機自行安裝的軟件所產生的系統可執行文件(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, mkfs等等。 | | /srv | srv可以視為“service”的縮寫,是一些網絡服務啟動之后,這些服務所需要取用的數據目錄。 常見的服務例如WWW, FTP等等。舉例來說,WWW服務器需要的網頁數據就可以放置在/srv/www/里面。 不過,系統的服務數據如果尚未要提供給網際網絡任何人瀏覽的話,默認還是建議放置到 /var/lib 下面即可。 | | /tmp | 這是讓一般使用者或者是正在執行的程序暫時放置文件的地方。 這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要數據不可放置在此目錄啊! 因為FHS甚至建議在開機時,應該要將/tmp下的數據都刪除唷! | | /usr | 第二層 FHS 設置,后續介紹 | | /var | 第二曾 FHS 設置,主要為放置變動性的數據,后續介紹 | | 第二部份:FHS 建議可以存在的目錄 | | /home | 這是系統默認的使用者主文件夾(home directory)。在你新增一個一般使用者帳號時, 默認的使用者主文件夾都會規范到這里來。比較重要的是,主文件夾有兩種代號喔:~:代表目前這個使用者的主文件夾 ~dmtsai :則代表 dmtsai 的主文件夾! | /lib&lt;qual&gt; | 用來存放與 /lib 不同的格式的二進制函數庫,例如支持 64 位的 /lib64 函數庫等 | | /root | 系統管理員(root)的主文件夾。之所以放在這里,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的主文件夾,所以我們會希望root的主文件夾與根目錄放置在同一個分區中。 | 事實上FHS針對根目錄所定義的標準就僅有上面的咚咚,不過我們的Linux下面還有許多目錄你也需要了解一下的。 下面是幾個在Linux當中也是非常重要的目錄喔: | 目錄 | 應放置文件內容 | | --- | --- | --- | | /lost+found | 這個目錄是使用標準的ext2/ext3/ext4文件系統格式才會產生的一個目錄,目的在于當文件系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。不過如果使用的是 xfs 文件系統的話,就不會存在這個目錄了! | | /proc | 這個目錄本身是一個“虛擬文件系統(virtual filesystem)”喔!他放置的數據都是在內存當中, 例如系統核心、行程信息(process)、周邊設備的狀態及網絡狀態等等。因為這個目錄下的數據都是在內存當中, 所以本身不占任何硬盤空間啊!比較重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 | | /sys | 這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統,主要也是記錄核心與系統硬件信息較相關的信息。 包括目前已載入的核心模塊與核心偵測到的硬件設備信息等等。這個目錄同樣不占硬盤容量喔! | 早期 Linux 在設計的時候,若發生問題時,救援模式通常僅掛載根目錄而已,因此有五個重要的目錄被要求一定要與根目錄放置在一起, 那就是 /etc, /bin, /dev, /lib, /sbin 這五個重要目錄。現在許多的 Linux distributions 由于已經將許多非必要的文件移出 /usr 之外了, 所以 /usr 也是越來越精簡,同時因為 /usr 被建議為“即使掛載成為只讀,系統還是可以正常運行”的模樣,所以救援模式也能同時掛載 /usr 喔! 例如我們的這個 CentOS 7.x 版本在救援模式的情況下就是這樣。因此那個五大目錄的限制已經被打破了呦!例如 CentOS 7.x 就已經將 /sbin, /bin, /lib 通通移動到 /usr 下面了哩! 好了,談完了根目錄,接下來我們就來談談/usr以及/var啰!先看/usr里面有些什么東西: * /usr 的意義與內容: 依據FHS的基本定義,/usr里面放置的數據屬于可分享的與不可變動的(shareable, static), 如果你知道如何通過網絡進行分區的掛載(例如在服務器篇會談到的[NFS服務器](http://linux.vbird.org/linux_server/0330nfs.php)),那么/usr確實可以分享給區域網絡內的其他主機來使用喔! 很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是“Unix操作系統軟件資源”所放置的目錄,而不是使用者的數據啦!這點要注意。 FHS建議所有軟件開發者,應該將他們的數據合理的分別放置到這個目錄下的次目錄,而不要自行創建該軟件自己獨立的目錄。 因為是所有系統默認的軟件(distribution發布者提供的軟件)都會放置到/usr下面,因此這個目錄有點類似Windows 系統的“C:\Windows\ (當中的一部份) + C:\Program files\”這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會占用最多的硬盤容量。一般來說,/usr的次目錄建議有下面這些: | 目錄 | 應放置文件內容 | | --- | --- | --- | | 第一部份:FHS 要求必須要存在的目錄 | | /usr/bin/ | 所有一般用戶能夠使用的指令都放在這里!目前新的 CentOS 7 已經將全部的使用者指令放置于此,而使用鏈接文件的方式將 /bin 鏈接至此! 也就是說, /usr/bin 與 /bin 是一模一樣了!另外,FHS 要求在此目錄下不應該有子目錄! | | /usr/lib/ | 基本上,與 /lib 功能相同,所以 /lib 就是鏈接到此目錄中的! | | /usr/local/ | 系統管理員在本機自行安裝自己下載的軟件(非distribution默認提供者),建議安裝到此目錄, 這樣會比較便于管理。舉例來說,你的distribution提供的軟件較舊,你想安裝較新的軟件但又不想移除舊版, 此時你可以將新版軟件安裝于/usr/local/目錄下,可與原先的舊版軟件有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔! | | /usr/sbin/ | 非系統正常運行所需要的系統指令。最常見的就是某些網絡服務器軟件的服務指令(daemon)啰!不過基本功能與 /sbin 也差不多, 因此目前 /sbin 就是鏈接到此目錄中的。 | | /usr/share/ | 主要放置只讀架構的數據文件,當然也包括共享文件。在這個目錄下放置的數據幾乎是不分硬件架構均可讀取的數據, 因為幾乎都是文字文件嘛!在此目錄下常見的還有這些次目錄:/usr/share/man:線上說明文檔 /usr/share/doc:軟件雜項的文件說明 /usr/share/zoneinfo:與時區有關的時區文件 | 第二部份:FHS 建議可以存在的目錄 | | /usr/games/ | 與游戲比較相關的數據放置處 | | /usr/include/ | c/c++等程序語言的文件開始(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟件)安裝某些數據時,會使用到里頭的許多包含檔喔! | | /usr/libexec/ | 某些不被一般使用者慣用的可執行文件或腳本(script)等等,都會放置在此目錄中。例如大部分的 X 窗口下面的操作指令, 很多都是放在此目錄下的。 | | /usr/lib&lt;qual&gt;/ | 與 /lib&lt;qual&gt;/功能相同,因此目前 /lib&lt;qual&gt; 就是鏈接到此目錄中 | | /usr/src/ | 一般源代碼建議放置到這里,src有source的意思。至于核心源代碼則建議放置到/usr/src/linux/目錄下。 | * /var 的意義與內容: 如果/usr是安裝時會占用較大硬盤容量的目錄,那么/var就是在系統運行后才會漸漸占用硬盤容量的目錄。 因為/var目錄主要針對常態性變動的文件,包括高速緩存(cache)、登錄文件(log file)以及某些軟件運行所產生的文件, 包括程序文件(lock file, run file),或者例如MySQL數據庫的文件等等。常見的次目錄有: | 目錄 | 應放置文件內容 | | --- | --- | --- | | 第一部份:FHS 要求必須要存在的目錄 | | /var/cache/ | 應用程序本身運行過程中會產生的一些暫存盤; | | /var/lib/ | 程序本身執行的過程中,需要使用到的數據文件放置的目錄。在此目錄下各自的軟件應該要有各自的目錄。 舉例來說,MySQL的數據庫放置到/var/lib/mysql/而rpm的數據庫則放到/var/lib/rpm去! | | /var/lock/ | 某些設備或者是文件資源一次只能被一個應用程序所使用,如果同時有兩個程序使用該設備時, 就可能產生一些錯誤的狀況,因此就得要將該設備上鎖(lock),以確保該設備只會給單一軟件所使用。 舉例來說,燒錄機正在燒錄一塊光盤,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的數據?所以當第一個人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該設備被解除鎖定(就是前一個人用完了)才能夠繼續使用啰。目前此目錄也已經挪到 /run/lock 中! | | /var/log/ | 重要到不行!這是登錄文件放置的目錄!里面比較重要的文件如/var/log/messages, /var/log/wtmp(記錄登陸者的信息)等。 | | /var/mail/ | 放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為鏈接文件啦! | | /var/run/ | 某些程序或者是服務啟動后,會將他們的PID放置在這個目錄下喔!至于PID的意義我們會在后續章節提到的。 與 /run 相同,這個目錄鏈接到 /run 去了! | | /var/spool/ | 這個目錄通常放置一些佇列數據,所謂的“佇列”就是排隊等待其他程序使用的數據啦! 這些數據被使用后通常都會被刪除。舉例來說,系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件后該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出后就被刪除。如果是工作調度數據(crontab),就會被放置到/var/spool/cron/目錄中! | 建議在你讀完整個基礎篇之后,可以挑戰FHS官方英文文件(參考本章[參考數據](../Text/index.html#reference)),相信會讓你對于Linux操作系統的目錄有更深入的了解喔! * 針對FHS,各家distributions的異同,與 CentOS7 的變化 由于FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的文件或目錄數據, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。舉例來說,CentOS的網絡設置數據放在 /etc/sysconfig/network-scripts/ 目錄下,但是SuSE則是將網絡放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的FHS標準,差異性其實有限啦! 此外,CentOS 7 在目錄的編排上與過去的版本不同喔!本節稍早之前已經有介紹過,這里做個匯整。 比較大的差異在于將許多原本應該要在根目錄 (/) 里面的目錄,將他內部數據全部挪到 /usr 里面去,然后進行鏈接設置!包括下面這些: * /bin --&gt; /usr/bin * /sbin --&gt; /usr/sbin * /lib --&gt; /usr/lib * /lib64 --&gt; /usr/lib64 * /var/lock --&gt; /run/lock * /var/run --&gt; /run ### 5.3.2 目錄樹(directory tree) 另外,在Linux下面,所有的文件與目錄都是由根目錄開始的!那是所有目錄與文件的源頭~ 然后再一個一個的分支下來,有點像是樹枝狀啊~因此,我們也稱這種目錄配置方式為:“目錄樹(directory tree)” 這個目錄樹有什么特性呢?他主要的特性有: * 目錄樹的啟始點為根目錄 (/, root); * 每一個目錄不止能使用本地端的 partition 的文件系統,也可以使用網絡上的 filesystem 。舉例來說, 可以利用 Network File System (NFS) 服務器掛載某特定目錄等。 * 每一個文件在此目錄樹中的文件名(包含完整路徑)都是獨一無二的。 好,談完了FHS的標準之后,實際來看看CentOS在根目錄下面會有什么樣子的數據吧!我們可以下達以下的指令來查詢: ``` [dmtsai@study ~]$ ls -l / lrwxrwxrwx. 1 root root 7 May 4 17:51 bin -&gt; usr/bin dr-xr-xr-x. 4 root root 4096 May 4 17:59 boot drwxr-xr-x. 20 root root 3260 Jun 2 19:27 dev drwxr-xr-x. 131 root root 8192 Jun 2 23:51 etc drwxr-xr-x. 3 root root 19 May 4 17:56 home lrwxrwxrwx. 1 root root 7 May 4 17:51 lib -&gt; usr/lib lrwxrwxrwx. 1 root root 9 May 4 17:51 lib64 -&gt; usr/lib64 drwxr-xr-x. 2 root root 6 Jun 10 2014 media drwxr-xr-x. 2 root root 6 Jun 10 2014 mnt drwxr-xr-x. 3 root root 15 May 4 17:54 opt dr-xr-xr-x. 154 root root 0 Jun 2 11:27 proc dr-xr-x---. 5 root root 4096 Jun 3 00:04 root drwxr-xr-x. 33 root root 960 Jun 2 19:27 run lrwxrwxrwx. 1 root root 8 May 4 17:51 sbin -&gt; usr/sbin drwxr-xr-x. 2 root root 6 Jun 10 2014 srv dr-xr-xr-x. 13 root root 0 Jun 2 19:27 sys drwxrwxrwt. 12 root root 4096 Jun 3 19:48 tmp drwxr-xr-x. 13 root root 4096 May 4 17:51 usr drwxr-xr-x. 22 root root 4096 Jun 2 19:27 var ``` 上述目錄相關的介紹都在上一個小節,要記得回去查看看。如果我們將整個目錄樹以圖示的方法來顯示,并且將較為重要的文件數據列出來的話,那么目錄樹架構有點像這樣: ![目錄樹架構示意圖](https://box.kancloud.cn/2016-05-13_573573729b4c5.jpg)圖5.3.1、目錄樹架構示意圖 鳥哥只有就各目錄進行簡單的解釋,看看就好,詳細的解釋請回到剛剛說明的表格中去查閱喔! 看完了FHS標準之后,現在回到[第二章里面去看看安裝前Linux規劃的分區情況](../Text/index.html#beforeinstall_partition), 對于當初為何需要分區為這樣的情況,有點想法了嗎?^_^。根據FHS的定義,你最好能夠將/var獨立出來, 這樣對于系統的數據還有一些安全性的保護呢!因為至少/var死掉時,你的根目錄還會活著嘛! 還能夠進入救援模式啊! ### 5.3.3 絕對路徑與相對路徑 除了需要特別注意的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 之類的指令下達方式, 就是代表上一層與目前所在目錄的工作狀態喔!很重要的吶! 例題:如何先進入/var/spool/mail/目錄,再進入到/var/spool/cron/目錄內?答:由于/var/spool/mail與/var/spool/cron是同樣在/var/spool/目錄中,因此最簡單的指令下達方法為: 1. cd /var/spool/mail 2. cd ../cron 如此就不需要在由根目錄開始寫起了。這個相對路徑是非常有幫助的!尤其對于某些軟件開發商來說。 一般來說,軟件開發商會將數據放置到/usr/local/里面的各相對目錄,你可以參考圖3.2.1的相對位置。 但如果使用者想要安裝到不同目錄呢?就得要使用相對路徑啰!^_^ 例題:網絡文件常常提到類似“./run.sh”之類的數據,這個指令的意義為何?答:由于指令的執行需要變量(bash章節才會提到)的支持,若你的可執行文件放置在本目錄,并且本目錄并非正規的可執行文件目錄(/bin, /usr/bin等為正規),此時要執行指令就得要嚴格指定該可執行文件。“./”代表“本目錄”的意思,所以“./run.sh”代表“執行本目錄下, 名為run.sh的文件”啰! ### 5.3.4 CentOS 的觀察 如同在[第一章](../Text/index.html#torvalds_dist)談到的 Linux distribution 的差異性, 除了 FHS 之外,還有個 Linux Standard Base (LSB) 的標準是可以依循的!我們可以簡單的使用 ls 來查看 FHS 規范的目錄是否正確的存在于你的 Linux 系統中, 那么 Linux 核心、LSB 的標準又該如何查閱呢?基本上,LSB 團隊是有列出正確支持 LSB 標準的 distribution 在如下的網頁中: * [https://www.linuxbase.org/lsb-cert/productdir.php?by_lsb](https://www.linuxbase.org/lsb-cert/productdir.php?by_lsb) 不過,如果你想要知道確切的核心與 LSB 所需求的幾種重要的標準的話,恐怕就得要使用諸如 uname 與 lsb_release 等指令來查閱了。 不過,這個 lsb_release 指令已經不是默認安裝的軟件了,所以你得要自己安裝該軟件才才行。因為我們尚未講到網絡與掛載等動作, 所以下面的安裝流程在你的機器上面應該是無法執行的 (除非你確實可以連上 Internet 才行!),因為 CentOS7 在這個軟件上面實在有太多的相依軟件, 所以無法單純使用 rpm 來安裝!若你有公開的網絡,那么下面的指令才能夠順利運行! ``` # 1\. 通過 uname 檢查 Linux 核心與操作系統的位版本 [dmtsai@study ~]$ uname -r # 查看核心版本 3.10.0-229.el7.x86_64 [dmtsai@study ~]$ uname -m # 查看操作系統的位版本 x86_64 # 2\. 假設你的 CentOS 7 確實有網絡可以使用的情況下 (要用 root 的身份) [root@study ~]# yum install redhat-lsb # yum 的用法后面章節才會介紹 .....(前面省略).... Install 1 Package (+85 Dependent packages) Upgrade ( 4 Dependent packages) Total size: 47 M Total download size: 31 M Is this ok [y/d/N]: y .....(后面省略).... Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) &lt;security@centos.org&gt;" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-0.1406.el7.centos.2.3.x86_64 (@anaconda) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Is this ok [y/N]: y .....(后面省略).... [root@study ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch: desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch: printing-4.1-amd64:printing-4.1-noarch # LSB 的相關版本 Distributor ID: CentOS Description: CentOS Linux release 7.0.1406 (Core) Release: 7.0.1406 Codename: Core ``` 這個 lsb_release 的東西大家先看看就好,因為有牽涉到后面的 yum 軟件安裝的東西,這部份我們還沒有談到啊~而且如果你現在就直接安裝, 未來我們談網絡與軟件的階段時,恐怕有些地方會跟我們的測試機環境不同~所以...先看看就好喔! ^_^ ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 在這里要跟大家說抱歉,因為不想要破壞整體測試機器的環境,所以鳥哥使用了另一部虛擬機來安裝 redhat-lsb 這套軟件,而另一部虛擬機是通過 CentOS 7.0 而非 CentOS 7.1 的版本,因此你應該會發現到上面使用 lsb_release 指令的輸出中,竟然出現了 7.0.1406 的東東~真是不好意思~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看