当前位置: 首页 > news >正文

【Linux】进程优先级前后台理解

环境:centos7.6,腾讯云服务器
Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹
相关文章推荐:
【Linux】冯.诺依曼体系结构与操作系统

【Linux】进程理解与学习(Ⅰ)

浅谈Linux下的shell--BASH

【Linux】进程理解与学习(Ⅱ)
(本人非科班的一名大三小白,目前就读于安徽大学。刚入坑半年左右,每个人都可以学习编程,心有所向方能一无所往🌹)

进程优先级

概念

  • 所谓进程优先级,实际上就是CPU资源分配的先后顺序。说白了就是谁的优先级高,谁就先被CPU调度。由于CPU的资源有限,为了更好的提高系统的性能,最大程度的合理分配CPU的资源,CPU会根据进程的优先级进行调度。

“插队”与“抢占”

  • 我们知道,处于R状态的进程是指该进程的PCB处在运行队列中,等待被CPU调度,而队列我们知道它的特点,即先进先出,但是因为有了优先级的存在,就会出现所谓的插队现象。并且当代计算机都是支持“抢占”的。也就是说,假如一个进程正在运行时,突然来了一个优先级更高的进程,OS就会调用一些函数将该进程从CPU上剥离,然后把优先级高的放进去。

“插队”

进程优先级的查看

我们可以输入一些指令,比如ps -l,或者top等一些指令,来观察进程的优先级。

ps -l查看当前bash下的进程

其中PRI表示进程的优先级(Priority),PRI越低,表示该进程的优先级越高。由于PRI是内核动态调整的,我们无法干涉。但是我们可以通过调整NI(nice)值,来调整进程的优先级。

进程优先级的调整

首先我们来看一下公式:

  • PRI(new) = PRI(old) +nice

🔴注意点:
  • PRI(old)一般都是值起始的那个值80

  • root用户可以修改自己或他人进程的nice值,范围为-20~19

  • 一般用户仅可以调整自己进程的nice值,范围为0~19,这是为了避免一般用户抢占系统资源

  • 一般用户仅可将nice值越调越高,也就是说假如第一次调的时候,nice为5,则下一次只能调nice>5

  • 有两种方式调整nice值:nice指令一开使执行某个程序时,就给定一个指定的nice值;renice指令调整某个已经存在的PID的nice值。

nice与renice
  • 首先是nice指令,可以理解为初始化PRI,即在执行这个进程的时候,就通过NI设置了PRI。nice -n num 进程将进程的NI设置为num值(普通用户num范围:[0,19]

  • &放中间的意思是使&左右两边的指令同时执行。

接下来是renice修改已经存在的进程的NI。指令renice 数字 PID:将pid的进程的NI修改为指定数字。

通过top调整

我们还可以通过top指令来调整

我们先输入指令top,然后按r键,接着输入进程的pid,然后输入想要修改的NI值,就可以对进程的PRI进行调整。

演示

前后台理解

前台

我们来谈一谈什么是前台,很好理解。假如此时我们只有一个终端,此时出现提示字符让我们操作的环境就是前台。举个例子,我们输入指令vim,此时会进入vim的操作平台,这时我们就处于前台状态。
而像我们在bash下执行我们的程序时,比如执行不断地打印,这些打印情况等我们都可以看到,这就是前台进程。就像Windows下的qq,此时我打开qq,并且处在它的界面上使用,此时qq就是一个前台进程。

总结一句话:可以被我们人为控制与执行命令的环境就是前台,Linxu下的前台进程可以使用ctrl c指令中止。

后台

而后台就是指任务可以自动执行,不用我们人为干预,我们也无法使用ctrl c中止。

就像Winodws下的这104个后台进程,会自动执行,不需要我们来操心。

Linux下的前后台切换

合理的利用前后台可以提高我们的工作效率,举个例子来说,Linux下假如我们正在传输一个文件,而处于前台环境下,我们无法做别的事情,只能等传输完毕后,才可以进行干别的事。再比如,我们处在vim下,而此时我们想使用命令行界面操作一些别的指令,此时处在前台的我们,是无法做到在一个终端环境下,既使用vim,又使用命令行界面。
那我们就可以将vim扔到后台,处理完我们的事后再从后台拿到前台,继续使用vim。不过需要注意的是:放入后台的任务想要继续运行时,必须不能与用户交互。就好像vim,我们只可以把它放进后台,让vim在后台处于暂停状态,但不可以让vim在后台处于运行状态,因为vim进程的执行,需要与我们形成交互,是需要我们用户输入数据(比如写代码等)
查看目前后台任务

我们可以通过指令jobs -l,来查看后台任务

Done表示该进程执行结束
Running表示正在运行
Terminated 表示该进程已被中止
Stopped表示该进程暂停
Killed表示该进程被杀掉
直接将命令丢到后台中执行-->&

我们可以在一个命令的最后面加上&,这样就可以将该命令放在后台去执行。如下:

将当前任务丢进后台-->ctrl z

ctrl z表示将当前任务丢进后台,并处于暂停。比如此时打开vim,我们按下ctrl z,就会将vim丢进后台并暂停该进程。我们此时输入fg num,就会将编号为num的后台任务拿到前台来处理(只输入fg会默认拿出最近放入的后台进程到前台)。

如下:

当然,我们也可以输入bg num 可以使后台编号为num的进程处于运行状态(后台进程运行的前提是不会与用户交互,比如vim只能在后台处于暂停,因为vim的运行需要与用户交互)。

如何杀掉后台进程

后台进程使用ctrl c是杀不掉的,只可以使用kill指令

我们可以输入kill -9 pid指令杀掉进程,或者killall 进程名 杀掉,亦或者kill -9 %num 杀掉后台进程编号为num的进程。

🔴小总结:
  • 前台任务可以使用ctrl c中止后台任务不可使用ctrl c中止

  • 在指令最后方加上&,表示将该指令丢在后台,并执行

  • ctrl z会将当前任务丢进后台,并处于暂停状态

  • 我们丢进后台的进程都会有编号,我们可以输入指令:fg 编号,就会将该编号的进程从后台拿到前台,输入指令:bg 编号使该编号的后台进程从暂停变成执行

  • 后台任务的执行需要一个条件:后台任务不会与用户进行交互

  • 指令:jobs -l可以查看当前bash(只能查看当前bash下的)下的后台任务

  • 使用kill -9 PID 或者kill all 进程名 或者kill -9 %编号,都可以杀掉后台进程。

  • jobs下的+表示最近丢进后台的进程-表示最近第二个被丢进后台的进程

  • 我们之前ps axj指令下的状态后面加一个加号, 表示该进程处于前台状态(比如:S+),状态后面没有加号(比如S),表示该进程在后台


end.

生活原本沉闷,但跑起来就会有风!🌹

相关文章:

【Linux】进程优先级前后台理解

环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习(Ⅰ)浅谈Linux下的shell--BASH【Linux…...

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元) 目录 时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)效果一览基本描述模型描述程序设计参考资料效果一览...

python 模拟鼠标,键盘点击

信息爆炸 消息轰炸模拟鼠标和键盘敲击import time from pynput.keyboard import Controller as key_col from pynput.mouse import Button,Controller def keyboard_input(insertword):keyboardkey_col()keyboard.type(insertword)def mouth():mouseController()mouse.press(…...

【CSS】盒子边框 ③ ( 设置表格细线边框 | 合并相邻边框 border-collapse: collapse; )

文章目录一、设置表格细线边框1、表格示例2、合并相邻边框3、完整代码示例一、设置表格细线边框 1、表格示例 给定一个 HTML 结构中的表格 , 默认样式如下 : <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" />…...

TensorRT量化工具pytorch_quantization代码解析(一)

量化工具箱pytorch_quantization 通过提供一个方便的 PyTorch 库来补充 TensorRT &#xff0c;该库有助于生成可优化的 QAT 模型。该工具包提供了一个 API 来自动或手动为 QAT 或 PTQ 准备模型。 API 的核心是 TensorQuantizer 模块&#xff0c;它可以量化、伪量化或收集张量的…...

【Kubernetes】第二十七篇 - 布署前端项(下)

一&#xff0c;前言 上一篇&#xff0c;介绍了前端项目的部署&#xff1a;项目的创建和 jenkins 配置&#xff1b; 本篇&#xff0c;创建 Deployment、Service&#xff0c;完成前端项目的部署&#xff1b; 二&#xff0c;创建 Deployment 创建 Deployment 配置文件&#xff…...

【MFC】两个ListBox控件数据交互

一.控件ID名称 界面如图下所示&#xff1a; 候选数据列表的ID为&#xff1a; 已选数据列表的ID为&#xff1a; 二.数据添加 可以使用以下代码往框中添加数据&#xff1a; ((CListBox *)GetDlgItem(IDC_LIST_TO_CHO))->AddString("测试数据"); 显示效果如下&#…...

sklearn库学习--SelectKBest 、f_regression

目录 一、SelectKBest 介绍、代码使用 介绍&#xff1a; 代码使用&#xff1a; 二、评分函数 【1】f_regression&#xff1a; &#xff08;1&#xff09;介绍&#xff1a; &#xff08;2&#xff09;F值和相关系数 【2】除了f_regression函数&#xff0c;还有一些适用于…...

蓝桥杯刷题第十三天

第一题&#xff1a;特殊日期问题描述对于一个日期&#xff0c;我们可以计算出年份的各个数位上的数字之和&#xff0c;也可以分别计算月和日的各位数字之和。请问从 1900 年 11 月 1 日至 9999 年 12 月 31 日&#xff0c;总共有多少天&#xff0c;年份的数位数字之和等于月的数…...

CPU 和带宽之间的时空权衡

在 从一道面试题看 TCP 的吞吐极限 一文的开始&#xff0c;我提到在环形域上两个数字比较大小的前提是在同一个半圆内&#xff0c;进而得到滑动窗口最大值被限定在一个环形域的一半。 现在来看更为基本的问题。如果序列号只有 2bit&#xff0c;甚至仅有 1bit&#xff0c;保序传…...

ES+Redis+MySQL,这个高可用架构设计太顶了!

一、背景 会员系统是一种基础系统&#xff0c;跟公司所有业务线的下单主流程密切相关。如果会员系统出故障&#xff0c;会导致用户无法下单&#xff0c;影响范围是全公司所有业务线。所以&#xff0c;会员系统必须保证高性能、高可用&#xff0c;提供稳定、高效的基础服务。 …...

【Maven】Maven的常用命令

目录 一、Maven的常用命令 1、compile 编译命令 2、test 测试命令 3 、clean 清理命令 4、package 打包命令 5、 install 安装命令 6、Maven 指令的生命周期 二、maven 的概念模型 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一…...

python的循环结构

python中有for循环和while循环两种形式。 1. for 循环 可以用for循环来遍历不同类型的对象&#xff0c;如数组、列表、元组、字典、集合或字符串&#xff0c;并对每个元素执行一段代码。 1.1 数组的for循环 用for循环遍历一个数组&#xff0c;并打印出每个元素&#xff1a;…...

五种Python中字典的高级用法

1. 引言 Python中的字典是一种非常有用的数据结构&#xff0c;它允许大家存储键值对。通常来说&#xff0c;字典灵活、高效且易于使用&#xff0c;是Python中最常用的数据结构之一。字典通常被用于统计频率、映射值等任务&#xff0c;但在Python中使用字典也可以达到许多意想不…...

[蓝桥杯单片机]——八到十一届初赛决赛客观题

第八届初赛 一、填空题 采用外部12MHz晶振&#xff0c;经过系统12分频时定时器获得最大定时长度&#xff0c;此时定时器定时脉冲为1MHz&#xff0c;周期为1s&#xff0c;而定时器计时均为16位加法计数器&#xff0c;即计时长度为。 二、 选择题 ①带阻滤波器是指能通过大多数频…...

多线程(初阶)

文章目录一.初始线程(Thread)1.1.线程的概念1.2.线程的优势1.2.1.线程比进程更轻量1.2.2.并发编程1.3.线程和进程的区别二.Thread类方法2.1. java 中创建线程的方法2.1.1. 继承Thread,重写run2.1.2. 实现Ruuable接口2.1.3. 使用匿名内部类,继承Thread2.1.4.使用匿名内部类,实现…...

【Vue从入门到进阶】Node.js安装与配置

✅作者简介&#xff1a;CSDN一位小博主&#xff0c;正在学习前端&#xff0c;欢迎大家一起来交流学习&#x1f3c6; &#x1f4c3;个人主页&#xff1a;白月光777的CSDN博客 &#x1f525;系列专栏&#xff1a;Vue从入门到进阶 &#x1f4ac;个人格言&#xff1a;但行好事&…...

python 正则使用详解

python 正则使用详解什么是正则在 python 中使用正则一些正则的定义python 正则的方法match 从字符串开头匹配正则返回的结果分析&#xff08;重要&#xff09;fullmatch 严格匹配整个字符串search 任意位置开始匹配sub 替换匹配内容subn 以元组方式返回替换结果split 正则切割…...

一个深度学习项目需要什么

DataLoader1.数据预处理在将数据提供给模型之前&#xff0c;DataLoader需要对数据进行预处理。预处理可以包括数据增强、归一化、裁剪、缩放等操作。这些操作可以提高模型的性能和准确度。在处理点云数据时&#xff0c;可以通过最远点下采样到固定的点数。2.读取标签文件我 1 2…...

【Java进阶篇】—— 常用类和基础API

一、String类 1.1 String的特性 java.lang.String 类代表字符串&#xff0c;由final关键字修饰&#xff0c;在赋值后不能改变&#xff08;常量&#xff09;&#xff0c;不能继承String类String 对象的字符内容是存储在一个字符数组 value[]中的 我们来看一下String在JDK8中的…...

手敲Mybatis(六)-反射工具天花板

历时漫长的岁月&#xff0c;终于鼓起勇气继续研究Mybatis的反射工具类们&#xff0c;简直就是把反射玩出花&#xff0c;但是理解起来还是很有难度的&#xff0c;涉及的内容代码也颇多&#xff0c;所以花费时间也比较浩大&#xff0c;不过当了解套路每个类的功能也好&#xff0c…...

内含18禁~~关于自学\跳槽\转行做网络安全行业的一些建议

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。所以可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。…...

春分策划×运维老王主讲:CMDB数据运营精准化公开课启动报名啦!

『CMDB数据运营精准化』 公开直播课 要来了&#xff01; &#x1f446;扫描海报二维码&#xff0c;预约直播 CMDB似乎是运维中永恒的老话题。 提到CMDB很多人都是又爱又恨&#xff0c;爱的是它给我们提供了一个美好的未来&#xff0c;有了CMDB我们可以解决诸多运维中的难题。…...

制作INCA和CANape通用的A2L

文章目录 前言制作A2LA2ML定义MOD_COMMON定义MOD_PAR定义MEMORY_SEGMENTTransportLayer定义PROTOCOL_LAYERDAQ总结前言 由于INCA和CANape是两个不同的公司对XCP协议的实现,所以A2L中也会有不一样的地方,但是在标定时若每次都用两个A2L,是非常不方便的,本文介绍如何设计A2L…...

Python人脸识别

#头文件&#xff1a;import cv2 as cvimport numpy as npimport osfrom PIL import Imageimport xlsxwriterimport psutilimport time#人脸录入def get_image_name(name):name_map {f.split(.)[1]:int(f.split(.)[0]) for f in os.listdir("./picture")}if not name…...

我用Python写了一个下载网站所有内容的软件,可见即可下,室友表示非常好用

Python 写一个下载网站内容的GUI工具&#xff0c;所有内容都能下载&#xff0c;真的太方便了&#xff01;前言本次要实现的功能效果展示代码实战获取数据GUI部分最后前言 哈喽大家好&#xff0c;我是轻松。 今天我们分享一个用Python写下载视频弹幕评论的代码。 之前自游写了…...

【M365运维】扩充OneDrive存储空间

【问题】E3,E5等订阅许可下&#xff0c;默认的OneDrive存储空间为 1TB&#xff0c;满了之后该如何扩充&#xff1f;【解决】1.运行Powershell2. 链接到Sharepoint Online: Connect-SPOSerivce -url https://<这里通常是公司名>-admin.sharepoint.com3. 定义三个扩充空间时…...

hashcat(爆破工具,支持GPU,精)

目录 简介 分类 参数 -m hash的类型 -a 攻击方式 掩码 使用方法 字典破解 简介 虽然John the R...

【机器学习】什么是监督学习、半监督学习、无监督学习、自监督学习以及弱监督学习

监督学习&#xff08;Supervised Learning&#xff09;&#xff1a;利用大量的标注数据来训练模型&#xff0c;模型最终学习到输入与输出标签之间的相关性。半监督学习&#xff08;Semi- supervised Learning&#xff09;&#xff1a;利用少量有标签数据和大量无标签数据来训练…...

HashiCorp packer 制作AWS AMI镜像示例

准备工作 验证AWS 可以先手动启动一个EC2实例验证自己创建的VPC, subnet, internet gateway 和routetable等, 确保实例创建后不会出现连接不上的情况. 可以按照下面的链接配置避免连接超时 https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/TroubleshootingInstan…...

企业管理生产管理系统/合肥网络优化推广公司

Problem E: 最大数与数列最后一个数交换 分析 先确定最大数的下表&#xff0c;然后交换数值。 Description 输入一个正整数n( 1 < n < 100),再输入n个整数&#xff0c;将最后一个数与数列最大数交换位置&#xff08;若最大数在数列最后&#xff0c;就不用交换&#x…...

四川做网站的公司/网站网络推广服务

排序&#xff1a; ---rank()over(order by 列名 排序)的结果是不连续的&#xff0c;如果有4个人&#xff0c;其中有3个是并列第1名&#xff0c;那么最后的排序结果结果如&#xff1a;1 1 1 4 select scoreid, studentid,COURSENAME,totalexamscore , rank()over(order by TOTA…...

铁岭网站建设/网站推广的概念

和List类型不同的是&#xff0c;Set集合中不允许出现重复的元素Set可包含的最大元素数量是4294967259存储Set的常用命令&#xff1a; 添加/删除元素获得集合中的元素集合中的差集运算集合中的交集运算集合中的并集运算扩展命令> sadd myset a b c //向集合中添加元素 (integ…...

wordpress完全卸载教程/所有代刷平台推广

super 关键字 super super代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器 1、基本语法&#xff1a; 访问父类的属性&#xff0c;但不能访问父类的private属性&#xff1a;【案例】super.属性名&#xff1b;访问父类的方法&#xff0c;不能访问父类的private方…...

什么是自适应网站/东莞网站快速排名提升

将数据&#xff08;如音频、视频、文本&#xff09;变为图像结构&#xff0c;然后进行处理 输入二维像素&#xff0c;输出是 即使输入数据是经过旋转、缩放等处理的&#xff0c;输出仍然可以正确识别并进行输出 feature map 颜色越深&#xff0c;值越低 卷积核 如果卷积核形状与…...

网站开发需求ppt/百度搜索优化关键词排名

其实在淘宝上面也有很多卖家都想要去打造属于自己店铺的爆款商品。 但是又不知道淘宝做爆款商品的目的是什么&#xff0c;也不知道爆款商品到底应该要怎么做&#xff0c;我马上就来给各位卖家介绍。 我们打造爆款是为了让我们通过爆款赚钱&#xff0c;通过爆款引来的流量带动其…...