第1篇 Linux命令及其工具
学海聆听:
· 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。
· 学而不思则罔,思而不学则殆。
· 知识来源于学习、思考、顿悟、实践和交流。
· 非学无以广才,非志无以成学。
· 临渊羡鱼,不如退而结网。
· 纸上得来终觉浅,绝知此事要躬行。
· 在模仿中成长,在创新中成功。
· 好的开始等于成功的一半。
· 梦想引领未来,行动成就精彩。
· 确定目标—支配行动—克服困难—实现目标。
· 工欲善其事,必先利其器。
· 博学之,审问之,慎思之,明辨之,笃行之。
第1章 Linux系统与命令
本章分两部分:Linux操作系统和Linux命令。Linux操作系统部分简要介绍Linux操作系统的概念、组成和实现。Linux命令部分用表格列出了Linux常见命令和Linux次常见命令,简要地说明了其使用方法。熟练地掌握Linux命令和工具是非常必要的,能提高工作效率。
1.1 Linux操作系统
1.1.1 Linux重要概念
Linux操作系统有如下一些重要的概念。
[1]机器指令:CPU可识别的二进制指令集,许多指令可以与汇编指令一一对应。主要分为四类:计算指令、存数据指令、取数据指令、中断指令。
[2]程序:用计算机语言编写的源代码叫做源程序,经过编译程序编译后形成的可执行码叫做可执行程序,程序是静态的。
[3]进程:程序的一次执行过程叫做进程。进程是动态的,其堆栈空间存在于内存中,CPU从内存中取程序执行代码执行相关操作。一个程序执行一次,就产生一个进程,所以,程序与进程是一对多的关系。
[4]中断:顾名思义,即中止和打断。中断是操作系统中止当前运行程序去执行相应中断号程序的过程,执行完成中断号程序后,回到原程序断点并往下继续执行。
[5]文件系统:组织、存储、检索和管理文件的系统。
[6]文件:一个具有符号的一组相关联元素的有序序列。
[7]文件名:即文件的名字,一个目录下的文件名不能重复。
[8]目录:为了方便管理文件,就形成了树形目录结构。目录下可以有文件或目录,目录类似于Windows系统下的文件夹。
[9]相对路径:相对当前路径的路径。如当前目录为/home/test/hello,到达/home/test/hello/why目录,可通过相对路径方式cd ./why到达。
[10]绝对路径:从根目录(/)开始的路径。如当前目录为/home/test/hello,若要到达/home/test/hello/why目录,可通过绝对路径方式cd /home/test/hello/why实现。
[11]Shell:Shell是一个交互性命令解释器,Linux用户可以通过编写Shell程序完成一些管理工作。
[12]inode节点:文件系统中的基本对象。每个文件和目录对应一个inode, inode在一个分区内是唯一的,它可以是一个正常文件、一个目录、一个符号链接,或者是其他内容。
1.1.2 Linux组成
Linux有四个主要部分,分别为Shell、文件系统、内核、实用工具。
Linux内核主要由五个子系统组成,分别为进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。
Linux系统管理包括用户管理、文件管理、设备管理、进程管理、网络管理、作业管理和实用工具。Linux实用工具包括压缩/解压工具、Shell工具等。
1.1.3 Linux目录结构
1.目录结构
Linux文件系统是树状目录层次结构。/为根目录,根目录为一级子目录,各子目录名有特定的含义,这些目录存放和管理特定的文件。Linux目录结构如图1-1所示。
图1-1 Linux目录结构
2.目录说明
为了方便文件的管理,Linux操作系统建有许多一级子目录或多级子目录,这些目录存放和管理特定的某一类文件。Linux目录结构说明如表1-1所示。
表1-1 Linux目录结构说明
1.1.4 Linux操作系统的组成
Linux操作系统的层次结构如图1-2所示。用户应用程序如办公软件,或者自己编写的应用程序服务;操作系统服务指Shell解释器、系统调用接口等;操作系统内核是操作系统在内核态完成系统功能的程序;硬件系统指硬件设备驱动程序。
图1-2 Linux操作系统的层次结构图
Linux内核系统模块主要由五个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。它们的相互依赖关系如图1-3所示,由图可以看出,所有的模块都与进程调度模块存在依赖关系,因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作系统完成硬件操作后才可继续运行。
图1-3 Linux内核系统模块结构及相互依赖关系图
Linux操作系统属于系统软件,软件都是建立在硬件基础上去实现相应的功能。Linux内核结构图如1-4所示,此图划分了三个层次,分别为硬件级、内核级、用户级。硬件级指的是电脑硬件,如CPU、显卡、显示器等。内核级指的是操作系统内核功能(除硬件控制部分),它处于操作系统的核心态,内核代码可以无限制地对系统存储、外部设备进行访问。图中内核级的硬件控制一般指的是BIOS(基本输入/输出系统)程序,BIOS的主要功能是为计算机提供最底层的、最直接的硬件设置和控制。用户级是操作系统提供给用户的调用接口,它处于操作系统的用户态,应用程序要访问系统硬件资源需要通过系统调用去实现,应用程序调用系统调用时,用户进程将由用户态切换到核心态。
图1-4 Linux内核结构图
1.1.5 Linux用户管理
Linux系统是一个多用户系统,能做到不同的用户同时访问不同的文件。因此,一定要有文件权限控制机制。
Linux中每一个用户有一个唯一的用户ID。Linux下的用户分为三类:超级用户、系统用户和普通用户。
超级用户的用户名为root,它拥有一切权限。
系统用户是Linux系统正常工作所必需的内建用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,如bin、daemon、adm、lp等用户。
普通用户是为了让使用者能够使用Linux系统资源而建立的,大多数用户属于此类。
一个用户属于一个用户组,也可以属于多个用户组,Linux中每一个组有唯一的组ID。
在Linux操作系统中,超级用户(root)的权限是最高的,也被称为超级权限的拥有者。普通用户无法执行的操作,root用户都能完成,所以也被称为超级管理用户。在系统中,每个文件、目录和进程都归属于某一个用户,没有用户许可,其他普通用户是无法操作的,但对root除外。
环境变量指该用户环境中定义生效的变量。用户环境变量定义在.profile和.bash_profile文件中,支持递归定义。用户可以在用户环境下用env命令查看环境变量。
1.1.6 Linux文件管理
Linux设计哲学继承了UNIX血统,一切皆为文件。Linux文件包括如下类型:
█ d:目录文件,目录也是一种文件(directory)。
█ l:符号链接(指向另一个文件)(link)。
█ b:块设备文件(block device)。
█ c:字符设备文件(character device)。
█ p:命名管道文件(named pipe)。
█ s:套接字文件(socket)。
█ -:普通文件,或者更准确地说,不属于以上几种类型的文件。
Linux中的文件属性如图1-5所示。文件属性通常有10位,第1位为该文件类型,第2~4位为该文件用户的权限,第5~7位为该组用户的权限,第8~10位是其他用户权限。
首先,Linux中的文件按用户权限可分为三个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。每类用户级别对文件又可以定义三种不同的访问权限:可读(r)、可写(w)和可执行(x)。具体说明如下。
图1-5 Linux文件属性图
[1]用户权限的三个分类:
█ 文件属主(user):创建该文件的用户。
█ 同组用户(group):该文件用户组中的任何用户,同组用户又称为属组。
█ 其他用户(other):即不属于拥有该文件用户组的任何用户。
[2]文件访问权限的三个分类:
█ 读(r):可以显示该文件的内容。
█ 写(w):可以编辑或删除它。
█ 执行(x):如果该文件是一个Shell脚本或程序,则表示可以执行。
文件访问权限由三位二进制数表示,0表示无此权限,1表示有此权限。例如,r-x表示对该文件有读和执行权限,用二进制数表示为101。用ls -l命令可以查看每一个文件权限和类型。
举例说明,某文件的文件属性为-rwxrw-r--,表示该文件为普通文件,文件属主用户对该文件可读、可写、可执行,同组用户对该文件可读、可写,而其他用户只有对文件的可读权限。
1.2 Linux命令
Linux命令完成对Linux系统的管理,是在Linux从业中经常需要使用到的一项基本技能。Linux命令虽然有很多,但经常使用的却不多,而且在Linux中许多命令参数的含义是相同或相似的。下面只列出Linux常用命令和次常用命令。
1.2.1 Linux命令帮助
Linux命令帮助可通过help和man两个命令获得。利用help可以获得简洁的帮助信息,以及Linux命令的使用方法和参数。而man帮助命令可以获得Linux命令的详细说明。
1.help帮助命令
help命令使用格式为:
Linux命令 --help 例:cat --help mkdir --help
2.man帮助命令
man是Linux的详细帮助命令,为Linux学习者提供了详细的帮助说明。由于Linux命令和函数众多,Linux将帮助信息分为九大类,如表1-2所示。
表1-2 Linux命令分类
Linux帮助命令格式为:
man 类型 命令名称或函数名称
其中类型可省略,但名称重复时,类型不能省略。例如,write在Linux中既为命令名称,又为系统调用名称,此时需要接类型确定查找的是命令还是系统调用。
查找命令帮助方法为:
man pwd
等同于
man 1 pwd。
查找系统调用帮助方法为:
man 2 write。
1.2.2 Linux命令的符号及意义
Linux命令行下常见的符号及含义如下:
█ — :管道。例如,ps -ef—grep user1是将ps -ef的输出作为grep user1的输入。
█ 〉:覆盖输出。例如,cat aa >cc是将aa的内容输入到cc中,cc文件原有内容会全部丢失。
█ 〉:创建空文件。例如,〉dd是创建名称为dd的空文件。
█ < :输入。
█ >>:追加输出。
█ 0 :标准输入,相当于stdin,对应键盘。
█ 1 :标准输出,相当于stdout,对应屏幕。
█ 2 :标准错误,相当于stderr,对应屏幕。
█ & :后台命令。
█ “”:双引号表示除\、$、’和”外,由双引号引起来的字符为普通字符。
█ ‘' :单引号引起来的字符均作为普通字符。
█ `` :命令替换。反引号引起来的字符串作为Shell命令执行。
█ ~ :表示主目录。
█ []:表示括号中的内容为可选。
1.2.3 Linux命令
1.用户管理说明
新建、修改、删除用户和组可以在图形界面下操作,命令行命令只作了解即可。
2.Linux常用命令
Linux中常用的命令如表1-3所示,其中的“空”表示不带参数。
表1-3 Linux常用命令
续表
续表
续表
续表
续表
3.Linux次常用命令
下面的命令没有常用命令使用的概率高,但在有些特定场合也经常用到,所以把它们归类为Linux次常用命令。Linux次常用命令如表1-4所示。
表1-4 Linux次常用命令
续表
续表