第六篇:Linux进程的相关知识总结(2)

第五篇:Linux进程的相关知识总结(1)-CSDN博客

目录

4.1.2.3进程的优先级

4.1.2.3.1进程优先级的查看

4.1.2.3.2更改优先级

4.1.2.4使用信号控制进程

4.1.3内存的查看

4.1.4磁盘空间的查看

4.2作业控制Jobs

4.3虚拟文件系统


4.1.2.3进程的优先级

        每个CPU在单位时间内只能运行一个程序,我们通过分片技术来同时运行多个程序,每个程序默认就会得到一个运行时间

        nice是一个数值,通过我们的设置程序会得到这个数值,程序将这个数值拿给cpu,cpu就知道是否要优先消耗更多的时间给这个程序

进程的优先级范围和特性

        在Linux中用户可以自己设置进程的优先级NiceLevel,用于让CPU调用更多的算力、更快的执行高优先级的进程,也可以降低优先级让CPU后的执行程序。优先级的范围一般设置在20——-19这四十个数字,数字定义的越大,进程的优先级反而越小,反之,进程的优先级反而越大。

        在Linux系统中还有一种优先级是系统自己设置好的优先级,用户不可以调整优先级的先后,我们把这种类型的优先级称为PR系统优先级

        系统优先级的计算方法为nice用户定义的优先级+20,所以PR的范围为39-99。大部分PR的值都为0,如果我们调整了nice的值,对应PR的优先级也会变成nice+20。

那么我们有系统优先级PR这样做的目的是什么呢?

        原因:我们即想要有自定义进程优先级的权力,让CPU优先执行我们定义的优先级,假设不存在PR优先级,所有的优先级都是nice自定义的优先级。

        会不会存在这么一种情况:

        我们定义的进程的优先级太高了,连系统优先级PR都超过了,一两个这样的违例进程可能看不出来,那数量上去了呢?CPU为了执行你的高优先的进程连自己系统必须要执行的进程都得排队往后靠,那CPU不就忙不过来崩溃了吗?所以才会存在系统优先级PR且PR的范围永远大于用户自定义的nice的范围,这是Linux系统中的一种自我保护机制!

4.1.2.3.1进程优先级的查看

ps axo nice

        使用此种方法我们查看的结果只有一列nice,我们完全不知道是哪个进程的nice,所以我们最好还是加上进程的相关信息增加可读性

ps axo user,pid,ppid,nice --sort = nice

按进程优先级的级别进行排序

4.1.2.3.2更改优先级

更改优先级的情况分为两种

第一种:启动时就设置好的nice级别的优先级

        我们Linux中有些进程在启动的时候就自行设置了nice值,相当于硬性规定,进程启动的时候的默认情况进程都会继承父系的nice值,默认为0

如果我们想要更改这些优先级可以使用nice命令

举例:

nice -n -5 sleep 6000 &

nice表示运行优先级进程

-n表示更改优先级选项

-5表示将优先级改为-5(范围是-19到20)

sleep 6000表示更改的哪一个进程,如果想要更改为别的进程也可以更换相关的命令。

注意:nice -n -5 要输入具体的命令而不是进程号!因为文件在启动的时候还没有进程号,我们直接对某个进程名进行操作而进程名映射出进程号这是间接的关系

第二种:更改现有的优先级级别

        2.1我们想要更改现有的优先级级别的第一步首先是要直到优先级,我们得使用Jobs命令中的‘&’先将程序放到后台运行,这时候会弹出进程号,这时候再使用renice命令来改优先级(如下图所示)。

步骤:

(1.创建进程并查看当前进程的优先级,因为是实验,如果在企业中这一步可以没有)

2.ps axo ... | grep +待修改进程的关键词来查找进程

3.renice + 优先级 + 进程号

4.再次ps axo验证进程是否修改成功

        总结为一建(首先建立进程)一找(grep结合ps查找进程名关键字)一改(renice修改)一验(最后再次ps验证是否成功)

4.1.2.4使用信号控制进程

        我们进程创建出来之后我们上述的所有步骤还是围绕在“查”方面,具体的修改进程我们如何控制呢?我们可以使用kill命令来完成对进程的修改,用kill控制信号对进程进行影响,不同的信号对进程的影响都是不同的。信号是一种软件中断机制,用于通知进程发生了某些事件或需要执行某些操作。kill -l中的l代表信号的类型。

kill -l

        Linux中信号的类型有多种,范围为1——63,我们经常使用的信号为(1、2、20、9、15、18、19这几路信号)

kill -1 +pid

重新启动pid,重新读一遍参数

2号信号的作用就是调用键盘的键位ctrl+c终止进程的运行

kill -2 pid

3号信号与2号信号一样都是退出进程。

20号信号的作用是暂停进程的运行

kill -20 pid

9号信号强制退出进程的运行,比2、3信号还要强烈

        甚至没有保存,程序直接终端死掉,立刻退出,建议不要使用9号信号,可以应对卡住出不去的僵尸程序

kill -9 进程号

15号信号也是退出,但是比9号委婉一点

18:暂停

19:继续运行

4.1.3内存的查看

        如果我们想从内存的角度出发查看进程对于内存的影响我们可以使用free -m命令来实现

free -m

m表示的人性化查看方法,单位为M,否则只显示一大串的数字你不好划分成M

4.1.4磁盘空间的查看

        同样的我们有了内存空间的查看我们还可以对硬盘空间进行查看,使用df -hT(如下图)命令完成对硬盘空间的查看,具体细则当我们学习到后面的挂载、磁盘管理的时候还会再进行讲解。

4.2作业控制Jobs

        我们把程序运行的时候叫工作,但是程序有时候会占领你的前台,类似sleep 20,这个命令打完之后你敲任何指令屏幕在20秒内都不好使了,程序休眠了20s

所谓的作业控制就是把占领前台的程序通过‘&’调到后台进行运行。

Jobs作业控制使用学号而不是用PID的原因:

1.对于普通用户来说,记住作业序号比记住进程ID更为直观和容易。作业序号通常在当前终端会话中是唯一的,使用序号可以快速引用和管理作业。

2.使用作业序号可以同时对整个作业中的所有进程进行操作,而不需要单独管理每个进程的PID。

3.作业与终端会话紧密相关,而会话管理器跟踪的是作业而不是单独的进程。在会话中,作业序号提供了一种简单的方式来引用和管理作业。

4.简化操作:使用作业序号可以简化用户对进程的管理操作。

5.避免PID冲突:在多用户系统中,不同的用户可能运行具有相同PID的不同进程。

关键词介绍

background:后台,在程序中也可以缩写为bg

foreground:前台,在程序中也可以被缩写为fg

fg和bg就是把程序扔到前台或者后台运行的简写

后台程序查看、后台程序调用到前台的示例:

1.我们首先创建一个前台进程sleep 2000,运行该程序的时候前台会被占领,观察前台的现象,大部分程序已经失效,我们ctrl+C终止这个程序

2.我们使用‘&’作业控制将sleep 2000程序放到后台运行,

sleep 2000 &

3.ps aux | grep sleep检查出sleep程序的PID

4.jobs查看后台进程(直接输入jobs的作用就是查看后台正在运行的程序,如果后台没有正在运行的程序则不会输出)

如下图所示

jobs中弹出的窗口带加号(+)的表示最新的进程,减号-则表示之前的后台进程

5.可以将Jobs后台的进程调用到前台(如下图所示)

fg + 刚刚Jobs的后台的进程的序号

一定注意是调用的是序号,不是PID!!!!!!!!!不要踩坑!!!

前后端的转换:

前端——————>后端

&

后端——————>前端

fg 序号

kill信号控制也可以对后端的进程控制:

示例:

1.我们首先创建三个后台的Sleep休眠文件

sleep 1234 &

sleep 2345 &

sleep 3456 &

2.然后我们打开后台监视器Jobs,打开后会对应三个序号,这三个需要自上而下分别为sleep 1234 &进程、sleep 2345 &进程、sleep 3456 &进程

Jobs

3.使用Kill杀死后台的全部的进程

kill -9 %1

kill -9 + %2

kill -9 + %3

kill -9:强制杀死

%number:杀死对应的第number个jobs内的序号的进程

删除完成之后我们再次使用jobs对其进行验证就没有后台的进程了。

需要注意的是:信号控制与Kill结合也是需要更改序号而不是PID

4.3虚拟文件系统

在Linux系统中

/proc是一个虚拟文件系统,它提供了一种机制来访问内核和运行中的进程信息。

ls /proc命令列出了当前运行的所有进程的目录,每个进程都有一个以其PID命名的目录。

ls /proc/

以下是一些/proc目录中可能包含的文件和目录类型:

  1. 进程目录:每个运行中的进程都有一个以其PID命名的目录,例如/proc/1234,这里的1234是进程的ID。
  2. 进程文件:在每个进程目录下,有多个文件提供有关进程的信息,例如:
  1. 系统信息文件:在/proc的根目录下,还有一些文件提供整个系统的相关信息,例如:
  1. 设备文件:/proc目录还包含一些设备文件,例如/proc/diskstats,它提供有关磁盘I/O的信息。
  2. 配置文件:/proc中的一些文件可以用来配置系统,例如/proc/sys目录下的文件,它们用于配置内核参数。
  3. 网络信息:/proc/net目录包含网络相关的信息,如路由表、网络接口状态等。

        请注意,/proc文件系统中的内容是动态变化的,它反映了当前运行的进程和系统状态。由于/proc是一个虚拟文件系统,它不占用磁盘空间,并且只存在于内存中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值