进程管理
计算机通信就是两个进程之间的通信
通过ip来定位主机,通过端口来定位服务
任何一个服务启动以后都会触发相应的进程,来完成它的工作
一个静态可执行文件,也就是程序,执行以后就会触发相对应的进程
查看进程的命令:
ps pstree top
ps用法:
ps只能查看当前终端的进程,可以看到该进程是通过哪个可执行文件触发的(CMD)
ps还可以把所有的进程罗列出来,不管与终端有无关联
命令是ps -elf
可以看到上面有一个UID:
- 它代表这个进程的拥有者是谁
还有一个PID:
- 它是进程的ID号,每一个进程都有唯一的ID
PPID:
- 指的是这个进程的父进程是谁
PRI:
- priority,优先级 一个进程的优先级=内核分配的优先级+NICE值
一般情况下,内核分配的优先级,如果是用户态进程,那么就是80,如果是内核态进程那一般是 小于80
NICE值:
-
内核态分配的优先级,是不能更改的,只能通过修改NICE值的方式去修改进程对应的优先级,它的范围一般是在-19 - 20
通过调整优先级的方式来调整进程是否被优先处理*进程调度方式:红黑树 红黑树:他的调度方式,进程的优先级不再是考虑的唯一因素,它会基于时间等等因素*
CMD:
- 表示通过执行哪个文件触发的这个进程
S:
- 代表进程的状态
运行:
- R:进程正在CPU上执行,或者正在等待运行。处于运行或可运行状态时,进程可能正在执行 用户例程或者内湖例程,或已经排队准备就绪
已停止:
-
S:进程正在等待某一条件,硬件请求,系统资源访问或信号,当事件或者信号满足条件时,程序将会返回到运行中
-
D:进程正在睡眠,不会相应信号,只有在进程中断可能会导致意外设备状态下使用
-
K:与D相同,但有所修改,允许等待中的任务响应被中断的信号
僵停:
-
Z:子进程在退出时向父进程发出信号,除PID以外的所有资源都被释放
-
X:当父进程清理子进程的结构时,进程现在已经彻底释放
pstree :查看进程之间的关系
长这样:
对于RHEL8或者RHEL7,第一个被启动的进程:systemd
RHEL7之前:init
top:进程监控
它会一直刷新,时隔3秒
指定刷新:top -d 1-n 2
-n指定刷新次数
-d指定刷新间隔
第一行的 11:31:27 是当前的系统时间
up是状态
1:10是运行了多久
2users是两个用户登录
load average :平均系统负载,整个系统的压力,值越大,等待的进程就越多