1. 程式人生 > >OracleOCP認證 之 Linux基礎

OracleOCP認證 之 Linux基礎

兩個 options 系統管理員 pre margin 程序 arc linux基礎 即使


Linux 基礎

一、SHELL

技術分享

在系統中,人所輸入到系統內部的命令,以字符類型的形式輸入到系統當中,然而系統 只識別 2 進制碼,就如以前 doc 界面為例,輸入的都是字符類的英文字母作為輸入的命令代 碼,然而明顯二進制碼與我們平常所輸入的命令式不一樣的,就像語言不通的兩個人,需要 進行翻譯。

基本上 shell 分兩大類:

1) 圖形界面 shell(Graphical User Interface shell 即 GUI shell)

例如: 應用最為廣泛的 Windows Explorer (微軟的 windows 系列制作系統),還有也包括廣 為人知的 Linux shell,其中 linux shell 包括 X window manger (BlackBox 和 FluxBox),以及 功能更強大的 CDE、GNOME、KDE、 XFCE。

2) 命令行式 shell(Command Line Interface shell ,即 CLI shell)

例如: bash / sh / ksh / csh(Unix/linux 系統) cmd.exe/ 命令提示字符(Windows NT 系統) Windows PowerShell(支援 .NET Framework 技術的 Windows NT 系統) 傳統意義上的 shell 指的是命令行式的 shell,以後如果不特別註明,shell 是指命令行式 的 shell。



二、Linux 文件與目錄管理

(一)、目錄樹

在 Linux 底下,所有的文件與目錄都是由根目錄開始的。根目錄是所有目錄與文件的源頭,再一個一個的分支下來,有點像是樹枝狀。因此,我們也稱這種目錄配置方式為:『目錄樹(directory tree)』。

他主要的特性有:

  • 目錄樹的啟始點為根目錄 (/, root);
  • 每一個目錄不止能使用本地端的 partition 的文件系統,也可以使用網絡上的 filesystem 。(NFS)

如果我們將整個目錄樹以圖標的方法來顯示,並且將較為重要的文件數據列出來的話,那麽目錄樹架構有點像這樣:

技術分享

(二)、絕對路徑與相對路徑

除了需要特別註意的 FHS 目錄配置外,在文件名部分我們也要特別註意喔!因為根據檔名寫法的不同,也可將所謂的路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。

1. 絕對路徑

大家都知道,在我們平時使用計算機時要找到需要的文件就必須知道文件的位置,而表示文件的位置的方式就是路徑。絕對路徑就是文件或目錄在硬盤上真正的路徑。 絕對路徑名稱表示的文件在文件系統裏面唯一的名稱。

例如,只要看到這個路徑:"D:\ORACLE\OCP.doc"我們就知道"OCP.doc"文件是在 D 盤的"ORACLE"目錄中。類似於這樣完整的描述文件位置的路徑就是絕對路徑。在 linux 裏面一樣,/study/oracle/ocp/test.txt 通過這個目錄呢我們就可以知道 test.txt 在根目錄(/)下的 study 子目錄下的 oracle 目錄。我們可以用 cd /study/oracle/ocp 通過這個絕對路徑的方式去查看到這個文件。

2. 相對路徑

相對路徑是一個相對性的對於絕對路徑來說的。絕對路徑其實可以這麽理解,既然我們在目錄下,我要去到本目錄下的其他子目錄可以直達其他子目錄的名字,而不需要經過本目錄的再回到你想要的目錄裏面。比如說:我現在在/opt 下。然後/opt 下有個 oracle 目錄,也就是說我現在的絕對目錄是在/opt/oracle 下。然而,在/opt 下也有一個 ocp 目錄就是說 ocp 絕對路徑是/opt/ocp。那麽我現在已經在/etc 目錄下了。然而我們就可以同 cd ocp 去到同在/etc 下的 ocp 而不需要打入常常的一條/etc/ocp 的絕對路徑去進入了。

技術分享

(三)、Linux 目錄結構

1. FHS

因為利用 Linux 來開發產品或 distributions 的社群/公司與個人實在太多了, 如果每個人都用自己的想法來配置文件放置的目錄,那麽將可能造成很多管理上的困擾。

因此制訂了 Filesystem Hierarchy Standard (FHS)文件系統層次標準。

根據 FHS(http://www.pathname.com/fhs/)的官方文件指出, 他們的主要目的是希望讓使用者可以了解到已安裝軟件通常放置於那個目錄下, 所以他們希望獨立的軟件開發商、操作系統制作者、以及想要維護系統的用戶,都能夠遵循 FHS 的標準。 也就是說,FHS 的重點在於規範每個特定的目錄下應該要放置什麽樣子的數據而已。 這樣做好處非常多,因為 Linux 操作系統就能夠在既有的面貌下(目錄架構不變)發展出開發者想要的獨特風格。

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

技術分享

可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行文件與用戶的郵件等數據,是能夠分享給網絡上其他主機掛載用的目錄;

不可分享的:自己機器上面運作的裝置文件或者是與程序有關的 socket 文件等, 由於僅與自身機器有關,所以當然就不適合分享給其他主機了。

不變的:有些數據是不會經常變動的,跟隨著 distribution 而不變動。 例如函式庫、文件說明文件、系統管理員所管理的主機服務配置文件等等;

可變動的:經常改變的數據,例如登錄文件、一般用戶可自行收受的新聞組等。事實上,FHS 針對目錄樹架構僅定義出三層目錄底下應該放置什麽數據而已,

分別是底下這三個目錄的定義:

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

2. Linux 重要的目錄


技術分享

技術分享

3. Linux 中比較特殊的目錄

在 Linux 當中也是非常重要的目錄:

技術分享

技術分享

4. 兩個非常重要的目錄

1) /usr 的意義與內容:

很多讀者都會誤會/usr 為 user 的縮寫,其實 usr 是 Unix Software Resource 的縮寫, 也就是『Unix 操作系統軟件資源』所放置的目錄,而不是用戶的數據啦!這點要註意。 FHS 建議所有軟件開發者,應該將他們的數據合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟件自己獨立的目錄。

因為是所有系統默認的軟件(distribution 發布者提供的軟件)都會放置到/usr 底下,因此這個目錄有點類似 Windows 系統的『C:\Windows\ + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會占用最多的硬盤容量。 一般來說,/usr 的次目錄建議有底下這些:

技術分享


2) /var 的意義與內容:

如果/usr 是安裝時會占用較大硬盤容量的目錄,那麽/var 就是在系統運作後才會漸漸占用硬盤容量的目錄。

因為/var 目錄主要針對常態性變動的文件,包括緩存(cache)、登錄檔(log file)以及某些軟件運作所產生的文件,

包括程序文件(lock file, run file),或者例如 MySQL 數據庫的文件等等。常見的次目錄有:

技術分享


三:有關目錄的命令

1. 查看幫助

  1 [[email protected] ~]# man cd //查看 cd 指令的幫助文檔


2. 顯示當前工作目錄

  1 [[email protected] ~]# pwd
  2 /root

3. 列出當前目錄下的內容:ls

  1 [[email protected] ~]# ls [-aAdfFhilnrRSt] 目錄名稱
  2 [[email protected] ~]# ls [--color={never,auto,always}] 目錄名稱
  3 [[email protected] ~]# ls [--full-time] 目錄名稱
  4 選項與參數:
  5 -a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來(常用)
  6 -A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
  7 -d :僅列出目錄本身,而不是列出目錄內的文件數據(常用)
  8 -l :長數據串列出,包含文件的屬性與權限等等數據;(常用)(ll)
  9 -n :列出 UID 與 GID 而非使用者與群組的名稱 (UID 與 GID 會在帳號管理提到!)
 10 -r :將排序結果反向輸出,例如:原本檔名由小到大,反向則為由大到小;
 11 -R :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來;
 12 -S :以文件容量大小排序,而不是用檔名排序;
 13 -t :依時間排序,而不是用檔名。
 14 --color=never :不要依據文件特性給予顏色顯示;
 15 --color=always :顯示顏色
 16 --color=auto :讓系統自行依據配置來判斷是否給予顏色
 17 --full-time :以完整時間模式 (包含年、月、日、時、分) 輸出

4. 切換目錄

  1 [[email protected] ~]# cd / //切換到根目錄

5. 創建目錄

  1 [[email protected] ~]# mkdir oracle //在當前目錄下創建 oracle 目錄
  2 選項與參數:
  3 -m :對新建目錄設置存取權限,也可以用 chmod 命令設置
  4 -p :可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將
  5 自動建立好那些尚不存在的目錄,即一次可以建立多個目錄(級聯創建)
  6 [[email protected] ~]# mkdir -p study/oracle/OC{A,P,M}
  7 //在當前目錄下創建 study 目錄,在 study 目錄下創建 oracle 目錄,oracle 目錄下創建
  8 OCA、OCP、OCM 目錄


6. 刪除目錄

  1 [[email protected] ~]# rmdir oracle //刪除 oracle 目錄

7. 創建文件

  1 [[email protected] ~]# touch oracle //創建名為 oracle 的文件

8. 刪除文件/目錄

  1 [[email protected] ~]# rm oracle //刪除名為 oracle 的文件
  2 選項與參數:
  3 -i :刪除前逐一詢問確認。
  4 -f :即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
  5 -r :將目錄及以下之檔案亦逐一刪除。
  6 [[email protected] ~]# rm *.log //刪除所有以“.log”結尾的文件
  7 [[email protected] ~]# rm -rf oracle/ //刪除 oracle 目錄並級聯刪除 oracle 目錄內的檔案

9. 移動文件/目錄

  1 [[email protected] ~]# mv oracle /opt //將檔案 oracle 移動至目錄/opt 下

10. 拷貝文件/目錄

  1 [[email protected] ~]# cp [-adfilprsu] 來源檔(source) 目標檔(destination)
  2 [[email protected] ~]# cp [options] source1 source2 source3 .... directory
  3 選項與參數:
  4 -a :相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
  5 -d :若來源檔為連結檔的屬性(link file),則復制連結檔屬性而非文件本身;
  6 -i :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
  7 -p :連同文件的屬性一起復制過去,而非使用默認屬性(備份常用);
  8 -r :遞回持續復制,用於目錄的復制行為;(常用)
  9 最後需要註意的,如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行!

11. 打開文件

  1 [[email protected] ~]# more oracle.log
  2 [[email protected] ~]# less oracle.log
  3 [[email protected] ~]# tail -20f oracle.log //文件尾部輸出
  4 [[email protected] ~]# cat oracle.log

四、用戶和組

(一)、用戶

1. UID 和 GID Linux 是通過 UID(USER ID)和 GID(GROUP ID)來識別用戶的。賬號只是為了方便用戶記憶。而 ID 與賬號的對應就在 /etc/passwd 當中。登錄 Linux 時,Linux 都幹了些啥?

1) 先找尋 /etc/passwd 裏面是否有這個賬號?如果沒有則跳出,如果有的話則將該賬號對應的 UID ( User ID )與 GID ( Group ID )讀出來,另外,該賬號的家目錄與 shell 設定也一並讀出;

2) 再來則是核對密碼表啦!這時 Linux 會進入 /etc/shadow 裏面找出對應的賬號與 UID,然後核對一下你剛剛輸入的密碼與裏頭的密碼是否相符? 3) 如果一切都 OK 的話,就進入 Shell 控管的階段啰! 2. /etc/passwd /etc/passwd /etc/passwd /etc/passwd 和/etc/shadow /etc/shadow /etc/shadow /etc/shadow

1) /etc/passwd 這個檔案的構造是這樣的:每一行都代表一個賬號, 有幾行就代表有幾個賬號在你的系統中!

不過需要特別留意的是, 裏頭很多賬號本來就是系統中必須要的,我們可以簡稱他為系統賬號, 例如 bin, daemon, adm, nobody 等等,這些賬號是系統正常運作時所需要的。


  1 root:x:0:0:root:/root:/bin/bash
  2 bin:x:1:1:bin:/bin:/sbin/nologin
  3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4 adm:x:3:4:adm:/var/adm:/sbin/nologin

技術分享

技術分享

OracleOCP認證 之 Linux基礎