当前位置: 首页 > news >正文

大数据讲课笔记1.4 进程管理

文章目录

  • 零、学习目标
  • 一、导入新课
  • 二、新课讲解
    • (一)进程概述
      • 1、基本概念
      • 2、三维度看待进程
      • 3、引入多道编程模型
        • (1)CPU利用率与进程数关系
        • (2)从三个视角看多进程
      • 4、进程的产生和消亡
        • (1)进程的产生
        • (2)进程的消亡
      • 5、进程三种状态
      • 6、进程ID(PID)
      • 7、终端设备类类型
        • (1)TTY(TeleTYpewriter)
        • (2)PTY(Pseudo-TTY)
    • (二)查看进程
      • 1、进程查看命令 - ps
        • (1)命令作用
        • (2)参数说明
        • (3)操作案例
      • 2、Linux进程状态
      • 3、观察进程变化命令 - top
        • (1)命令作用
        • (2)参数选项
        • (3)操作案例演示
      • 4、查看进程树命令 - pstree
        • (1)命令概述
        • (2)安装pstree
        • (3)参数说明
        • (4)操作案例演示
    • (三)杀死进程 - kill命令
      • 1、命令作用
      • 2、参数说明
      • 3、操作案例演示
    • (四)系统资源监控
      • 1、free命令
      • 2、uname命令
      • 3、uptime命令
      • 4、netstat命令
      • 5、vmstat命令
    • (五)任务管理
      • 1、前台进程
      • 2、后台进程
      • 3、前后台切换
      • 4、操作案例演示
  • 三、归纳总结
  • 四、上机操作

零、学习目标

  1. 查看进程与杀死进程
  2. 系统资源监控
  3. 任务管理

一、导入新课

  • 在Linux系统中,进程是执行中的程序实例。我们需要学会如何查看和管理这些进程,以便更好地了解系统的运行状态,并进行必要的调整和优化。此外,我们还需要学会如何监控系统的资源使用情况,以便及时发现并解决可能出现的问题。通过学习本节的内容,我们将能够熟练地使用各种命令行工具来查看和管理进程、监控系统资源以及进行任务管理,从而提高我们的工作效率和系统的稳定性。

二、新课讲解

在这里插入图片描述

  • 在Linux系统中,进程管理是一项非常重要的任务。通过掌握进程管理的相关知识和技能,我们可以更好地监控系统的运行状态,及时发现并解决问题,从而提高工作效率和系统的稳定性。
  • 本节我们将学习如何查看和管理进程、如何进行系统资源监控以及如何进行任务管理。首先,我们将介绍进程的基本概念和模型,包括进程的产生和消亡、三状态以及进程ID等。接下来,我们将学习如何使用各种命令行工具来查看进程、杀死进程以及监控系统资源。最后,我们将学习如何管理和控制前台和后台进程,并通过一些操作案例来加深理解和应用。
  • 总之,通过学习本节的内容,我们将能够更好地理解和掌握Linux系统中的进程管理,从而更加熟练地使用这些基本的命令行工具来完成各种常见的文件和目录操作任务。

(一)进程概述

  • 在计算机系统中,进程是操作系统进行资源分配和调度的基本单位。本节我们将从基本概念、三维度看待进程模型、进程的产生和消亡以及进程的三种状态等方面对进程进行概述。

1、基本概念

  • 进程 = 程序 + 执行。在计算机系统中,进程是指正在运行的程序实例。当一个程序被加载到内存中并开始执行时,就会创建一个新的进程。每个进程都有自己的地址空间,并且可以独立地进行计算和处理任务。
  • 简单来说,进程就是程序与CPU运算的结合体。当我们把一个程序从磁盘中加载到内存中后,CPU就开始对这个程序进行运算和处理。此时,我们可以说这个程序变成了一个进程。进程是操作系统进行资源分配和调度的基本单位,它能够独立地进行计算和处理任务,从而实现多道编程,提高CPU的利用率。

2、三维度看待进程

(1)内存维度:每个进程都独占一块地址空间,CPU处理进程实际上就是处理这个进程内存中的数据信息。这意味着,当一个进程正在执行时,它所占用的内存是不能被其他进程访问的。
(2)执行的逻辑维度:每一个进程都可以被CPU所处理和计算,此外,每一个进程也可以挂起,让其他进程得以处理。在同一个时刻,只能有一个进程被cpu所处理。这意味着,虽然操作系统可以同时运行多个进程,但是在微观上,这些进程是按照顺序依次被执行的。因此,在单核架构下,进程模型实际上是“串行”处理的。然而,在多核架构下,进程模型可以在宏观和微观上都是并行处理的。
(3)时间维度:每个进程执行一段时间之后,肯定都完成了一定的工作量。即进程是随时间向前推进的。这意味着,进程是在不断变化和发展中的,而不是静态不变的。

  • 进程让每个用户感觉自己独占CPU:在计算机系统中,进程是指正在运行的程序实例。当一个程序被加载到内存中并开始执行时,就会创建一个新的进程。每个进程都有自己的地址空间,并且可以独立地进行计算和处理任务。由于每个进程都独占一块地址空间,因此CPU在处理进程时实际上是处理这个进程内存中的数据信息。这意味着,即使多个用户同时使用同一台计算机,他们各自的进程也可以各自独立地进行计算和处理任务,从而让用户感觉像是自己独占了CPU一样。此外,在多道编程模型下,操作系统会将多个进程分配到不同的处理器核心上,并且在宏观上是并行处理的。因此,即使在同一时刻有多个进程在运行,用户仍然可以感觉到自己的进程得到了及时的响应和处理,就像是自己独占了CPU一样。
    在这里插入图片描述

3、引入多道编程模型

(1)CPU利用率与进程数关系
  • CPU利用率与进程数关系图
    在这里插入图片描述
  • 在计算机系统中,进程是指正在运行的程序实例。操作系统可以同时处理多个进程,这就是多道编程模型。而在最开始的操作系统中,采用的是单道编程模型,即一个程序处理完,再处理下一个程序。
  • 单道编程模型的缺点是响应时间慢和CPU利用率非常低。例如,假设一个进程中有20%需要做CPU运算,80%在做IO(发送IO事件时,CPU时闲置的),那么CPU利用率就是20%。而采用单道编程模型,CPU利用率只能达到1-0.8=20%。
  • 为了提高CPU的利用率,引入了多道编程模型。多道编程模型可以让操作系统同时处理多个进程,从而提高了CPU的利用率。例如,同时执行两个进程,CPU利用率可以达到1-0.8×0.8=36%;同时执行三个进程,CPU利用率可以达到1-0.8×0.8×0.8=48.8%。
  • 因此,引入进程模型的目的就是为了满足多道编程,而多道编程的目的就是为了提高CPU的利用率。随着进程数量的增加,CPU的利用率也会逐步提高。
(2)从三个视角看多进程
  • 物理视角、逻辑视角和时序视角
    在这里插入图片描述
  • 物理视角:从物理资源分配的角度看多进程。每个进程都有自己的独立内存空间,包括代码段、数据段和堆栈段等。操作系统为每个进程分配相应的物理资源,并通过虚拟内存管理技术实现进程之间的隔离。这样,即使多个进程同时运行,它们也不会相互干扰。
  • 逻辑视角:从逻辑执行顺序的角度看多进程。在多进程系统中,多个进程可以并发地执行,即在同一时间内有多个进程处于运行状态。然而,由于单个处理器只能执行一个指令流,所以实际上这些进程是交替执行的。操作系统通过调度算法决定哪个进程应该获得CPU并进行计算,从而实现了并发执行的效果。
  • 时序视角:从时间轴上看多进程。在一个时间段内,多个进程按照一定的顺序执行。这种顺序可能受到许多因素的影响,如优先级、等待I/O操作的时间、系统的负载情况等。操作系统会根据这些因素调整进程的执行顺序,以达到最优的性能和响应速度。
  • 总结来说,物理视角关注的是资源分配,逻辑视角关注的是执行顺序,而时序视角关注的是时间轴上的进程行为。理解这三个视角有助于我们更好地理解和控制多进程系统的行为。

4、进程的产生和消亡

(1)进程的产生
  • 操作系统产生服务进程:操作系统在启动时会创建一些必要的服务进程,如网络服务、文件系统服务等。
  • 父进程创建子进程:一个已经存在的进程可以创建一个新的进程,这个新进程被称为子进程。父进程和子进程共享相同的代码和数据空间,但拥有不同的堆栈和寄存器状态。
  • 用户请求创建一个进程:用户可以通过执行程序或命令来创建一个新的进程。例如,在Linux系统中,用户可以通过输入./program_name来运行一个程序,并创建一个新的进程。
(2)进程的消亡
  • 进程的所有运算都处理完之后,自行退出:当一个进程完成所有运算并返回结果后,它将自动退出。这是正常情况下进程结束的方式。
  • 进程在运行过程中产生错误或异常而强行退出:如果一个进程在运行过程中发生了错误或异常,操作系统可能会终止该进程。这通常会导致进程的资源被释放,以便其他进程使用。
  • 一个进程被其他进程所杀死而退出:在一个多任务系统中,一个进程可以被另一个进程杀死。这种情况下,被杀死的进程将立即停止执行,并释放其占用的资源。

5、进程三种状态

  • 进程有三种状态:执行态(Running)就绪态(Ready)阻塞态(Blocking)。在执行态,一个进程正在被CPU运行;在就绪态,一个进程已经准备好被执行,但还没有被分配到CPU上;在阻塞态,一个进程由于某些原因无法继续执行,需要等待某种条件满足才能恢复执行。
  • 对于挂起态,它可能是由于发生了某些阻塞操作,比如I/O事件。例如,当一个进程需要从磁盘读取数据时,它会进入阻塞态,直到数据被读取完毕。此外,一个进程也可能会主动挂起自己,以便让其他进程得以处理。例如,一个长时间运行的进程可能会主动挂起自己,以避免占用过多的CPU资源。最后,用户也可以主动将进程挂起,比如使用sleep操作来暂停进程的执行。
  • 需要注意的是,对于第一类和第三类挂起的进程,即使把CPU让给这个进程,CPU也无法处理它,因此我们将这样的进程称为阻塞态进程。而第二类进程,我们称之为就绪态进程,因为它们已经准备好被执行,只需要被分配到CPU上就可以开始执行。
  • 进程三状态转换图
    在这里插入图片描述
  • 创建态 → 就绪态:当一个进程被创建时,它会进入创建态,然后经过初始化后,如果所有必要的资源都可用,则变为就绪态。
  • 就绪态 → 运行态:当CPU从系统中的就绪队列选择一个进程进行执行时,该进程的状态将从就绪态变为运行态。
  • 运行态 → 就绪态:当一个正在运行的进程的时间片用完或者被高优先级的进程抢占时,它的状态将从运行态变为就绪态。
  • 运行态 → 阻塞态:当一个运行中的进程请求某种I/O操作或其他资源而不能立即得到满足时,它的状态将从运行态变为阻塞态。
  • 阻塞态 → 就绪态:当导致进程阻塞的事件发生并且相关资源变得可用时,进程的状态将从阻塞态变为就绪态。
  • 任何状态 → 终止态:当一个进程完成其工作或者遇到错误需要退出时,它可以从任何状态直接进入终止态。

6、进程ID(PID)

  • 在Linux中,进程启动时,操作系统会为其分配一个唯一的进程ID(PID)。这个PID用于标识系统中的每一个进程。通过执行命令ps -aux,可以查看系统中所有正在运行的进程及其详细信息。
  • 执行命令:ps -aux,查看进程详情
    在这里插入图片描述

7、终端设备类类型

  • TTY和PTY是计算机术语,用于描述终端设备的类型。
(1)TTY(TeleTYpewriter)
  • TTY最初是指一种电传打字机设备,它通过串行线路发送和接收数据。在现代计算机系统中,TTY通常用来指代任何类型的字符设备,如控制台、伪终端等。TTY设备可以直接与操作系统进行交互,通常用于登录、命令行界面和其他文本输入输出操作。
(2)PTY(Pseudo-TTY)
  • PTY也称为虚拟终端或伪终端,是一种软件模拟的TTY设备。PTY允许在一个进程之间创建一个“哑”终端,使得该进程可以像真正的TTY设备一样工作。这使得一个程序可以在没有实际物理TTY设备的情况下与另一个程序进行交互,例如远程登录到另一台机器上时使用的SSH协议就是一个例子。

  • 简单来说,TTY是硬件上的字符设备接口,而PTY是软件模拟的TTY设备。

(二)查看进程

  • 在Linux操作系统中,进程管理是系统管理员和开发者必须掌握的重要技能之一。通过有效的进程监控和管理,可以确保系统的稳定运行和资源的有效利用。本节将介绍一些常用的进程查看命令,包括pstoppstreeps命令用于查看某个时间点的程序运作情况,能够获取关于进程的详细信息,如PID、CPU使用率、内存使用量等。而top命令则可以实时地观察到进程的变化,显示了当前系统中各个进程的资源占用状况。此外,pstree命令则能以树状结构展示进程之间的关系,帮助我们更好地理解系统的运行状态。通过学习和掌握这些命令的使用,我们将能够更加有效地管理和优化我们的Linux系统。

1、进程查看命令 - ps

  • ps: process status
(1)命令作用
  • ps命令用于查看某个时间点的程序运作情况,能够获取关于进程的详细信息,如PID、CPU使用率、内存使用量等。
(2)参数说明
参数作用
a和输入终端关联的所有进程,通常与x一起使用,列出完整信息。
x后台进程,通常与a 这个参数一起使用,可列出较完整信息
u有效使用者相关的进程
(3)操作案例
  • 执行命令:ps la | head -5,能够观察所有系统的数据
    在这里插入图片描述
  • 执行命令:ps axjf | head -20,连同部分程序树状态
    在这里插入图片描述
  • 执行命令:ps l仅查看自己的bash相关的进程
    在这里插入图片描述
  • 执行命令:ps aux观察系统所有进程
    在这里插入图片描述
    在这里插入图片描述
属性含义
USER进程使用者
PID进程标识符
%CPU进程使用掉的CPU 资源百分比
%MEM进程所占用的物理内存百分比
VSZ进程使用掉的虚拟内存量(KBytes)
RSS进程占用的物理的内存量(KBytes)
TTY进程在哪个终端机上面运作,若与终端机无关则显示?, 另外, tty1-tty6 是本机上面的登入者程序,若为pts/0 等等的,则表示为由网络连接进主机的程序
STAT进程目前的状态,状态显示与ps -l 的S旗标相同(R/S/D/T/Z)
START进程被触发启动的时间
TIME进程实际使用CPU运作的时间
COMMAND进程的实际命令

2、Linux进程状态

状态值含义
R (TASK_RUNNING)指正在被CPU运行或者就绪的状态(在run_queue队列里的状态)
S (TASK_INTERRUPTIBLE)可中断的睡眠状态,处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态
D (TASK_UNINTERRUPTIBLE)不可中断的睡眠状态,该状态的进程只能用wake_up()函数唤醒。
T (TASK_STOPPED / TASK_TRACED)当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。
Z (TASK_DEAD -EXIT_ZOMBIE)僵尸进程:当进程已经终止运行,但是父进程还没有询问其状态的情况。不可被kill,即不响应任务信号,无法用SIGKILL杀死。

3、观察进程变化命令 - top

(1)命令作用
  • top命令则可以实时地观察到进程的变化,显示了当前系统中各个进程的资源占用状况。
(2)参数选项
选项含义
-d后面可以接秒数,就是整个程序画面更新的秒数;默认5秒。
-b以批次方式执行top,还有更多参数可以使用,通常会搭配数据流重导向来将批次的结果输出成为档案。
-n与-b 搭配,作用是需要进行几次top的输出结果。
-p指定某些个PID 来进行观察监测。
(3)操作案例演示
  • 执行命令:top -d 3,每隔三秒更新一次数据
    在这里插入图片描述
  • 执行命令:top -b -n 2,进行两次top的输出结果
    在这里插入图片描述
    在这里插入图片描述

4、查看进程树命令 - pstree

(1)命令概述
  • pstree命令是一个在Linux系统中用于查看进程树的实用工具。这个命令可以清晰地展示各个进程之间的关系,包括哪个进程是父进程,哪个是子进程。通过使用pstree命令,用户能够直观地了解到哪些进程是由哪些进程创建的。

  • 在Linux操作系统中,所有的进程构成了一棵进程树。这棵树的根就是PID(进程标识符)为1的init进程。每个进程都可以有多个子进程,而这些子进程又可以有自己的子进程,从而形成了一个树状结构。pstree命令就是用来显示这个进程树的。

  • 总的来说,pstree命令提供了一个简单且易于理解的方式来查看和理解Linux系统中的进程层次结构。

(2)安装pstree
  • 执行命令:pstree,报错找不到命令,说明CentOS7默认没有安装pstree
    在这里插入图片描述
  • 执行命令:yum -y install psmisc
    在这里插入图片描述
(3)参数说明
参数含义
-A各进程树之间的连接以 ASCII 码字符来连接
-U各进程树之间的连接以 utf8 字符来连接,某些终端可能会有错误
-p同时列出每个进程的 PID
-u同时列出每个进程的所属账号名称
(4)操作案例演示
  • 执行命令:pstree
    在这里插入图片描述
  • 执行命令:pstree -Aup
    在这里插入图片描述

(三)杀死进程 - kill命令

1、命令作用

  • kill命令在Linux和其他类Unix系统中用于发送一个信号给一个或多个进程。这个命令通常用来终止(杀死)一个运行中的程序,但也可以用来暂停、恢复或者更改进程的行为。

2、参数说明

  • kill命令可以接收一些选项,比如-s用于指定要发送的信号类型,-p用于列出指定进程的进程号,等等。如果不指定信号类型,默认会发送SIGTERM信号,这是请求进程优雅地关闭自己的一种方式。如果进程不响应,你可能需要发送更强制的信号,如SIGKILL(-9),这将立即结束进程,无法被忽略或捕获。
参数函数
-l这个是L的小写,列出目前kill 能够使用的信号(signal)有哪些? signal 向进程发送的信号,指示其进行不同操作。用man 7 signal 可知。
-15以正常的程序方式终止一个进程!!!
-9立刻强制终止一个进程!!!
-2代表由键盘输入[Ctrl + C] 同样的动作
-1对于sshd这样的守护进程,重新读取一次参数的配置文件(类似reload),如果进程为非守护进程,默认为终止进程

3、操作案例演示

  • 执行命令:pstree -aup | grep sshd
    在这里插入图片描述

  • 用参数-1来杀910进程,执行命令:kill -1 910
    在这里插入图片描述

  • 说明没有杀死sshd进程,又重新加载了

  • 用参数-9来杀死这个守护进程sshd,执行命令:kill -9 910
    在这里插入图片描述

  • 启动firewalld进程并查看其进程树
    在这里插入图片描述

  • 问题:父进程被kill掉,它的子进程是否就一起被kill掉?
    在这里插入图片描述

  • 结论:父进程被kill掉了,但是其子进程还依然存在。

  • 如果任务是杀死所有用户的firewalld进程,那么就需要多次发布kill命令,很烦的,怎么办呢?Linux提供了一个很好的命令:killall。

  • 利用killall命令杀死所有用户的firwalld进程
    在这里插入图片描述

(四)系统资源监控

  • 系统资源监控是计算机系统管理的重要组成部分。它可以帮助我们了解系统的运行状态,发现潜在的问题,并及时采取相应的措施进行优化和调整。本文将介绍几个常用的系统资源监控命令,包括观察内存使用情况的free命令,查阅系统与核心相关信息的uname命令,观察系统启动时间与工作负载的uptime命令,网络状态监控的netstat命令,以及侦测系统资源变化、CPU/内存/磁盘输入输出状态的vmstat命令。通过这些命令的使用,我们可以更好地掌握系统的运行状况,确保系统的稳定性和效率。对于运维人员来说,熟练掌握这些工具的使用方法是非常重要的。

1、free命令

  • free命令是Linux系统中的内存管理工具,用于显示系统的物理内存、交换空间和内核缓冲区的使用情况。通过指定选项,可以以字节、千字节、兆字节或吉字节为单位显示内存信息,并可以选择定时刷新输出结果。此外,free还可以提供总内存、已用内存、空闲内存、缓冲/缓存内存以及可用内存等详细信息,帮助用户了解系统内存使用状况。
选项说明
-b以字节为单位显示内存使用情况。
-k以千字节(KB)为单位显示内存使用情况。
-m以兆字节(MB)为单位显示内存使用情况。
-g以吉字节(GB)为单位显示内存使用情况。
-o不进行刷新操作。
-s delay每隔指定秒数刷新输出结果。
-t显示内存总和行。
-V显示版本信息。
  • 执行命令:free - mt,观察内存(memory)使用情况
    在这里插入图片描述
  • 总内存(total):系统的物理内存总量。
  • 已用内存(used):已被程序使用的物理内存。
  • 空闲内存(free):未被程序使用的物理内存。
  • 缓冲/缓存内存(buff/cache):系统用于缓冲和缓存数据的内存,这部分内存可以被其他程序快速复用。
  • 可用内存(available):可供当前运行的程序立即使用的内存总量,包括空闲内存和部分已用内存。

2、uname命令

  • uname命令是Linux系统中用于查看系统信息的实用工具,可以显示操作系统的名称、版本号、主机名、处理器架构等关键信息。通过使用不同的选项参数,用户可以获取到特定的系统属性,例如内核名称、操作系统发行版和机器类型等。uname命令对于系统管理员进行故障排查、软件安装或硬件兼容性检查等工作非常有用。
选项说明
-a 或 --all显示所有系统信息
-s 或 --kernel-name输出内核名称
-n 或 --nodename输出网络节点主机名
-r 或 --kernel-release输出内核发行版本号
-v 或 --kernel-version输出内核版本信息
-m 或 --machine输出机器类型(硬件平台)
-p 或 --processor输出处理器类型
-i 或 --hardware-platform输出硬件平台
-o 或 --operating-system输出操作系统名称
  • 执行命令:uname -a
    在这里插入图片描述
  • Linux:操作系统的名称
  • ied:主机名(网络节点名)
  • 3.10.0-1160.el7.x86_64:内核版本和发行版号。这个值包含了内核的主要版本号(3.10)、次要版本号(0)、补丁级别(1160)、发行版标识(el7)以及硬件架构(x86_64)。
  • #1 SMP Mon Oct 19 16:18:59 UTC 2020:编译内核时的时间戳、SMP(对称多处理)标志以及时区(UTC)。这个值表示了内核构建的具体日期和时间。
  • x86_64 x86_64 x86_64:机器类型和处理器架构。这里的三个x86_64分别代表系统类型、硬件平台和处理器类型。
  • 通过这些信息,用户可以了解系统的操作系统、内核版本、硬件平台等关键属性,这对于软件安装、硬件兼容性检查或故障排查等工作非常有用。

3、uptime命令

  • uptime命令是Linux系统中用于查看系统运行时间和负载信息的工具。它会显示当前时间、系统已经运行的时间、在线用户数量以及系统负载情况(过去1分钟、5分钟和15分钟内的平均负载)。通过使用uptime,用户可以了解系统的运行状况和性能表现,对于系统管理员进行监控和故障排查非常有用。
  • 执行命令:uptime
    在这里插入图片描述
  • 23:56:08:当前系统时间
  • up 16 min:系统已经运行了16分钟
  • 2 users:当前有2个用户在线
  • load average: 0.09, 0.16, 0.10:过去1分钟、5分钟和15分钟内的平均负载。这个值表示在特定时间内CPU正在处理的任务数(包括等待CPU时间的任务)。理想情况下,这些值应该接近或略低于系统中的处理器核心数量。
  • 通过这些信息,用户可以了解系统的运行时间和负载状况,有助于判断系统的性能表现和稳定性。

4、netstat命令

  • netstat命令是Linux系统中用于显示网络连接、路由表、接口统计等网络信息的工具。它可以帮助用户了解当前系统中的网络状态,包括活动的TCP和UDP连接、监听的端口以及网络接口的状态等。通过使用不同的选项参数,用户可以获取到特定的网络属性,例如查看所有活动连接(-a)、显示监听的TCP和UDP端口(-l)或查看路由表信息(-r)。netstat对于网络管理和故障排查非常有用。
  • CentOS7默认没有安装netstat,需要自行安装
  • 执行命令:yum -y install net-tools
    在这里插入图片描述
  • 执行命令:netstat -atp
    在这里插入图片描述
  • 执行命令:netstat -antp
    在这里插入图片描述
  • 执行命令:netstat -lntp
    在这里插入图片描述

5、vmstat命令

  • vmstat命令是Linux系统中用于显示虚拟内存统计信息的工具。它可以帮助用户了解系统的资源使用情况,包括CPU、内存、I/O和进程状态等。通过使用不同的选项参数,用户可以获取到特定的信息,例如查看每个核心的CPU使用率(-P ALL)、每两秒刷新输出结果(-S 2)或查看内存页面交换情况(-s)。vmstat对于系统管理和性能分析非常有用。
  • 执行命令:vmstat 1 4,统计目前主机CPU状态,每秒一次,共计四次
    在这里插入图片描述

(五)任务管理

  • 任务管理是操作系统中一项重要的功能,它涉及到对前台进程和后台进程的管理和控制。前台进程是指与用户直接交互的进程,它们在当前终端上运行,并且可以接收用户的输入;而后台进程是在后台运行的进程,不直接与用户交互,也不占用终端。通过学习如何操作前台和后台进程,我们可以更有效地利用系统资源,同时也能更好地进行多任务处理。本节将介绍如何切换前台和后台进程,查看后台任务,以及如何终止和恢复后台任务。这些知识对于Linux系统的使用者来说非常重要,尤其是那些需要在命令行环境中工作的开发者和技术人员。

1、前台进程

  • 前台进程是指与用户直接交互的进程,它在当前终端上运行,并且可以接收用户的输入。当一个前台进程正在运行时,该终端会被占用,不允许进行其他操作。例如,当你在一个终端窗口中打开文本编辑器或命令行程序时,它们就是前台进程。

2、后台进程

  • 后台进程是在后台运行的进程,不直接与用户交互,也不占用终端。这些进程可以在用户不再关注的情况下继续执行任务,同时用户可以在同一终端中启动新的进程或进行其他操作。通常情况下,后台进程不能接收来自终端的输入。例如,你可能在后台运行一个压缩文件的任务,而不需要实时监控它的进度。
  • 要将一个进程置于后台运行,通常需要在其后面加上"&"符号。例如,在Linux中,你可以使用command &来将命令command放在后台执行。

3、前后台切换

  • 切换前台和后台进程的方式取决于所使用的操作系统。在Unix-like系统中,可以通过按Ctrl+Z暂停前台进程,然后使用bg或fg命令将其发送到后台或恢复到前台。在某些系统中,也可以通过jobs命令查看当前会话中的所有后台作业。

4、操作案例演示

  • Ctrl+Z切换到后台,或者执行命令:tail -F anaconda-ks.cfg &
    在这里插入图片描述

  • 在当前bash执行多个任务
    在这里插入图片描述

  • 观察后台任务,用jobs命令(后台任务是一个任务栈,+表明该任务处于栈顶,发布fg命令,只有处于栈顶的后台任务才能切换成前台任务)
    在这里插入图片描述

  • 执行命令:jobs -r # r: Running
    在这里插入图片描述

  • 执行命令:jobs -s # s: Stopped
    在这里插入图片描述

  • 执行命令:jobs -l,可以显示后台任务进程号
    在这里插入图片描述

  • 三种任务状态:Running, Stopped, Killed

  • 执行命令:pstree -aup,查看进程树的sshd部分
    在这里插入图片描述

  • 利用fg命令可以将后台任务切换到前台,注意每次发布fg命令,只能将处于任务栈顶的后台任务(编号后是“+”的后台任务)切换到前台进行处理,然后栈顶的下一个任务就成为新的栈顶任务,其编号后的“-”就会变成“+”。

  • 发布一次fg命令
    在这里插入图片描述

  • 进入末行模式,输入q,不存盘退出。
    在这里插入图片描述

  • 执行命令:jobs -l
    在这里插入图片描述

  • 现在,执行fg命令之后,2768这个处于栈顶的后台任务会变成前台任务来处理,但是我们暂时不把该任务切换到前台。我们试着杀死该后台任务。

  • 停止作业:kill -15 2768
    在这里插入图片描述

  • 事实表明,删不掉vim作业,应该使用参数-9
    在这里插入图片描述

  • 再次执行命令:fg
    在这里插入图片描述

  • 小结:这个小结是对fg命令功能的简要总结。fg命令是Linux和Unix系统中的一个常用命令,用于将后台运行的任务切换到前台继续执行。在使用fg命令时,如果没有指定作业编号,默认会将当前栈顶的作业(即最后一个被放入后台的任务)调至前台。通过反复使用fg命令,用户可以按照自己的需要灵活地管理多个后台任务,方便地进行多任务处理。此外,结合其他相关的命令如bg(将作业放到后台运行)和jobs(查看后台作业列表),用户可以更好地控制和调度进程,提高工作效率。

三、归纳总结

  • 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。
  • 本节主要介绍了Linux系统中的进程管理,包括进程的基本概念、多道编程模型、进程的产生和消亡、进程状态、进程ID以及终端设备类型。同时,还介绍了如何使用ps、top和pstree命令查看系统中的进程信息,如何使用kill命令结束一个或多个进程,以及如何使用free、uname、uptime、netstat和vmstat命令监控系统的内存使用、网络连接、CPU负载和磁盘I/O等情况。此外,还介绍了前台进程和后台进程的概念,以及如何在前后台之间切换,如何在bash中执行多个任务。

四、上机操作

  • 形式:单独完成
  • 题目:完成进程管理
  • 要求:按照讲课笔记完成显示进程、杀死进程与作业前后台切换任务

相关文章:

大数据讲课笔记1.4 进程管理

文章目录 零、学习目标一、导入新课二、新课讲解(一)进程概述1、基本概念2、三维度看待进程3、引入多道编程模型(1)CPU利用率与进程数关系(2)从三个视角看多进程 4、进程的产生和消亡(1&#xf…...

技术点:实现大文件上传

大文件上传 实现思路 对于大文件上传考虑到上传时间太久、超出浏览器响应时间、提高上传效率、优化上传用户体验等问题进行了深入探讨,以下初略罗列各个知识点的实现思路: 大文件上传对文件本身进行了文件流内容 Blob 的分割,使用 Blob.pr…...

记一次挖矿病毒的溯源

ps:因为项目保密的原因部分的截图是自己在本地的环境复现。 1. 起因 客户打电话过来说,公司web服务异常卡顿。起初以为是web服务缓存过多导致,重启几次无果后觉得可能是受到了攻击。起初以为是ddos攻击,然后去查看web服务器管理…...

day05-报表技术-图形报表

1、图表报表简介 ​ 在大数据时代,人们需要对大量的数据进行分析,帮助用户或公司领导更直观的察觉差异,做出判断,减少时间成本,而在web项目中除了表格显示数据外,还可以通过图表来表现数据,这种…...

【Spring】@Transactional事务属性详解

文章目录 1、事务传播行为注意事务传播行为在不同类之间调用生效Propagation.REQUIRED(默认传播行为)Propagation.REQUIRES_NEWPropagation.NESTED 2、事务的隔离级别隔离级别设置 3、设置事务异常回滚3.1、默认情况3.2、设置回滚异常3.3、设置不回滚的异常 4、超时时间5、只读…...

通过css3的锚定滚动属性,实现分页加载时让滚动条不闪动

html标签 <div scroll"handleScroll" id"list-container"style"overflow-anchor:auto;overflow-y: auto;height: 80vh"><ul id"talks"v-for"(item,index) in msgList":key"item.roleiditem.timeitem.conten…...

使用Selenium与Scrapy处理动态加载网页内容的解决方法

博客正文&#xff08;包含详细注释&#xff09; 引言 在爬虫技术领域&#xff0c;处理动态加载的网页内容常常是一项挑战&#xff0c;尤其是对于那些通过用户滚动或其他交互动态加载更多内容的网站。本文将介绍如何结合使用Selenium和Scrapy来有效处理这类网页。 初探Seleni…...

Linux的权限(二)

目录 前言 文件类型和访问权限&#xff08;事物属性&#xff09; 补充知识 文件类型 文件操作权限 修改文件权限 chmod指令 文件权限值的表示方法 字符表示方法 8进制数值表示方法 权限有无带来的影响 修改文件角色 chown与chgrp指令 目录的rwx权限 补充知识 …...

网络服务IP属地发生变化的原因有哪些?

近期&#xff0c;许多用户发现自己的网络服务IP属地发生了变化。原本固定的IP地址不再是静态的&#xff0c;而是发生了变动。这一现象引起了广大用户的关注和疑惑&#xff0c;对网络服务的使用和信息安全产生了影响。为了解决用户的疑虑&#xff0c;我们对此现象进行了深入探究…...

OpenGL 着色器程序的保存和加载(二进制)

背景 为了提高OpenGL 着色器程序的编译和链接速度&#xff0c;我们可以将程序保存为二进制进行加载&#xff0c;可以大幅度提升加载效率。 方法 以下是加载和保存二进制程序的方法。 // 加载着色器程序的二进制文件到已创建的着色器程序中 bool loadPragram(const std::str…...

【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换

前言 【Unity 实用工具篇】| 游戏多语言解决方案&#xff0c;官方插件Localization 实现本地化及多种语言切换一、多语言本地化插件 Localization1.1 介绍1.2 效果展示1.3 使用说明 二、 插件导入并配置2.1 安装 Localization2.2 全局配置 三、多语言映射表3.1 创建多语言文本配…...

疯狂SQL转换系列- SQL for Tencent Cloud VectorDB

为了尽量保证使用者通过统一的SQL标准访问各类型数据库&#xff0c;我们这里开启了“疯狂SQL转换系列”。转换的语法效果不一定是最好的&#xff0c;更多是为用户提供一个统一的数据库交互体验。转换数据库目标的确认更多是内生的。基于我们对业务发展的需要。该向量库SQL转换的…...

Excel中的INDIRECT函数用法

当在 Excel 中使用 INDIRECT 函数时&#xff0c;它可以帮助我们通过引用字符串中的单元格地址来获取对应单元格的值。这个函数非常有用&#xff0c;特别是在需要动态地引用其他单元格的情况下。下面是 INDIRECT 函数的一些用法和示例&#xff1a; 基本用法&#xff1a; INDIREC…...

Spring-temp

IOC/DI实现步骤 1.配置元数据 2.实例化IOC 3.获取Bean 基于XML配置方式 管理组件 1.基于构造函数&#xff1a;有参、无参 2.基于静态工厂方法&#xff1a;有参、无参 依赖注入 1.构造函数 2.setter方法 Bean组件高级特性 1.作用域 2.生命周期 FactoryBean 基于注解 IOC Bean作…...

【C++干货铺】会搜索的二叉树(BSTree)

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 前言&#xff1a; 二叉搜索树 二叉搜索树概念 二叉搜索树操作 二叉搜索树的查找 二叉搜索树的插入 二叉搜索树元素的删除 ​二叉搜索树的实现 BSTree结点 …...

【Spring AOP】 动态代理

一.AOP常见的实现方式 1.Spring AOP 2.aspectJ 注意:spring使用的是aspectJ的注解,但实现是spring自身实现的. 二.AOP原理 Spirng AOP原理 , 基于动态代理实现的. 三.代理模式 作用就是提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类…...

NAT——网络地址转换

目录 一、概念 二、NAT的分类 1.静态NAT 1.1 静态NAT的配置 1.2 利用eNSP小实验加强对静态NAT的理解 2、动态NAT 三、NAPT——端口映射 四、Easy IP 使用一个公网地址可以让所有人都上公网 一、概念 随着Internet的发展和网络应用的增多&#xff0c;IPv4地址枯竭已经成为…...

Lambda 表达式的常见用法

文章目录 Lambda 表达式的常见用法使用Lambda表达式集合遍历使用Lambda表达式排序使用Lambda表达式过滤使用Lambda表达式映射使用Lambda表达式归约使用Lambda表达式分组使用Lambda表达式函数式接口的实现使用Lambda表达式线程的创建使用Lambda表达式进行Optional 操作使用Lambd…...

成本管理常用的ChatGPT通用提示词模板

成本分析&#xff1a;如何进行成本分析&#xff1f; 成本核算&#xff1a;如何进行成本核算&#xff1f; 成本控制&#xff1a;如何控制成本&#xff1f; 成本效益分析&#xff1a;如何进行成本效益分析&#xff1f; 成本预测&#xff1a;如何预测成本&#xff1f; 成本决…...

如何在PHP中处理日期和时间?

在 PHP 中&#xff0c;你可以使用内置的 DateTime 类和相关函数来处理日期和时间。以下是一些常见的日期和时间操作的示例&#xff1a; 使用 DateTime 类&#xff1a; 获取当前日期和时间&#xff1a; $currentDateTime new DateTime(); echo $currentDateTime->format(Y-…...

NO-IOT翻频,什么是翻频,电信为什么翻频

1.1 翻频迁移最终的目的就是减少网络的相互干扰&#xff0c;提供使用质量. 1.2 随着与日俱增的网络规模的扩大&#xff0c;网内干扰已成了影响网络的质量标准之一&#xff0c;为了保障电信上网体验&#xff0c;满足用户日益增长的网速需求,更好的服务客户&#xff0c;电信针对…...

云原生之深入解析OOM和CPU节流

一、前言 使用 Kubernetes 时&#xff0c;内存不足 (OOM) 错误和 CPU 节流是云应用程序中资源处理的主要难题&#xff0c;这是为什么呢&#xff1f;云应用程序中的 CPU 和内存要求变得越来越重要&#xff0c;因为它们与云成本直接相关。通过 limits 和 requests &#xff0c;可…...

数据结构与算法之递归: LeetCode 93. 复原 IP 地址 (Typescript版)

复原 IP 地址 https://leetcode.cn/problems/restore-ip-addresses/ 描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.…...

json模块与jsonpath详解

数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景&#xff0c;比如网站前台与后台之间的数据交互。 JSON和XML的比较可谓不…...

ubuntu20.04在noetic下编译orbslam2

ubuntu20.04在noetic下编译orbslam2 参考链接1&#xff1a;https://blog.csdn.net/qq_58869016/article/details/128660588 参考链接2&#xff1a;https://blog.csdn.net/dong123456789e/article/details/129693837 在noetic下的安装环境 1.库安装 sudo apt-get update sudo …...

64. 最小路径和

最小路径和 描述 : 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 题目 : LeetCode 64.最小路径和 64. 最小路径和 解析 : class So…...

惰性加载函数(js的问题)

在web开发中&#xff0c;因为浏览器之间的实现差异&#xff0c;一些嗅探工作总是不可避免。 var addEvent function( elem, type, handler ){if ( window.addEventListener ){return elem.addEventListener( type, handler, false );}if ( window.attachEvent ){return elem.…...

jmeter,读取CSV文件数据的循环控制

1、构造csv数据 保存文件时需要注意文件的编码格式 id,name,limit,status,address,start_time 100,小米100,1000,1,某某会展中心101,2023/8/20 14:20 101,小米101,1001,1,某某会展中心102,2023/8/21 14:20 2、在线程组下添加【CSV数据文件设置】元件 3、CSV文件数据的循环控…...

移植LVGL到像素屏,从此玩转像素屏0门槛

硬件方面 先上渲染图 实物图 配置 主控&#xff1a;esp32 micro32 plus主频&#xff1a;240MhzFlash&#xff1a;8MPSRAM&#xff1a;2M 软件方面 众所周知&#xff0c;LVGL是一个十分优秀的图形框架&#xff0c;小到几百kb的单片机&#xff0c;大到Linux都可以运行。既然它…...

stateflow 之图函数、simulink函数和matlab函数使用及案例分析

目录 前言 1. 图函数graph function 2.simulink function 3.matlab function 4.调用stateflow中的几种函数方式 前言 对于stateflow实际上可以做simulink和matlab的所有任务&#xff0c;可以有matlab的m语言&#xff0c;也可以有simulink的模块&#xff0c;关于几种函数在…...

绍兴做网站选哪家/建立网站的软件

shell字符串的截取的问题&#xff1a; 一、Linux shell 截取字符变量的前8位&#xff0c;有方法如下&#xff1a; 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr(,1,8)}’ 3.echo $a|cut -c1-8 4.expr $a : ‘\(.\\).*’ 5.echo $a|dd bs1 count8 2>/dev/null 二…...

做网站优化多少钱/如何优化培训方式

项目管理工具Maven安装与配置 1.Maven简介 Maven 是 Apache 软件基金会的一个开源的项目管理工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。 2.Maven中的概念 2.1Pom(Project Object Model)项目对象模型 Mave…...

成都开发公司/seo关键词优化

目录&#xff1a;唠嗑火速离职案例一火速离职案例二“老油条”的四种加班情况加班压力吗&#xff1f;做得好的优化师&#xff0c;都加班吗&#xff1f;入行前该考虑的三个点从“一头热”的开始做这个公众号到今天&#xff0c;我“满月”了。我记得4月份微博有一个热搜&#xff…...

深圳酒店设计公司/班级优化大师官方网站

接前贴&#xff1a;今年&#xff08;2021年&#xff09;7月4日至24日&#xff0c;我指导电子信息工程专业18级的12位同学进行小学期的课程实践。其中&#xff0c;王同学、万同学、高同学等3位同学完成了基于广东高云&#xff08;GOWIN Semiconductor&#xff09;FPGA的DDS实现。…...

苏州新区城乡建设网站/电商培训课程

在打算写这篇文章之前&#xff0c;我是一个分号党&#xff0c;在写这篇文章之后&#xff0c;可能会转为无分号党了。之前是写分号是编辑器语法较检所养成的强迫症&#xff0c;现在观念的转变&#xff0c;是因为看了不少大神的讨论后&#xff0c;觉得javascript语句后写分号除了…...

河北建设厅官方网站电话/制作网页多少钱

原帖&#xff1a;http://3dmgame.chnren.com/bbs/showtopic-604395.html 这个是标题&#xff0c;因为去年开始做的时候就采用了这张图做标题&#xff0c;所以最终版也没有更换&#xff0c;只是修饰了一下呵呵。游戏名称&#xff1a;萝莉的远征RPG1ST银色幻境版本信息&#xff1…...