一、进程的概述
1、什么是进程
定义:当我们运行一个程序,我们将运行起来的程序叫做进程。
2、程序和进程的区别
1、程序是数据和指令的集合,是一个静态的概念,可以永久的存在于系统中。如二进制文件等;
2、进程则是程序的运行的过程,是一个动态的概念,进程是存在生命周期的,也就是进程会随着程序的终止而销毁,不会永久的存在与系统中。
3、进程的生命周期
进程生命周期示例图
当父进程接收的命令调度时,会通过fork派生一个子进程并继承父进程的属性来处理任务,
1、子进程处理任务时,父进程会进入等待
2、子进程处理任务结束后,会退出同时让等待的父进程来接收一个处理的结果。
3、如果子进程在处理任务的过程中,父进程退出,那么这些子进程就没有父进程来管理,就会变成僵尸进程。
二、进程的状态信息监控
1、使用 ps 命令查看当前进程状态(静态)
ps -aux示例图
详细图解
状态 | 含义 |
---|---|
USER | 启动进程的用户 |
PID | 进程运行的 ID 号 |
%CPU | 进程占用CPU的百分比 |
%MEM | 进程占用内存的百分比 |
VSZ | 进程占用虚拟内存的大小(单位KB) |
RSS | 进程占用物理内存的实际大小 单位:KB |
TTY | 进程是由哪个终端运行启动(如tty1、pts/0等),? 表示是内核程序与终端无关 |
STAT | 进程运行过程中的状态 |
START | 进程启动的时间 |
TIME | 进程占用CPU的总时间(0表示还没有超过秒,CPU以纳秒为单位) |
COMMAND | 程序运行的指令,[ ] 属于内核状态的进程,没有[ ] 表示用户状态进程 |
1)STAT状态的 S、Ss、Ss+、S<、S、S+、R、R+、D、T、Z等等,都表示什么
STAT
STAT详解
STAT状态 | 含义 | STAT状态符号 | 含义 |
---|---|---|---|
R | 进程运行 | s | 进程是控制进程,Ss:进程的领导者,父进程 |
S | 可中断睡眠 | < | 进程运行在优先级上,S< :优先级较高的进程 |
T | 进程被暂停(挂起在后台) | N | 进程运行在低优先级上,SN:优先级较低的进程 |
D | 不可中断睡眠 | + | 当前进程运行在前台,R+:表示进行在前台运行 |
Z | 僵尸进程 | l | 进程是多线程的,SI表示进程是以线程的方式运行 |
示例一、PS命令查看进程状态切换
1.在终端1上运行vim
`[root@oldboy:~]# vim cui.txt
2.在终端2上运行ps命令查看状态
[root@oldboy:~]# ps -aux|grep cui S表示睡眠模式,+表示前台运行
root 7701 0.3 0.2 151520 5200 pts/1 S+ 16:45 0:00 vim cui.txt`
root 7703 0.0 0.0 112708 972 pts/0 R+ 16:45 0:00 grep --color=auto cui`
在终端1上挂起vim命令,按下:ctrl+z
3.回到终端2再次运行ps命令查看状态
[root@oldboy:~]# ps -aux|grep cui #T表示停止状态
root 7701 0.0 0.2 151520 5200 pts/1 T 16:45 0:00 vim cui.txt
root 7707 0.0 0.0 112708 976 pts/0 R+ 16:50 0:00 grep --color=auto cui
示例二、PS命令查看不可中断状态进程
1.使用tar打包文件时,可以通过终端不断查看状态,由S+,R+变为D+
[root@oldboy:~]# tar -czf etc.tar.gz /etc/ /usr/ /var/
[root@oldboy:~]# ps aux|grep tar|grep -v grep
root 58467 5.5 0.2 127924 5456 pts/1 R+ 16:55 0:04 tar -czf etc.tar.gz /etc/
[root@oldboy:~]# ps aux|grep tar|grep -v grep
root 58467 5.5 0.2 127088 4708 pts/1 S+ 16:56 0:03 tar -czf etc.tar.gz /etc/
[root@oldboy:~]# ps aux|grep tar|grep -v grep
root 58467 5.6 0.2 127232 4708 pts/1 D+ 16:56 0:03 tar -czf etc.tar.gz /etc/
2)怎样杀死僵尸进程
1、查找其父进程
[root@oldboy:~]# ps -ef |grep cui
2、删除父进程(ID号)
[root@oldboy:~]# kill 8238
[root@oldboy:~]# kill -9 8238
2、使用top命令查看当前的进程状态(动态)
和top相似的命令 : htop、iftop 、glances
1)、top 常见指令
字母 | 含义 |
---|---|
h | 查看帮出 |
1 | 数字1,显示所有CPU核心的负载 |
z | 以高亮显示数据 |
b | 高亮显示处于R状态的进程 |
M | 按内存使用百分比排序输出 |
P | 按CPU使用百分比排序输出 |
q | 退出top |
top动态查看
2)平均负载
平均负载
图表详解
任务 | 含义 |
---|---|
Tasks: 129 total | 当然进程任务的总数 |
1 running | 正在运行的进程数(当前为1个进程) |
128 sleeping | 睡眠的进程数(当期有128睡眠进程) |
1 stopped | 停止的进程数(当前有一1个挂起或停止) |
0 zombie | 僵尸进程数(当前为0个) |
0.7 us | 系统用户进程占用CPU百分比 |
0.2 sy | 内核中的进程占用CPU百分比,通常内核是于硬件进行交互 |
0.0 ni | 优先级占用CPU的百分比 |
98.7 id | 空闲的进程占CPU的百分比 |
0.0 wa | 有大量的等待,大量数据读入时产生飙升,CPU等待IO完成的时间 |
0.0 hi | 硬中断,占的CPU百分比 |
0.0 si | 软中断,占的CPU百分比 |
0.0 st | 比如虚拟机CPU占用物理CPU的百分比 |
.什么是中断
中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。
.中断会带来什么问题
1、由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。
2、如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。
3、特别是,中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。
总结
今天主要学习进程的管理,进程的定义、进程和程序的区别、进程的生命周期、怎样了解进程的监控信息中每一个符号的含义,使用怎样区分的,最后学习了查看进程的两种方式,静态和动态。两者有什么不同。
进程的管理