10-1 进程如何工作

2020-08-05 12:25:26 浏览数 (1)

本章将介绍以下命令:

  • ps : 显示当前所有进程的运行情况。
  • top : 实时显示当前所有任务的资源占用情况。
  • jobs : 列出所有活动作业的状态信息。
  • bg : 设置在后台中运行作业。
  • fg : 设置在前台中运行作业。
  • kill : 发送信号给某个进程。
  • killall : 杀死指定名字的进程。
  • shutdown : 关机或重启系统。

一、进程如何工作

父进程创建子进程

一个程序的运行可以触发其它程序的运行。

进程的有序进行

内核会保存每个进程的信息以便确保任务有序进行。 比如,每个进程将被分配一个称为进程ID(PID)的号码。进程ID是按递增的顺序来分配的,init 进程的PID始终为1。

1.使用 ps 命令查看进程信息

(0)ps命令简介
(1)语法格式

ps [选项]

代码语言:javascript复制
'''
 功能: 用来查看进程信息。

 参数:

 选项:

 返回值:
'''
① 示例
Ⅰ.只输入 ps 命令
代码语言:javascript复制
 ps
ps命令.pngps命令.png

输出结果列出了两个进程:进程 3260 和 进程 4001,分别对应 bash 命令和 ps 命令。 由此可见,在默认情况下,ps 命令输出的内容并不多,只是输出 和当前终端会话相关的进程信息

为了获得更多的信息,需要添加一些选项。

Ⅱ.添加 x 选项

添加 x 选项(注意:这里没有前置连字符)将告诉 ps 命令显示所有的进程,而不需要关注它们是由哪个终端控制的,使用这个选项可以查看所有进程的列表信息

代码语言:javascript复制
 ps x
ps命令x选项.pngps命令x选项.png

由于系统中运行着大量的进程,所以 ps 命令将会输出一个长列表。 把 ps 命令的输出作为less 命令的输入的方法通常很管用,它可更方便地查看显示结果。有些选项组合也会产生很长的输出行,因此最大化终端仿真窗口很有用。

Ⅲ.选项组合 aux

这是一个常用的选项组合,注意不带前置连字符。 该选项组合将会显示属于每个用户的进程信息

代码语言:javascript复制
ps aux
ps命令aux选项组合.pngps命令aux选项组合.png
Ⅳ.为何不带前置连字符?

不带前置连字符将使得命令以“BSD模式”运行。 ps命令的 Linux 版本可以模拟多种 UNIX 版本中 ps 程序的运行方式,使用这些选项将显示更多列的信息。

(2)ps 命令输出的字段信息
① PID(进程ID)

进程ID。

② TTY

代表了进程的控制终端(controlling terminal)。 是 teletype (电传打字机)的缩写。 ? 表示没有控制终端

③ STAT(进程状态)

STAT 是 state 的缩写。 显示的是进程的当前状态

状态

含义

R

运行状态。进程正在运行或者准备运行。

S

睡眠状态。进程不在运行,而是在等待某事件发生,如键盘输入或者收到网络报文。

D

不可中断的睡眠状态。进程在等待 I/O 操作,如硬盘驱动。

T

暂停状态。进程被指示暂停(后续还可继续运行)。

Z

无效或“僵尸”进程。子进程被终止,但是还没有被其父进程彻底释放掉。

<

高优先级进程。进程可以被赋予更多的重要性,分配更多的CPU时间。进程的这一特性称为优先级。高优先级的进程被说成较不友好,是因为它将消耗更多的CPU时间,这样留给其它进程的CPU时间就会减少。

N

低优先级进程。低优先级进程(友好进程)只有在其它更高优先级的进程使用完处理器后才能够获得使用处理器的时间。

这些进程状态后面可以带其它地字符来表示不同的特殊进程特性。

④ TIME

表示进程消耗的CPU时间总和(即进程的运行时间)。 回到示例Ⅰ中,可以看到 bash进程和 ps进程,没有使得计算机变得忙碌。

⑤ COMMAND

执行的命令。

(3)BSD模式下ps命令输出的列字段

标题

含义

USER

用户ID。表示该进程的所有者。

%CPU

CPU 使用百分比。

%MEM

内存使用百分比。

VSZ

虚拟耗用内存大小。

RSS

实际使用的内存大小。(即进程使用的物理内存RAM大小,以KB为单位。)

START

进程开启的时间。若数值超过 24 个小时,那么将使用日期来显示。

2.使用 top 命令动态查看进程信息

ps 命令可以显示有关机器运行情况的很多信息,但是它提供的只是在 ps 命令被执行时刻机器状态的一个快照。 要想查看机器运行情况的动态视图,可以使用 top 命令

(0)top命令简介

top 命令将按照进程活动的顺序,以列表的形式持续更新显示系统进程的当前信息默认每 3 秒更新一次)。 它主要用于查看系统最高(top)进程的运行情况,其名称也源自于此。 top 命令的显示内容包含2个部分:顶部显示系统总体状态信息下面显示的是一张按CPU活动时间排序的进程情况表

(1)语法格式

top

代码语言:javascript复制
'''
 功能: 用来查看进程信息。

 参数: 

 选项:

 返回值: 包含2部分: ①顶部显示**系统总体状态信息**。
                     ②下面显示的是一张按CPU活动时间排序的进程情况表。
'''
top命令1.pngtop命令1.png

下图,是我过了几秒钟的截图,可以看到是有区别的,这是因为 top 命令是实时更新。

top命令2.pngtop命令2.png
① 顶部信息中的字段

字段

含义

1

top

程序名。

1

17:01:15

当前时间。

1

up 7:34

正常运行时间(uptime)。从机器最后一次启动开始计算的时间总数。在上例中,系统已经运行了大约7.5小时。

1

1 user

有 1 个用户已登录。

1

load average:

负载均值:指的是等待运行的进程数;即可共享CPU资源的处于可运行状态的进程数。显示的 3 个值分别对应不同的时间段:第1个对应的是前60秒的均值;第 2 个对应的是前 5 分钟的均值;第 3 个对应的是前 15 分钟的均值。该值小于 1.0 表示该机器并不忙。

2

任务(tasks)

统计进程数及各个进程的状态信息。

3

2.7%us

2.7%的CPU时间被用户进程占用(此指处于内核外的进程)。

3

0.7%sy

0.7%的CPU时间被系统进程(即内核进程)占用。

3

0.0%ni

0.0%的CPU时间被友好进程(即低优先级进程)占用。

3

96.7%id

96.7%的CPU时间是空闲的。

3

0.0%wa

0.0%的CPU时间用来等待 I/O 操作。

4

Mem:

显示物理RAM(随机存取内存)的使用情况。

5

Swap:

显示交换空间(虚拟内存)的使用情况。

(2)可接受键盘指令

top 命令可以接受许多键盘指令,其中最常用的有 2 个:

  • 一个是h:输入后将显示程序的帮助页面。
  • 另一个是 q:用来退出 top 命令(不输入 q 的话,不会返回shell提示符)。

0 人点赞