Linux进程管理

语言: CN / TW / HK

参考网址

 https://blog.csdn.net/songhaixing2/article/details/111086988

一/进程介绍

1.进程

程序: 就是磁盘上存放代码的文件(静态概念)。
      如果这样说的话,一个.sh文件就是一个程序,.py文件也是一个程序

进程: 程序运行的过程,一旦程序被操作系统从磁盘加载进内存开始运行了,这个时候程序就成为了进程。(动态概念)。
     如果这样说的话,.sh文件运行的时候就是一个进程。

一个程序中可能对应多个进程
父进程: 程序运行时产生的第一个进程
子进程: 由父进程衍生出来的进程(比如在bash里再开一个bash),
如果父进程终止,子进程也会随之终止
进程是操作系统最核心的概念、

2.PID和PPID

1、PID(process ID):
    PID是程序被操作系统从磁盘加载到内存成为进程后动态分配的资源。
    每次程序执行的时候,操作系统都会重新加载,PID在每次加载的时候都是不同的。

2、PPID(parent process ID):PPID是程序的父进程号。
3、PID和PPID都是非零的整数。
4、PID是唯一的,一个PID只标识一个进程。不可能同时存在2个一样的pid进程。
5、一个进程创建的另一个新进程称为子进程。相反地,创建子进程的进程称为父进程。
   比如a进程创建了b进程,则a就是b的父进程,b就是a的子进程
6、对于一个普通的用户进程,它的父进程就是执行它的那个Shell,对于Linux而言,Shell就是bash。
   一旦父进程挂了,则子进程也挂了
7、bash所在的目录:[[email protected] bin]$ cd /bin | ls bash
8 特别说明:
    1、所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫init进程
    2、init进程是linux内核启动后第一个执行的进程。
    3、init引导系统,启动守护进程并且运行必要的程序。

2.并发和并行

并发: 多个任务看起来是同时运行的。
      比如一个人在吃饭,吃了牛肉,蔬菜,鱼肉,看起来是同时进行的,但还是有先后顺序的。
并行: 多个任务真正的同时运行(只有多核再能实现并行)

3.线程

线程是进程内代码执行的过程
线程才是CPU上的执行单位
一个进程至少有一个线程
强调:CPU只做代码的运行,而不涉及I/O操作

4.任务三种状态

运行态
就绪态
阻塞态
不是阻塞态就是非阻塞态

5.提交任务的两种方式

同步:同步是指发送方发送数据后, 等接收方发回响应后才发下一个数据报的通讯方式。
异步:异步是指发送方发出数据后, 不等接收方发回响应, 接着就发下个数据包的通讯方式。

例子:
快递小哥给你送快递,如果他打电话叫你过来拿,他在那里等你,等你从他手上把快递拿走了他才去送别人的快递,这个就称之为同步。

快递小哥把你快递放在丰巢柜或者驿站,然后打个打电话或者发个信息告诉你快递到了让你自己去拿,然后小哥去干别的事了,这个就是异步(效率更高一点)。

二/进程信息的查看

1.ps -aux 组合命令,查看进程信息

-a参数:显示该终端的所有进程,all
-u参数:显示有效的用户id或者用户名 user
-x参数:显示没有控制终端的进程,同时显示各个进程的具体路径

image.png

2.命令显示结果

image.png

3.首行信息代表含义

USER参数:运行该进程的用户
PID参数:进程的id
STAT参数: 该进程现在的状态
START参数:该进程的启动时间(是用户在什么时候启动的)
TIME参数:该进程占用cpu的总时间(0表示还没有超过1秒钟)
COMMAND参数:程序运行指令,有[]代表内核态进程,没有[]代表用户态进程。

image.png

D状态与Z状态的进程都无法使用 kill -9 杀死

4.ps -efl 查看命令

 -e参数:显示所有的进程
 -f参数:全格式,full
 -l参数: 长格式,long

 三种查看效果对比(PPID代表当前进程的父进程)

image.png

6.查看进程树

pstree,这个命令,可以把父进程和对应的子进程看得特别清楚。

image.png

7.动态查看用法top

top命令是动态查看进程的命令,因为进程的状态是时刻在变化的,
如果你使用ps命令的话,那是一个切片的状态,你需要再次执行ps命令,才能知道当前的状态。

-u参数:查看指定用户的进程
-p参数:指定某个进程id
-d参数:制定刷新时间(单位秒,因为是动态查看,所以需要有刷新时间)

下面是用了-u -p -d参数的2个例子:

image.png

根据上面这个截图,我们就需要知道top命令的返回结果中,各个字段的意思:

image.png image.png

8.进程信号

kill -l 列出当前系统支持的信号

image.png

上面列出的信号太多了,我们平时常用的信号有以下几个:
编号    含义         作用
1      SIGHUP   不用重启进程直接重新加载配置文件
9      SIGKILL  强制杀死进程(D,Z杀不死)
15     SIGTERM  终止进程, kill默认就是这个信号
18     SIGCONT  让被停止的进程恢复运行
19     SIGSTOP  暂停进程

下面是一个例子:

image.png