Day - 22(进程管理2):
一、管理进程状态
1.当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号。当然除了kill、还有killall,pkill
2.命令:
1.kill
所有的选项:
常用的选项:
2.pkill、killall
用法: 用于杀死指定名字的进程。
二、管理后台进程
1.后台进程的概念:
通常进程都会在终端前台运行,一旦关闭终端,进程也会随着结束,那么此时我们就希望进程能在后台运行,就是将在前台运行的进程放入后台运行,这样及时我们关闭了终端也不影响进程的正常运行。
2.为什么要进进程放入后台运行:
我们在传输大文件的时候,因为网络的问题需要传输很久,如果在传输的过程中出现网络抖动或者不小心关闭了终端这回导致传输失败,如果将传输的进程放入后台,就可以解决此类问题。
3.使用什么工具将进程放入后台:
screen
用途:
开启一个新的Bash窗口放入后台执行。
选项:
- S
指定名称
- list
查看正在运行的screen有哪些
- r
进入指定名称的screen
快捷键:
kill
结束screen
ctrl + a + d
将当前的screen放入后台执行
ctrl + c + d
将饭钱打的screen结束并退出当前的screen
三、进程的优先级
1.什么是优先级:
优先级指的是优先享受资源,比如排队买票的时候,军人优先,老人优先
2.为什么要有系统优先级
可以让系统中的比较重要的进程先执行,提高系统的执行效率(举个例子:当你去银行取钱,前面有很多人在等待,如果此时来了一个VIP用户他优先级很高,这个用户就可以直接向后服务,不需要排队)
3.系统中如何给进程配置优先级
启动进程前:
nice :
- n
指定优先级数字,优先级越小越优先。(范围:-20 - +19)
4.服务器假死状态:
服务器假死指的是:服务器的服务变得特别卡或者直接打不开的情况后,登录不上去,或者是登录上服务器后发现服务还在运行但是内存被占满,服务器拒绝访问的情况。这种情况一般是由于开发的代码混乱,进程和进程之间互相杀死子进程,然后又不断产生新的子进程导致的占用率过高,运行缓慢。导致CPU占用率过高,不能响应sshd服务,导致登录不了,可以通过在运行的环境脚本中提高sshd服务的优先级等级,来使得远程登录的优先局高于杀死进程的优先级,就可以登录进行检查并排除故障了。
四、系统的平均负载
1.什么是平均负载:
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数, PS: 平均负载与 CPU 使用率有关系也没有关系。
平均负载其实就是单位时间内的活跃进程数。
2.什么是可运行状态和不可中断状态:
可运行状态进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们ps 命令看到处于 R 状态的进程。
不可中断进程, 系统中最常见的是等待硬件设备的 I/O 响应,也就是我们 ps 命令中看到的 D 状态(也称为 Disk Sleep)的进程。
例如: 当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时使用kill -9强行的终止进程,就容易出现磁盘数据与进程数据不一致的问题(会打导致服务不能正常启动)。所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
3.平均负载为多少的时候合适:
最理想的状态是每个 CPU 上都刚好运行着一个进程,
这样每个 CPU 都得到了充分利用。所以在评判平均负载时,首先你要知道系统有几个CPU,
这可以通过 top 命令获取,或grep 'model name' /proc/cpuinfo
举例子:
假设现在在 4、2、1核的CPU上,如果平均负载为 2 时,意味着什么呢?
Q1.在4 个 CPU 的系统上,意味着 CPU 有 50% 的空闲。
Q2.在2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。
Q3.而1 个 CPU 的系统上,则意味着有一半的进程竞争不到 CPU。
4.平均负载的三个数值的意义:
第一个数值值得是1分钟内的平均负载,第二个数值值得是5分钟内的平均负载,第三个指的是15分钟内的平均负载,根据这三个数值可以推算出近15分钟内服务器平均负载的趋势。
5.平均负载与CPU使用率有什么关系:
CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
比如一个进程需要运算大量的数据就会打字CPU使用率飙升,也会导致平均负载身高
I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
多个硬件请求发向CPU但是CPU不需要计算大量的数据所有CPU的使用率不一定很高,但是也会造成平均负载升高
大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
多个进程请求CPU的响应,但是CPU满的响应不过来,造成了大量的进程在等待,造成平均负载升高,此时不仅CPU的使用率很高,而且平均负载也会很高。