一、 Linux系統概要
本章的主要內容是對Linux系統的結構和各組件的功能做一個簡單的介紹,涉及到Linux系統各組件的相關概念。爲了更好的瞭解Linux系統,首先對Linux系統的基本概念做一個簡單的介紹。
1.1 Linux系統組成
Linux系統由四部分組成,各組件在Linux系統中既相對獨立由相互聯繫,每個組件實現相對獨立的功能,如果將各組件分開,就不是一個完整的Linux系統。各組件協調工作才能構成一個完整的Linux系統。
Linux系統主要分爲下面四部分:
1. Linux內核
2. GNU工具組件
3. 圖形化桌面
4. 應用軟件
下圖是Linux系統結構圖:
1.1.1 Linux內核
操作系統的通常含義指的就是系統內核,是指管理和分配計算機資源(CPU,內存和其他硬件設備)的核心軟件。
操作系統除管理和分配資源的核心軟件,還包括命令行解釋器,圖形桌面,文件操作工具和文本編輯器等等其他工具軟件。
Linux內核的職責:
1. 進程調度:Linux是多任務操作系統,也就是可以有多個進程同時駐留在內存,每個進程都可以獲得CPU的使用權,哪個進程獲得CPU的使用權和以及使用多長時間,都有內核進程調度程序決定,而不是進程本身決定。
2. 內存管理:對於操作系統來說,內存是有限的資源,內核必須要高效的、公平的在進程之間共享內存資源。Linux系統也採用了虛擬內存管理機制,使用虛擬內存有兩方面的好處:一是,進程和進程之間、進程和內核之間要彼此隔離,不能共享內存,一個進程不能讀取或修改其他進程或內核在內存中的內容。二是,只將進程的一部分放在內存中,這樣可以減少進程對內存的需求量,而且還可以在內存中加載更多的進程,使執行高效的CPU在任一時刻都有一個進程在執行,可以更充分的使用CPU資源。
3. 提供了文件系統:內核在磁盤之上提供了文件系統,允許用戶創建、更新和刪除文件的操作。
4. 創建和終止進程:內核可以將進程加載到內存,爲其分配允許所需要的資源(CPU、內存和文件的訪問等等)。把運行中的程序稱作進程,一旦程序執行結束,內核還要釋放進程所佔用的資源爲其他進程使用。
5. 對設備的訪問:計算機的外部設備,如鍵盤、鼠標和光驅等等,內核可以實現計算機與外部設備的通信,包括輸入和輸出。
6. 提供應用程序編程接口:用戶可以通過程序請求內核執行各種任務
1.1.2 GNU工具
Linux內核更底層,實現了對硬件的管理,但還需要基於內核的上層工具軟件來實現一些標準的功能,如控制文件和程序實現網絡連接等等。
GNU工具軟件爲Linux提供了一些工具軟件包,主要由三部分組成:
1. 用於處理文件的工具,如:創建、拷貝、刪除文件的命令。
2. 用於操作文本的工具,如:文本編輯器vi。
3. 用於管理進程的工具,如:檢測進程的命令ps,top命令等。
Shell:是Linux系統的交互工具,爲用戶提供了啓動程序,管理文件系統上的文件和各種運行在系統上的進程。Shell通過命令行提示符,允許輸入文本命令,然後解釋並在內核中執行。Shell包括了一組內置命令,可以通過這些命令來完成一些和系統的交互式操作,例如複製文件、刪除和移動文件,啓動或關閉某個運行的程序。也可以將這些命令放入文件中作爲程序執行,這些文件被稱作shell腳本,通過shell腳本,我們可以一次執行一組命令,完成一個特定的任務。
1.1.3 Linux桌面系統
早期的Linux系統只有一個文本界面,允許管理員運行程序、管理程序的執行和管理系統中的文件。隨着Windows桌面系統的普及,Linux系統也開發了屬於自己的桌面系統,如:X Window系統,KDE桌面系統等等。
1.2 Linux版本
將完整的Linux系統包稱作發行版本。有各種不同的Linux發行版本來滿足可能存在的各種需求。不同的版本針對不同的使用人羣,如商業用戶、軟件開發和普通用戶等等。每個不同的發行版本包含特定的軟件包,如爲軟件開發準備的編譯器和集成開發環境,爲普通用戶準備的音頻和視頻軟件等等。不同的Linux發行版本通常歸爲三類:
1. 完整的Linux發行版
2. 專業發行版
3. LiveCD測試發行版
一、 BashShell涉及到的概念和基本操作
本章的主要內容是介紹如何通過Bash shell提供的基本命令操作Linux系統的文件和目錄,以及Bash Shell的一些基本特性。涉及到的內容包括Shell的概念和Linux系統的目錄結構,對於Linux不同目錄的存放的文件內容和功能做簡要的說明。
2.1 命令解析器Shell
Linux系統重要的工具軟件是Shell,Shell是爲用戶提供的操作平臺軟件(命令解析器)。它類似於DOS下的cmd.exe。它接收用戶命令,然後調用相應的應用程序執行操作。如下圖:
Shell又是一種程序設計腳本語言。作爲命令語言,它交互式解釋和執行用戶輸入的命令,也可以自動地解釋和執行預先編好的一連串的命令集。作爲程序設計語言,它定義了各種變量和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。Shell是操作系統最外面的一層。Shell管理用戶與操作系統之間的交互,等待用戶輸入,向操作系統解釋解釋用戶的輸入,操作系統執行後並輸出結果。如下圖所示:
2.1 Linux文件系統
Linux系統區別於Windows系統,將所有的文件存儲在單個目錄結構中,也就是所有的
目錄都基於一個根目錄。下面的表格列出了不同發行版本的Linux系統通用的目錄結構。
Linux系統基本的目錄結構:
目錄 | 說明 |
/ | 虛擬目錄的根目錄,所有的目錄都在根目錄下 |
/bin | 存放可執行命令的二進制文件,如:cd命令、cat命令,這些命令都是二進制命令。在/usr/bin目錄目錄下也存放着一些二進制命令。 |
/boot | 內核和加載內核所需的文件。系統啓動目錄,存放系統啓動文件,存放的是啓動Linux 時使用的一些核心文件,包括一些連接文件以及鏡像文件。 |
/dev | dev是Device(設備)的縮寫。該目錄下存放的是Linux 的外部設備,在Linux 中訪問設備的方式和訪問文件的方式是相同的。 |
/etc | 系統啓動文件和配置文件的目錄。這個目錄用來存放所有的系統管理所需要的配置文件和子目錄,如/etc/profile、/etc/passwd等文件。 |
/home | 在Linux 中,每個用戶都有一個自己的工作目錄,用來存放一些自己的文件,並且在這個目錄中用戶具有所有的權限。一般該目錄名是以用戶的賬號命名的。例如用戶yarn 的主目錄就是/home/yarn,因爲所有用戶都有自己的主目錄。 |
/lib | 庫文件目錄,用於存放系統和應用程序的庫文件,這個目錄裏存放着系統最基本的動態連接共享庫,其作用類似於Windows 裏的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。 |
/media | 可移動設備的掛載點。Linux 系統會自動識別一些設備,例如U 盤、光驅等等,當識別後,Linux 會把識別的設備掛載到這個目錄下。 |
/mnt | 掛載目錄,用於存放設備掛載點,用戶臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然後進入該目錄就可以查看光驅裏的內容了。 |
/opt | 用於安裝三方軟件,這是給主機額外安裝軟件所擺放的目錄。比如您安裝一個ORACLE 數據庫則就可以放到這個目錄下。默認是空的。 |
/root | root管理員的主工作目錄。 |
/sbin | 引導、修復和恢復系統的命令目錄。存放可執行命令的二進制文件,管理員級別的命令工具。 |
/tmp | 臨時目錄,用於存放臨時創建的文件。通常在啓動時,清理/tmp 目錄下的空間,所以你不能在/tmp 存儲需要長期保留的內容。 |
/usr | 用戶安裝軟件的目錄,用戶相關的程序和只讀數據駐留的位置,這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似與windows 下的program files 目錄。在 /usr 中存在整個目錄層次結構。例如,/usr/bin 目錄包含二進制文件和應用程序,而 /usr/share/doc 包含與這些應用程序相關的文檔。 |
/var | 用於存放經常變化的文件,如日誌文件。 |
/lost+found | 這個目錄一般情況下是空的,當系統非法關機後,這裏就存放了一些文件碎片,用於系統恢復。 |
/proc | 所有正在運行進程的映像目錄。這個目錄是一個虛擬的目錄,它是系統內存的映射,這個目錄的內容不在硬盤上而是在內存裏。 |
/selinux | 這個目錄是Redhat/CentOS 所特有的目錄,Selinux 是一個安全機制,類似於windows的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux 相關的文件的。 |
/sys | Linux文件系統信息。 |
/usr/bin | 系統用戶使用的應用程序。 |
/usr/sbin | 超級用戶使用的比較高級的管理程序和系統守護程序。 |
/usr/src | 內核源代碼默認的放置目錄。 |
2.1 啓動Bash Shell
當打開一個終端模擬器後會啓動一個Shell進程,並且會定位在登錄用戶的工作目錄下,如:yarn用戶的工作目錄是:/home/yarn。多數情況下系統會爲每個用戶創建一個工作目錄,目錄名稱是用戶的登錄名稱。在工作目錄下,用戶具有創建、刪除文件及所有文件操作權限。
當用戶每次啓動一個終端或使用bash命令啓動一個新的Shell進程時,系統都會執行用戶工作目錄下的.bashrc配置文件,此文件可以配置用戶專用的環境變量、自定義函數和命令別名等信息,後面的章節會詳細講解。
2.2 文件系統目錄切換
在Linux系統上,如果從一個目錄切換到另一個目錄需要用到cd命令。
cd命令格式:
cd /home/yarn/dir # 切換到/home/yarn/dir目錄下 cd yarn/dir # 使用相對路徑 cd .. # 回到上一級目錄 cd ../.. # 回到上兩級目錄 cd # 切換到當前用戶的工作目錄 cd ~ # 同上 cd - # 回到最近一次所在的目錄 |
命令cd後面可以跟相對路徑和絕對路徑,cd ..是返回上一級目錄。cd ../..返回上兩級目錄。cd、cd ~命令是定位到當前用戶的工作目錄,如yarn用戶會定位到/home/yarn目錄下。cd -命令回到最近的上一個工作目錄。
絕對路徑:
絕對路徑定義了目錄或文件在整個文件系統中的確切位置,如:cd /etc/profile.d,系統會從根上開始找,在/下找到etc目錄,然後在/etc目錄下找profile.d目錄。
相對路徑:
相對路徑是基於當前位置的定位方式,也就是系統會從當前位置爲基點開始找需要定位的目錄。如:cd bash01,系統會在當前目錄下找bash01目錄,如果找不到會提示警告信息到控制檯。
2.3 顯示文件和目錄信息
如何顯示當前目錄下存或指定的目錄下存在哪些文件和目錄信息,這就需要使用ls命令,ls命令是常用到的命令,可以查看目錄下存在的文件信息。但是使用的方式有幾種,下面通過例子說明ls命令的常用使用方式。
2.3.1 基本顯示
ls命令格式:
ls |
控制檯顯示:
bash01 bash01.sh class20151221 hdfs01 mapreduce01 mapreduce02 公共的 模板 視頻 圖片 文檔 下載 音樂 桌面 |
ls命令執行後只顯示了當前目錄下存在哪些文件(注意:不包含隱藏文件),但沒有顯示文件的詳細信息,不能看出哪些是目錄,哪些是文件。如果希望區分文件類型可以採用下面的方式。
命令格式:
ls -F |
控制檯顯示:
bash01/ class20151221/ mapreduce01/ 公共的/ 視頻/ 文檔/ 音樂/ bash01.sh* hdfs01/ mapreduce02/ 模板/ 圖片/ 下載/ 桌面/ |
參數-F將文件的基本類型顯示到控制檯,帶/符號的是目錄文件,帶*號的是可執行的文件(bash腳本)。這種使用方式可以顯示文件的類型,但隱藏文件並沒有顯示出來,如果想顯示所有的文件信息包括隱藏文件信息,需要使用-a參數。
命令格式:
ls -F -a ls -Fa |
控制檯顯示:
./ .bash_logout .dbus/ .gnome2_private/ .lesshst .pulse/ .xsession-errors.old ../ .bash_profile .dmrc .gtk-bookmarks .local/ .pulse-cookie .bashrc .esd_auth .gvfs/ mapreduce01/ .ssh/ … |
在Linux系統中,隱藏文件都以.符號開始。
如果想將當前目錄下的目錄文件內的文件信息也同時顯示,需要用到參數-R,採用遞歸的方式顯示文件信息。
命令格式:
ls -R |
參數-R將當前目錄下的存在的目錄內的信息也同時顯示到控制檯。
2.3.2 顯示文件和目錄的詳細信息
ls命令常用的參數:
參數 | 說明 |
-a | 並且顯示隱藏文件 |
-l | 以列表的方式顯示 |
-R | 遞歸顯示子目錄下的文件 |
-F | 顯示文件類型 |
-i | 顯示文件索引值 |
顯示文件或目錄的詳細信息。
命令格式:
ls -l |
控制檯顯示:
drwxrwxr-x. 3 yarn yarn 4096 2月 16 17:06 bash01 -rwxrw-r--. 1 yarn yarn 224 2月 16 17:07 bash01.sh drwxrwxr-x. 2 yarn yarn 4096 12月 24 10:01 class20151221 drwxrwxr-x. 4 yarn yarn 4096 1月 20 12:05 hdfs01 drwxrwxr-x. 3 yarn yarn 4096 11月 24 14:40 mapreduce01 drwxrwxr-x. 3 yarn yarn 4096 11月 3 19:59 mapreduce02 |
2.3.3 過濾顯示
如果想在多個文件中只顯示相關的文件信息,可以採用下面的幾種方式。
命令格式:
ls -l bash01.sh ls bash01.sh -l |
控制檯顯示:
-rwxrw-r--. 1 yarn yarn 224 2月 16 17:07 bash01.sh |
也可以採用模式匹配過濾顯示文件信息。
命令格式:
ls -l bash* ls -l bash? |
?號佔位符代表一個字符,*號佔位符代表零個到多個字符。
命令ls還可以指定顯示某個目錄下存在的文件內容。
ls -l /usr/local |
命令會以列表形式顯示/usr/local目錄下存在的文件信息,注意,不顯示隱藏文件。
2.4 文件管理
Linux提供了操作文件的常用命令,通過這些命令可以對文件系統上的文件進行操作,下面通過例子說明。
2.4.1 創建一個空文件
通過命令touch可以創建一個空的文本文件,如用戶的配置文件。也可以創建一個日誌文件,記錄程序運行過程中的特定信息。
命令格式:
touch test01 ls -li test01 |
控制檯顯示:
1708251 -rw-rw-r--. 1 yarn yarn 0 2月 16 18:04 test01 |
touch命令創建的是一個大小爲0的空文件,參數-i會顯示文件的索引值,在系統中,每個文件都有一個唯一的索引值,並且文件的屬主是當前用戶。
2.4.2 複製文件
可以通過命令將文件或目錄複製到其他的目標目錄而不改變原來的文件或目錄。可以通過cp命令對文件或目錄進行復制。
命令格式:
cp source dest |
複製文件:
cp test01 test02 ls -li test01 test02 |
控制檯顯示:
1708256 -rw-rw-r--. 1 yarn yarn 0 2月 16 18:21 test01 1708251 -rw-rw-r--. 1 yarn yarn 0 2月 16 18:22 test02 |
可以看到文件索引值不同,說明是兩個獨立的文件,在這個例子中我們使用的是相對路徑,在當前用戶得工作目錄下,也可以使用絕對路徑,如下:
cp /home/yarn/test01 /home/yarn/test02 |
也可以將一個文件複製到一個其他的目錄中。
複製文件:
cp test01 bash01 cp /home/yarn/test01 /home/yarn/bash01 |
上面的兩種方式都可以,在目錄bash01下如果存在了一個與test01同名的文件,也也可以同時爲目標文件改名,如下:
cp test01 bash01/test03 |
cp命令常用的參數:
參數 | 說明 |
-r | 遞歸拷貝 |
複製目錄:
cp -r bash01 bash02 |
如果使用cp命令拷貝目錄需要使用-r參數,如果將bash01目錄包括目錄下的文件全部拷貝到其他目錄需要使用-r參數,如果沒有使用-r參數,系統會提示警告信息。上面的命令將當前目錄下的bash01目錄在當前目錄下作了一個備份,因爲在同一個目錄下,所有目標目錄需要改變名稱。
使用通配符複製:
cp bashTest* bash03 |
上面的命令將當前目錄下以bashTest開頭的所有文件拷貝到bash03目錄下。這也是常用到的命令。
2.4.3 重命名文件
在Linux中文件的重命名和移動文件使用的是相同的命令mv,類似於Windows中的剪切功能。
命令格式:
mv source dest |
重命名文件:
mv test01 test01bak |
將當前目錄下的test01文件更名爲test01bak,需要的注意的是原來的文件不存在了。
移動文件:
mv test01 bash01 |
將文件test01剪切到bash01目錄下。
移動目錄:
mv bash01 bash02 |
可以將整個目錄剪切到其他的目錄,同時可以爲目錄更名。注意,使用mv命令移動目錄不需要-r參數,不需要遞歸操作。
2.4.4 刪除文件
系統中刪除文件或目錄可以使用rm命令,如刪除臨時文件或目錄。也是常用到的命令,在使用過程中有要注意的地方。刪除一個普通文件的語法格式如下。
命令格式:
rm [參數] filename |
刪除文件:
rm -i test01 |
刪除當前目錄下的文件test01,參數-i是刪除文件是提示確認,如果輸入y,執行刪除操作,否則終止刪除操作。
控制檯提示信息:
rm:是否刪除普通文件 "test01"?y |
刪除目錄:
rm -r bash02 |
刪除當前目錄下的bash02目錄,注意:要有參數-r,採用遞歸的方式刪除目錄,否則提示不能刪除。刪除文件時也可以使用通配符,但是要謹慎使用,因爲文件一旦刪除不可恢復。
刪除文件:
rm -i test* |
如果使用root權限刪除其他用戶的目錄或文件時,刪除操作會有提示信息,確認是否刪除,-f參數會忽略這些提示信息,直接將文件刪除。如果刪除的是當前用戶的文件,不會有提示信息,系統會直接刪除。說明如果用戶具有操作其他用戶的文件時,需要注意。
rm -rf dir1 |
2.5 目錄管理
命令cp、mv和rm都可以對目錄進行操作,因爲在Linux系統中,目錄也是文件。但是目錄的創建和刪除還有特定的命令,mkdir命令用於創建目錄,rmdir命令用於刪除空的目錄,如果目錄非空,就只能使用rm命令纔可以刪除。
2.5.1 創建目錄
命令格式:
mkdir dirname |
創建目錄:
mkdir dir1 mkdir /home/yarn/dir1 |
在當前目錄創建一個目錄dir1,注意:此命令只能創建單級目錄,一次只能創建一個目錄,如果想同時創建多級目錄,需要參數-p。
創建多級目錄:
mkdir -p dir2/dir3/dir4 mkdir -p /home/yarn/dir2/dir3/dir4 |
同時創建多級目錄,如果父目錄不存在,首先創建父目錄然後在創建子目錄。
2.5.2 刪除目錄
rm命令可以刪除非空的目錄,rmdir命令只能刪除空的目錄,如果目錄非空,rmdir命令不能刪除,會提示目錄非空。
命令格式:
rmdir dirname |
刪除空目錄:
mkdir tmpdir rmdir tmpdir |
新創建的目錄tmpdir是空目錄,使用rmdir命令將tmpdir空目錄刪除。如果要刪除非空目錄可以使用rm命令,要帶參數-r,-r參數是遞歸方式。
刪除非空目錄:
rm -r dir2 |
命令將遞歸刪除目錄,將目錄下的文件包括目錄同時刪除。
2.1 文件
文件是在磁盤上的一段字節信息,系統通過文件的索引對文件進行引用。文本文件,數據文件、二進制文件都是普通的文件,可以順序存取,也可以隨機存取。
2.2 目錄
創建的目錄中包含文件名稱和文件在文件系統中的引用,文件名保存在目錄文件中,而不是和文件本身存儲在一起,文件名和文件的索引指向文件系統中的文件本身。所以,在Linux系統中,不同的目錄可以引用同一個文件,這和Windows系統的拷貝還是不同的。並且在不同的目錄下引用的同一個文件可以存在不同的文件名稱,這不是同一個文件的多個副本,而是一個文件的多個鏈接。
[yarn@YARN ~]$ mkdir filedir1 [yarn@YARN ~]$ cd filedir1 [yarn@YARN filedir1]$ touch readme.txt [yarn@YARN filedir1]$ ls -il 總用量 0 1589554 -rw-rw-r--. 1 yarn yarn 0 9月 30 13:33 readme.txt [yarn@YARN filedir1]$ cd .. [yarn@YARN ~]$ mkdir filedir2 [yarn@YARN ~]$ cd filedir2 [yarn@YARN filedir2]$ ln /home/yarn/filedir1/readme.txt file.txt [yarn@YARN filedir2]$ ls -il 總用量 0 1589554 -rw-rw-r--. 2 yarn yarn 0 9月 30 13:33 file.txt |
圖:文件的硬鏈接
一個文件的引用數或鏈接數由Linux系統維護,文件的鏈接如果是多個,刪除其中一個引用,Linux系統不會刪除文件在系統中的數據塊,直到最後一個引用刪除後,纔會將文件系統中的數據塊刪除。
這種方式的鏈接是硬鏈接,可以使用ln命令創建。
命令格式:
ln 源文件 鏈接文件 |
如上面的例子:
ln /home/yarn/filedir1/readme.txt file.txt |
對於文件的鏈接文件可以使用rm命令進行刪除。注意:刪除的是一個引用,除非是最後一個引用,同時也釋放文件系統中的數據文件。
另外需要注意的是,ln命令和cp命令是不同的,cp命令是創建了一個文件副本,而ln命令爲文件新增了一個引用。硬鏈接不會改變文件的權限和屬性。
還有一種文件軟鏈接方式,通過文件名稱指向文件。硬鏈接和軟鏈接的主要區別在於,硬鏈接是直接引用文件,而軟連接通過文件名稱進行引用。
[yarn@YARN filedir2]$ ln -s /home/yarn/filedir1 fileLink.txt [yarn@YARN filedir2]$ ls -il 總用量 4 1589556 lrwxrwxrwx. 1 yarn yarn 19 9月 30 14:13 fileLink.txt -> /home/yarn/filedir1 1589554 -rw-rw-r--. 2 yarn yarn 3 9月 30 13:53 file.txt |
圖:文件軟鏈接
軟連接使用ln -s命令創建,可以使用rm命令進行刪除。
命令格式:
ln -s 源文件 鏈接文件 |
如上面的例子:
ln -s /home/yarn/filedir1 fileLink.txt |
2.1 查看文件內容
查看文件內容可以使用文本編輯器,但Linux還提供了其他的命令用來查看文件內容,但只能瀏覽文件內容而不能編輯文件內容。下面通過例子說明每個命令的使用方式和各自的特點。
2.1.1 cat命令
cat命令可以顯示文本文件內容到控制檯,使用方法如下。
命令格式:
cat filename |
cat命令的特點是一次將文件內容全部顯示到控制檯,當文件內容很多時只能看到文件的最後部分,文件的前面內容無法看到,如日誌文件通常內容很多,如果使用cat命令,很多信息看不到,這就很不方便,所以,當文件很大時可以採用其他的命令查看文件內容。
2.1.2 more命令
more命令會顯示文件的內容到控制檯,但是與cat命令的區別是按頁顯示,當顯示一屏
後會停下來,等用戶下一步操作。
命令格式:
more filename |
查看日誌:
more startlogs.log |
控制檯顯示:
… 01/15/16 16:01:40 YARN: hadoop-config.sh || HADOOP_COMMON_LIB_NATIVE_DIR = '' 01/15/16 16:01:40 YARN: hadoop-config.sh || HADOOP_COMMON_LIB_NATIVE_DIR = 'lib/native' 01/15/16 16:01:40 YARN: hadoop-config.sh || HDFS_DIR = '' 01/15/16 16:01:40 YARN: hadoop-config.sh || HDFS_DIR = 'share/hadoop/hdfs' 01/15/16 16:01:40 YARN: hadoop-config.sh || HDFS_LIB_JARS_DIR = '' --More--(0%) |
命令執行後,從文件開始部分顯示到控制檯,顯示滿一屏後停下來等待用戶下一步的操作,並且在最下面一行顯示以顯示內容百分比。
more命令常用的鍵盤命令:
參數 | 說明 |
h | 顯示幫助菜單 |
z | 顯示文本的下一屏 |
空格鍵 | 顯示文本的下一屏 |
b | 顯示文本的上一屏 |
回車鍵 | 顯示下一行 |
q | 退出 |
v | 啓動文本編輯器 |
= | 顯示當前文本的行號 |
2.1.3 less命令
less命令是more命令的升級版本,使用方式上和more命令相似,一次只顯示一屏文件內容到控制檯並等待用戶的下一步操作,less命令支持more命令的所有參數並且可以通過上下鍵翻頁。另外,less命令不同於cat命令和more命令的重要特點是不讀取整個文件到內存,如果文件很大,less命令的性能要優於cat命令和more命令。
2.1.4 tail命令
如果只關心文本文件的最後的部分內容,如日誌文件,就可以考慮使用tail命令,當然使用cat、more和less命令都能達到同樣的效果。tail命令只顯示文件的最後部分內容,默認情況下是最後十行,如下所示:
顯示日誌文件:
tail logs |
控制檯顯示:
[yarn@YARN bash02]$ tail logs 01/13/16 11:06:04 YARN: hadoop-config.sh || Set log level. Default to INFO 01/13/16 11:06:04 YARN: hadoop-config.sh || HADOOP_LOGLEVEL='INFO' 01/13/16 11:06:04 YARN: hadoop-config.sh || DEFAULT_CONF_DIR = '' 01/13/16 11:06:04 YARN: hadoop-config.sh || DEFAULT_CONF_DIR = 'etc/hadoop' 01/13/16 11:06:04 YARN: hadoop-config.sh || export HADOOP_CONF_DIR = '/usr/local/hadoop/etc/hadoop' 01/13/16 11:06:04 YARN: hadoop-config.sh || if [[ ( '' != '' ) && ( '' != '' ) ]] then error! and exit 01/13/16 11:06:04 YARN: hadoop-config.sh || 進程命令行選項,指定主機或文件 01/13/16 11:06:04 YARN: hadoop-config.sh || if [[ ( '' != '' ) && ( '' != '' ) ]] then error! and exit 01/13/16 11:06:04 YARN: hadoop-config.sh || if [ -f '/usr/local/hadoop/etc/hadoop'/hadoop-env.sh' ] 1/13/16 11:06:04 YARN: hadoop-config.sh || '/usr/local/hadoop/etc/hadoop'/hadoop-env.sh [yarn@YARN bash02]$ |
默認情況下只顯示最後十行內容到控制檯,當然可以通過參數指定輸出的行數,如果想要輸出文件的最後二十行數據到控制檯,可以通過下面的參數實現。
輸出二十行內容:
tail -n 20 logs |
tail命令常用的參數:
參數 | 說明 |
-n lines | 指定顯示的行數 |
-f | 顯示文件的新增加內容 |
tail命令的-f參數可以我們監控日誌文件,如果有新的額日誌文件產生,會同時打印到控制檯。
2.1.5 head命令
head命令和tail命令相似,只是顯示的文件的開頭內容,默認情況下顯示十行,可以通過-n參數指定顯示的行數,注意:head命令不支持-f參數。使用方式和tail命令相同。