0


Linux 进程知识总结

在这里插入图片描述

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Linux操作系统专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Linux 进程知识总结

文章目录

在这里插入图片描述

进程基础

Linux 系统中基本所有的操作都以进程的形式进行,浏览网页、编辑文档、观看视频等,在使用命令进行操作的过程中,Linux内核都以进程的形式对其进行管理。

Linux 是一个多用户多任务操作系统→Linux 是一个多进程操作系统。

  每个程序启动时都会创建一个或多个进程,与其他程序创建的进程共同运行在Linux的内核空间中。每个进程是一个独立的任务,进程依据操作系统内核制定的规则,轮换着被CPU执行,一般CPU对于进程的执行采用时间片轮换的方法。每个进程运行在自己的空间内,只有通过操作系统内核才能与其进行交互。

  计算机中的多个程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程;而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其他执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,人们引入“进程”概念。

  进程,是计算机中已运行程序的实体。进程曾经是分时系统的基本运作单位。在面向进程设计的系统(如早期的UNIX、Linux2.4及更早的版本)中,进程是程序的基本执行实体;在面向线程设计的系统(如当代多数操作系统、Linux2.6及更新的版本)中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。 若干进程有可能与同一个程序相关联,且每个进程皆可以同步(循序)或异步(平行)的方式独立运行。现代计算机系统可以同一段时间内以进程的形式将多个程序加载到存储器中,并可时间共享(或称时分复用),以在一个处理器上表现出同时(平行性)运行的感觉。同样的,使用多线程技术(多线程即每一个线程都代表一个进程内的一个独立执行上下文)的操作系统或计算机架构,同样程序的平行线程,可在多CPU主机或网络上真正同时运行(在不同的CPU上)。

  在进程的生存期内,将使用许多系统资源。进程使用系统CPU来运行自己的指令,并使用系统的物理内存保存自己的数据。进程打开和使用文件系统的文件,并直接或者间接地使用系统地物理设备。

  Linux必须跟踪进程本身及其所拥有地资源,来保证能够公平地管理所有进程。Linux系统与其他操作系统不同,进程的创建和命令执行是两个不同的概念。虽然一般创建一个新的进程是为了运行一个指定的指令,但是不运行新命令也可以创建进程,不创建新进程也可以运行命令。

进程定义

狭义定义:进程就是一段程序的执行过程。

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

  使用者下达运行程序的命令后,就会产生进程。同一程序可产生多个进程(一对多关系),以允许同时有多位使用者运行同一程序,却不会相冲突。进程需要一些资源才能完成工作,如CPU使用时间、存储器、文件以及I/O设备,且为依序逐一进行,也就是CPU核心在任何时间内仅能运行一项进程。

进程分类

  进程一般分为交互进程、批处理进程实时进程三类。

守护进程总是处于活跃状态的,一般是后台运行;守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在Fedora或Red Hat中,可以定义httpd服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd就是服务器的守护程序,当把它的运行级别设置为3和5,系统启动时,它会跟着启动。

  (1)交互式进程:一般是由Shell启动的进程。这些进程经常和用户发生交互,所以花费一些时间等待用户的操作。当有输入时,进程必须很快地激活。通常,要求延时在50~150ms。典型的交互式进程有:控制台命令Shell、文本编辑器、图形应用程序。

  (2)批处理进程(Batch Process):不需要用户交互,一般在后台运行,所以不需要非常快的反应,他们经常被调度期限制。典型的批处理进程:编译器、数据库搜索引擎和科学计算。

  (3)实时进程:对调度有非常严格的要求,这种类型的进程不能被低优先级进程阻止,并且在很短时间内做出反应。典型的实时进程:音视频应用程序、机器人控制等。
  批处理进程可能与I/O或者CPU有关,但是实时进程完全通过Linux的调度算法识别。其实交互式进程和批处理进程很难区别。

进程状态

  Linux是一个多用户、多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。进程状态划分也有不同的分法,但一般分为5个状态,在进程管理过程中始终会处于某种状态,进程的当前状态决定了进程如何和何时获得CPU的访问权限。
  (1) 运行状态(正在运行或在运行队列中等待);
  (2) 中断状态(休眠中或受阻或在等待某个条件的形成或接收到信号);
  (3) 不可中断状态(收到信号不唤醒和不可运行,进程必须等待直到有中断发生);
  (4) 僵死状态(进程已终止,进程描述存在,直到父进程调用wait4()系统,调用后释放);
  (5) 停止状态(进程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信号后停止运行)。

  ps工具标识进程的5种状态码:
  (1) D不可中断uninterruptible sleep(usually IO);
  (2) R运行runnable(on run queue);
  (3) S中断sleeping;
  (4) T停止traced or stopped;
  (5) Z僵死a defunct(“zombie”)process。

  Linux除了使用内核本身管理这些进程调度以外,还将这些信息通过工具程序传递给用户,并通过工具程序接受用户对某个进程的处理。

进程属性

  • 进程的属性也就是描述进程的信息,包含以下几个部分。  进程ID(PID),是唯一的数值,用来区分进程;  父进程和父进程的ID(PPID);  启动进程的用户ID(UID)和所归属的组(GID);  进程状态,状态分为运行R、休眠S、僵尸Z;  进程执行的优先级;  进程所连接的终端名;  进程资源占用,比如占用资源大小(内存、CPU占用量)。

进程查看

  进程查看命令包括内存状态查看命令free、进程查看命令ps、top以及可以系统内进程查看命令pstree。

1、 查看内存状态

名称:free
使用权限:所有使用者
使用方式:free [-bkmgto] [-s时间]
说明:显示内存状态信息。free命令显示内存使用情况,包括物理内存、虚拟交换文件内存、共享内存区段,以及系统核心使用的缓冲区。
参数说明-bfree命令默认单位是kb;-b采用Byte为单位;-k采用KB为单位;-m采用MB为单位;-g采用GB为单位。-t显示内存的总和行。-o不显示缓存区调节行。-s间隔秒数,持续观察内存使用情况。
显示内存使用情况

在这里插入图片描述

说明:
total: 表示物理内存总量(total=used+free)。
used: 表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用。
free: 未被分配的内存。
shared: 共享内存,一般系统不会用到。
buffers: 系统分配但未被使用的buffers数量。
cached: 系统分配但未被使用的cache数量。

以MB显示内存使用情况

在这里插入图片描述

每隔5s查看内存状态一次

在这里插入图片描述

2、 查看进程运行情况

名称:ps
使用权限:所有使用者
使用方式1:ps aux
使用方式2:ps –lA
使用方式3:ps axjf
说明:显示进程信息
参数说明-A所有的process均显示出来,与-e具有同样的效用。-a不与terminal有关的所有process。-u有效使用者(Effective User)相关的process。x通常与a这个参数一起使用,可列出较完整信息。
输出格式规划

  l:较长、较详细地将该PID的信息列出。
  j:工作的格式(Jobs Format)。
  -f:做一个更为完整的输出。

查看属于自己的进程的基本情况。

在这里插入图片描述

  说明:PID代表进程ID;TTY代表登录者的终端位置;TIME代表使用掉的CPU时间;CMD代表造成程序触发的进程。

将目前属于你自己这次登入的PID相关信息列出来。

在这里插入图片描述
参数说明F代表这个进程的标志,说明这个进程的权限,4代表使用者为root。S代表这个进程的状态(STAT)。UID进程被该UID所拥有。PID进程的ID,也就是进程的唯一标识。PPID此进程的父进程的PID。CCPU使用的资源的百分比。PRIPriority(优先执行序)的缩写,代表CPU所执行的优先级,数值越小离执行的时间越短。NINice值,进程优先级。ADDRADDR是指Kernel Function,即该程序在内存的哪个部分。SZ进程占用的内存大小。WCHAN目前这个程序是否正在运行当中,若为-表示正在运行。TTY登录者的终端机位置。TIME该进程占用的CPU时间。CMD该进程是由哪个命令触发的。
列出目前所有的正在内存当中的程序。

在这里插入图片描述
参数说明USER这个进程属于哪个用户。PID该进程的唯一ID。%CPU进程所使占用的CPU百分比。%MEM进程所占用的物理内存百分比。VSZ进程占用的虚拟内存量单位为Kbytes。RSS进程占用的固定的内存量单位为Kbytes.TTY该进程是在哪个终端机上面运行,若与终端机无关,则显示“?”;如果显示tty1~tty6代表本机上面的登录者程序;若为pts/0等,则表示为由网络连接进主机的程序。STAT该程序目前的状态。START该进程被触发启动的时间。TIME该进程实际使用CPU运行的时间。COMMAND该进程的实际命令。
和grep结合,提取指定程序httpd的进程。

在这里插入图片描述

列出类似程序树的程序显示。

在这里插入图片描述

3、 以树状形式查看进程

名称:pstree
使用权限:所有使用者
使用方式:ps [-ahlup]
说明:以树状形式显示进程的情况。
参数说明-a显示每个程序完整的命令。-A各进程之间以ASCII字符连接。-h显示树状图的时候标明现在执行的程序。-u同时列出每个进程的所有用户。-p显示进程PID。
使用默认命令查看进程树。

在这里插入图片描述
在这里插入图片描述

  说明:此处只截取了进程树的一部分。

列出目前系统上的ASCII连接的各种进程树。

在这里插入图片描述
在这里插入图片描述

  说明:和默认参数只是连接形式上有所差别而已。这里也只截取了一部分。

显示当前所有进程的进程ID。

在这里插入图片描述
在这里插入图片描述

  说明:这里也只截取了一部分。

4、 动态查看进程

名称:top
使用权限:所有使用者
使用方式:top [-d秒数] [-n执行次数] [-bnpc]
说明:ps是查看某个时间点的进程情况,top可以持续检测进程的运行状态。
参数说明-d后面接秒数,是指整个程序画面多少秒更新一次。-b以批次的方式执行top。-n后接执行次数,指定监控信息的更新次数。-p后接PID监控指定的进程。-c显示每个进程完成的命令。
每2s执行一次top。

在这里插入图片描述
在这里插入图片描述

  使用图形化界面监管进程。

  使用 gnome-system-monitor 命令或者选择面板上“应用程序”菜单中的“系统工具”→“系统监视器”命令,通过图形化界面的方式监视系统。

在这里插入图片描述

5、 进程前后台切换

  默认情况下,一个命令执行完之后,此指令将独占Shell,如下图所示,并拒绝其他输入,称为前台进程;反之,则称为后台进程。对每一个终端,都允许多个后台进程。对前台、后台进程的控制与调度,被称为任务控制。
  command &:将一个进程直接丢入后台执行;
  Ctrl+Z组合键:将一个正在运行的前台进程暂时停止,并丢入后台。

  打开Firefox并将其进程放到后台。

(1) 使用firefox命令直接打开火狐。

在这里插入图片描述
在这里插入图片描述

(2) 按Ctrl+C组合键结束进程。
(3) 使用firefox &命令直接打开火狐。

在这里插入图片描述
在这里插入图片描述

(4) 使用Ctrl+Z组合键,将一个正在运行的前台进程暂时停止,并丢入后台。

在这里插入图片描述
在这里插入图片描述

  说明:可以看到进程已停止。

终止进程

  终止一个进程或终止一个正在运行的程序,一般是通过kill命令进行的。比如一个程序已经死掉,但又不能退出,就可以考虑应用这些工具。

kill命令工作原理:

  向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。

  比如在top命令中,看到系统运行许多进程,有时就需要使用kill命令终止某些进程来提高系统资源。系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其他虚拟控制台工作并关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。

以树状形式查看进程

名称:kill
使用权限:所有使用者
使用方式:kill PID

说明:终止编号为PID的进程,这个命令一般是要和ps命令一起配合使用的,因为要使用kill命令就必须知道进程的PID。

查看系统内的进程,并终止PID为20532的进程。
在这里插入图片描述

  说明:终止进程,kill后面接上进程号。

查找并终止火狐进程。

在这里插入图片描述

  说明1:ps –ef等同于ps aux,ps –ef | grep firefox用于查找与Firefox相关的进程;这里能查找到多个,是因为开启了多个Firefox上网。

  说明2:kill终止的必须是一个已经存在的PID的号。

查看系统内的httpd服务,并终止这个进程。

在这里插入图片描述

  说明1:上述途中第二列是进程的PID号,21013是httpd服务器的父进程,21016~21023的进程都是21013的子进程;杀掉父进程,其下的子进程也会跟着死掉。只终止子进程,服务不会停止。

  说明2:service httpd status用来查看服务的状态。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

标签: linux java 运维

本文转载自: https://blog.csdn.net/hh867308122/article/details/128879167
版权归原作者 Java Fans 所有, 如有侵权,请联系我们删除。

“Linux 进程知识总结”的评论:

还没有评论