一、  Linux系统概要

       本章的主要内容是对Linux系统的结构和各组件的功能做一个简单的介绍,涉及到Linux系统各组件的相关概念。为了更好的了解Linux系统,首先对Linux系统的基本概念做一个简单的介绍。

1.1           Linux系统组成

       Linux系统由四部分组成,各组件在Linux系统中既相对独立由相互联系,每个组件实现相对独立的功能,如果将各组件分开,就不是一个完整的Linux系统。各组件协调工作才能构成一个完整的Linux系统。

       Linux系统主要分为下面四部分:

    1.      Linux内核

    2.      GNU工具组件

    3.      图形化桌面

    4.      应用软件  

下图是Linux系统结构图:

   

      spacer.gifwKiom1f2GoKxcCWSAAAecyjfG4k875.png-wh_50

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.       用于管理进程的工具,如:检测进程的命令pstop命令等。

ShellLinux系统的交互工具,为用户提供了启动程序,管理文件系统上的文件和各种运行在系统上的进程。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系统重要的工具软件是ShellShell是为用户提供的操作平台软件(命令解析器)。它类似于DOS下的cmd.exe。它接收用户命令,然后调用相应的应用程序执行操作。如下图:

        wKioL1f2G6Pwgmm-AAB7BHLYrZc337.png-wh_50


Shell又是一种程序设计脚本语言。作为命令语言,它交互式解释和执行用户输入的命令,也可以自动地解释和执行预先编好的一连串的命令集。作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。Shell是操作系统最外面的一层。Shell管理用户与操作系统之间的交互,等待用户输入,向操作系统解释解释用户的输入,操作系统执行后并输出结果。如下图所示:


     wKiom1f2HAvhj2AoAABiLvDn9HU429.png-wh_50


2.1           Linux文件系统

   Linux系统区别于Windows系统,将所有的文件存储在单个目录结构中,也就是所有的

目录都基于一个根目录。下面的表格列出了不同发行版本的Linux系统通用的目录结构。

   Linux系统基本的目录结构:

 

 

目录

说明

/

虚拟目录的根目录,所有的目录都在根目录下

/bin

存放可执行命令的二进制文件,如:cd命令、cat命令,这些命令都是二进制命令。在/usr/bin目录目录下也存放着一些二进制命令。

/boot

内核和加载内核所需的文件。系统启动目录,存放系统启动文件,存放的是启动Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev

devDevice(设备)的缩写。该目录下存放的是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 ../..返回上两级目录。cdcd ~命令是定位到当前用户的工作目录,如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           目录管理

   命令cpmvrm都可以对目录进行操作,因为在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

 

图:文件的硬链接


      wKiom1f2HjCSTdEgAAAqAcvO8aM724.png-wh_50


 一个文件的引用数或链接数由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

 



图:文件软链接

     wKioL1f2Htix1PR0AAAvQv1Kevs562.png-wh_50


软连接使用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命令,当然使用catmoreless命令都能达到同样的效果。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命令相同。