七、进程管理命令

今天来了解一下关于进程的命令,奥里给!!!

一、关于进程

  1. 四个容易搞混的概念:
  • 源码文件:.c;.cpp等程序员在编译器上手敲的代码。
  • 程序:使用编译器将源码编程为计算机能够识别并执行的二进制文件(.exe,a.out),是存储在磁盘上的可执行的二进制文件;
  • 进程: 运行中的程序,将二进制可执行文件加载到内存上,然后由CPU执行其中的一些指令,整个执行的过程,将其称之为进程。
  • 结果:进程执行的过程中输出的数据。
  1. 程序如何加载到内存上成为一个进程:
    在Linux上,bash进程会调用fork函数创建一个新的进程,然后新的进程调用execve()系统调用执行指定的ELF文件,原先bash进程继续返回等待刚才启动的新进程结束。然后等待用户输入命令。详细了解可以去看《程序员自我修养》第六章。

  2. 操作系统如何表示以及管理进程:
    操作系统会将进程的相关属性记录下来,通过属性值的变化就能够描述进程正在执行或其他状态,操作系统为每一个进程分配一个PCB进程控制块是一个结构体变量,其中就包含PID进程编号(唯一标识符)等信息。

二、查看进程命令

任何命令都可以通过【man 命令】这个指令来查看命令的帮助手册,里面有详细用法,我们在此只介绍一些常用的进程命令。

(一)ps

ps命令可以单独使用,也可以在后面加上其他参数,或者和管道等命令结合。那么我们先看看它后面常跟的参数:

参数含义
a显示现行终端机下的所有进程,包括其他用户的进程;
u显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别);
x显示没有控制终端的进程。通常与 a 这个参数一起使用,可列出较完整信息;
-e显示所有进程;
-f完整输出显示进程之间的父子关系;
-l较长、较详细的将该 PID 的的信息列出;
-L显示线程信息
-o自定义显示的字段
| gerp sth对显示的信息进行过滤,只显示ba包含sth的

当然这些参数也可以组合,如ps aux等命令。

我们对部分命令进行演示,并了解产生结果的参数含义:

1. ps 单独使用:显示所有进程

参数显示说明:

在这里插入图片描述

  • PID是进程编号(唯一标识)
  • TTY终端号:终端名/第几个终端(从0开始编号)。
  • TIME:不是程序运行到现在的时间而是当前执行PS时进程执行的时间;
  • CMD:表示这个进程可以通过哪个命令调动执行。
  • bash:终端对应的进程,打开一个终端后有这个进程。所以会显示两个进程,一个是bash,一个是ps。

2. ps -e:显示所有进程,包括不同用户和终端上的,ps -a只显示当前终端的

在这里插入图片描述
从上图我们可以看到这两个命令的区别。

3. ps -f:显示进程的父子关系

在这里插入图片描述
可以看到ps -f这个进程是由bash终端创建的,bash是它的父进程。

4. ps -L :显示当前终端的线程

在这里插入图片描述
LWP参数表示线程唯一标识的id。

5. ps -Le:显示所有线程详细信息

在这里插入图片描述
6. ps -aux:参数组合,显示终端所有进程的详细信息
参数显示说明:

在这里插入图片描述

  • USER:表示用户
  • %CPU:CPU占用率
  • %MEM:内存占用率
  • VSZ:虚拟内存占用多少
  • RSS:实际内存多少
  • STAT:状态,Ss为睡眠,T挂起,R+运行
  • START:启用时间

7. ps -ef | grep gripure:只显示Gripure用户进程

在这里插入图片描述
这样我们通过管道就可以过滤掉不需要的信息,只显示我们感兴趣的,避免我们找进程。

(二)top

这个类似windows上的资源管理器。

  • top 命令执行后,数据会一直变化。

在这里插入图片描述
最上面是总体使用信息,包含tasks是任务数,很详细的分了运行,睡眠,停止,僵死;cpus是cpu使用情况;Mem是内存使用状况;swap为交换分区(内存不够用时使用);下面的参数PR是优先级,其他参数上面均有说明;

  • 输入f可以修改显示信息:根据A~S编号,我们可以输入编号,进行信息修改,输入1退出修改,回到top。

在这里插入图片描述

  • 输入q退出top。

(三)pstree

以树状图的样子显示进程,可以清晰看到进程关系。

在这里插入图片描述

(四)jobs

jobs查看后台执行的进程,通过jobs显示任务,前面为任务号,状态,命令,查看挂起的进程。

在这里插入图片描述

三、前台&&后台运行进程命令

  1. &: 如果执行一个命令或者一个程序时,在其后加一个&,则将执行的进程放到后台运行。
    如:

sleep 2,终端会等待2s,无法解析其他命令。2s过后会解析。

在这里插入图片描述
sleep 2 &,这时终端不需要等待它结束,可以解析其他命令。

在这里插入图片描述
2. fg +任务号//把任务放到前台执行,需要先通过jobs得到任务号。

在这里插入图片描述
3. bg +任务号//将挂起的进程放到后台执行,首先我们要用jobs或ps -u查看是否为挂起的进程,如果是我们再bg。

在这里插入图片描述

四、挂起后台进程命令

  1. kill -stop pid//挂起进程,将进程暂停

在这里插入图片描述
3. 查看挂起的进程:这时我们可以通过jobs显示任务,前面为任务号,状态,命令,查看挂起的进程
4. 或者通过ps u,查看详细信息,STAT为状态:Ss为睡眠,T挂起,R+运行

五、结束进程命令

  1. kill :结束一个进程 kill pid

在这里插入图片描述
2. kill无法结束挂起的进程,这时我们需要:kill -9 pid//强制结束进程

在这里插入图片描述
3. pkill 命令//关闭一组由这个命令创建的进程

在这里插入图片描述
加油哦!💪。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值