计算机操作系统基础五Linux的进程管理

7次阅读

共计 1820 个字符,预计需要花费 5 分钟才能阅读完成。

引言

本文为第五篇,Linux 的进程管理,本文主要介绍 Linux 进程的相关概念、操作 Linux 进程的相关命令等。

一、Linux 进程的相关概念

1、进程的类型

(1)前台进程

前台进程就是具有终端,可以和用户进行交互的进程

下边写了一个死循环计算圆周率的程序

然后将程序跑起来,虽然程序没有输入任何东西,它却占了整个终端 shell,此时输入任何命令都是没有用的,这个进程就是一个 前台进程

现在改一下刚才的代码,让它不断的打印 hello world

此时运行代码,它会死循环的输出 hello world,这个就是一个有输出的前台进程,这个有输出的前台进程输出的内容 占满了整个终端 shell,即使输入任何的命令都是不管用的,因为这个前台进程占用了终端 shell

(2)后台进程

  • 与前台进程相对,没有占用终端的就是后台进程
  • 后台进程基本上 不和用户进行交互 ,优先级比前台进程(因为前台进程要与用户进行交互,因此必须在响应速度或者在别的地方要跟得上,使得与用户交互时更加顺畅)
  • 后台进程我们一般是使用 & 符号结束,这样就可以启动一个后台进程

举例:
现在将前边的代码改一下,让它每 5 秒输出一个 hello world,然后以后台进程的方式让它跑起来

此时可以看见,我们以后台进程的方式将它跑起来的时候,它会输出一个进程 ID,而且,这个后台进程是不占用 shell 的,虽然它的内容会打印到终端上,但是我们还是可以正常的使用命令的,同时,我们如果使用 Ctrl+C,也是不会将这个后台进程停止的。

(3)守护进程

  • 守护进程 (daemon) 是特殊的后台进程
  • 很多守护进程在系统引导的时候启动,一直运行,直到系统关闭
  • Linux 有很多典型的守护进程

比如 crond,这个就是 Linux 中定时任务守护进程、httpd 是 Linux 中 http 服务的守护进程、sshd 是平时我们使用 ssh 登录时候的守护进程、mysqld 是数据库的守护进程(进程名字以 d 结尾的一般都是守护进程)

2、进程的标记

(1)进程 ID

  • 进程的 ID 是进程的 唯一标记,每个进程拥有不同的 ID
  • 进程 ID 表现为一个 非负的整数,最大值由操作系统限定
  • 我们使用 top 命令就可以查看 Linux 中的所有进程,最左侧的 PID 列就是进程的 ID

操作系统提供了 fork() 函数 来创建进程,所以就可能出现下边这种情况

上边就是进程的层级关系,这中层级关系称之为 父子进程关系 。进程 A 通过 fork 函数创建了进程 B,因此进程 A 是进程 B 的父进程。进程的父子关系,可以通过pstree 命令查看

介绍几个特殊的进程

ID 为 0 的进程为 idle 进程,是系统创建的第一个进程

ID 为 1 的进程为 init 进程,是 0 号进程的 子进程,负责完成系统的初始化(init 进程是所有用户进程的祖先进程)

(2)进程的状态标记

在 Linux 中,可以使用 man ps 命令来了解各种进程状态的标记, 这里只挑几个比较重要的进行介绍

现在将刚才上边写的死循环计算圆周率的代码以后台进程的方式跑起来,并且将一个死循 sleep 的代码也以后台进程的方式跑起来,然后看一下这两个进程的状态标记

此时两个进程分别处于 运行状态 睡眠状态

二、操作 Linux 进程的相关命令

ps命令(主要是用来查看进程)

top命令(主要是查看 Linux 进程的使用内存或者是一些别的状态)

kill命令(主要是用来给进程发送信号的)

1、ps 命令

(1)列出当前进程:ps

(2)查看进程详细信息:ps -aux

(3)查看指定用户进程:ps -u username
查看所有 root 用户的进程:ps -u root

(4)查看指定进程:ps -aux|grep 指定进程信息

(5)查看进程树(查看进程的父子关系):ps -ef –forest

(6)将进程按使用 cpu 的频率来进行排序:ps -aux –sort=pcpu

(7)将进程按使用内存的大小来进行排序:ps -aux –sort=pmem

2、top 命令
(1) 查看所有进程的状态:top

(PR 是进程的优先级、VIRT 是进程的虚拟内存、TIME+ 是进程运行的时间、COMMAND 是进程的命令)

3、kill 命令

(1)给指定进程发信号:kill - 信号 进程 ID

给指定进程 ID 发送 9 这个信号:kill -9 23

9 这个信号表示无条件的终止这个进程,更多的信号,可以使用 kill -l 进程查看

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践

站在了巨人的肩膀上学习,向前辈致敬

参考:https://coding.imooc.com/clas…

正文完
 0