在说到进程管理命令时,我们都应该对进程有一个认知。那什么是进程呢?
一、进程的定义
1、定义
我们都知道进程管理、内存管理和文件管理是操作系统的三大核心。进程顾名思义就是进展中的程序或者说是执行中的程序。就是说一个进程加载到内存中就会变成进程。
2、与程序的区别
在知道这些之后,我们还应该了解到一下几个的概念。
(1)、源码文件(.c):就是我们用户写的代码
(2)、程序:使用编译器将源码文件编译成系统所能识别并执行的二进制位文件。存储在磁盘上的二进制文件(Windows:.exe Linux:a.out)
(3)、进程:运行中的程序。将二进制可执行文件加载到内存上,然后由cpu执行其中的一些指令。将这个执行的过程,称之为进程。
(4)、结果:进程执行结果输出的数据。
由上述区别可以直到,进程是一个过程,是一个动态的概念。程序是静态的。
二、操作系统是如何表示以及管理进程的呢?
操作系统将进程的相关的属性记录下来,通过属性值的变化就能够描述程序正在执行。操作系统为每个进程(PCB->进程控制块 struct->结构体变量)分配了一个编号(PID)
三、进程管理命令
1、如何查看进程的命令
(1)、ps命令:显示当前终端运行的基础信息。如下图所示:
当然,ps有很多带参数的命令,下面我们说几个常用的简单的命令:
ps : -e 显示系统上所有的进程,还可以显示其他用户进程
-f 显示父子进程
-L 显示线程信息
-a 此终端机下运行的所有进程
u 显示进程的资源占有情况 CPU MEM 虚拟内存 实际内存
此外我们还用到管道(|)和过滤命令(grep)。
当我们执行 ps -ef
时,发现显示了所有的进程。如下图所示:
但当我们使用了管道和过滤命令时就可以查看自己想查看的进程了,没有那么庞大,如下图所示:
(2)、top命令:
top命令类似于我们windows下的资源管理器。
是一个动态变化的过程
(3)、pstree命令:
以树状图展示进程之间的关系,如下图所示(一部分):
2、kill命令(用于结束一个进程)
(1)&:如果执行一个命令或者一个程序时,在其后加一个&,则执行的进程放到后台运行。如下图所示:
当我们让进程睡眠不管几秒钟的时候我们发现我们的命令都无法使用,但当我们加上&命令后就相当于在后台执行,我们的所有命令就都可以使用。
(2)kill pid:结束一个进程。如下图所示:
当我们睡眠一个进程时,再使用kill命令时就直接将该进程挂掉了。
(3)kill -stop pid:挂起一个进程,也就是将进程暂停。如下图所示:
(4)kill -9 pid:强制结束一个进程。
kill pid是无法杀死挂起的进程的。这时候我们就需要kill -9 pid强制杀死一个进程。如上图所示。
(5)pkill CMD:结束一组相关的进程。可以批量用来关闭进程。而不需要一个一个关闭。
(6)jobs:显示任务
(7)fg + 任务号:放到前台执行
(8)bg + 任务号:将挂起的进程放到后台执行