购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.1 命令的类型及运行原理

命令是CentOS非常重要的组成部分,本节将对系统中的命令进行介绍,主要包括命令的类型和命令执行的过程两方面。

1.常见的命令类型

简单来说,命令就是CentOS中一些按顺序组成的字符(串),这些字符(串)能够被系统识别并执行,它们是维护系统不可或缺的工具。

CentOS的命令可分为内置命令和外部命令两类,内置命令主要是一些可执行的二进制文本文件(通常不可阅读),外部命令主要是一些可执行的普通(可执行)文本文件(如安装某个软件时产生的文件)。

系统的内置命令和外部命令都是为了满足系统维护的需要。系统的内置命令主要存储在/user/bin/目录下,每个命令对应一个(可执行)文件,也就是说执行命令时实际上是执行它对应的文件。

无论是系统的内置命令还是外部命令,想辨别它们的类型,可以借助type命令来查看。通过type对某个命令进行查询,就可以获取被查询命令的相关信息,例如:


[root@centos-s8 ~]# type man
man is hashed (/usr/bin/man)
[root@centos-s8 ~]# type pwd
pwd is a shell builtin

对于这些命令,它们的使用权限会因用户的类型(级别)不同而不同,比如超级用户root能够执行系统中的任何命令,但普通用户只能执行部分命令,也就是说系统中命令的使用权并不是对所有用户开放的。因此,在执行调整系统参数等操作时就需要来自root的权限,但作为普通用户,只能执行一些对系统不会造成危害的命令。

2.命令执行的过程

系统中所执行的命令都是通过Shell完成转换后传送到内核中执行的,因此命令从输入到正式执行,Shell负责进行一系列的操作。

对于每个被执行的命令,系统都会从所执行的命令中获取相关的参数来创建对应的子进程,随命令执行而产生的子进程具体执行的操作由命令行的参数决定,并在执行后返回结果,但这个结果可能不是想要的。

命令的基本格式如下:


command [options] [arguments]

命令的执行过程基本按如下步骤进行:

1)读取用户从输入设备输入的命令。

2)将命令转为文件名,并将其他参数改造为系统调用execve()内部处理所要求的形式。

3)终端进程调用fork()建立新的子进程。

4)终端进程用系统调用wait()来等待子进程执行完成(如果是后台命令就不等待)。

5)如果命令末尾没有“&”(后台命令符号),则终端进程不是执行系统调用wait()等待,而是立即执行并返回提示符,等待继续执行其他的命令。如果命令末尾有“&”,则终端进程要一直等待,直到命令执行完成后才返回终端提示符。

6)当子进程完成处理后,向父进程(终端进程)报告,此时终端进程“醒”来,并在做必要的判断等相关工作后,终止子进程并返回提示符,让用户输入新的命令。 9gpBBKkSUtBOwQl8R/X0d9XUebylI/Edzv+GY7Yib05l4t7HgZrGXfW0VGKQnABw

点击中间区域
呼出菜单
上一章
目录
下一章
×