【探索Linux】—— 强大的命令行工具 P.8(进程优先级、环境变量)

news2024/11/27 8:39:58

在这里插入图片描述

阅读导航

  • 前言
  • 一、进程优先级
    • 1. 优先级概念
    • 2. Linux查看系统进程
    • 3. PRI(Priority)和NI(Nice)
  • 二、环境变量
    • 1. 概念
    • 2. 查看环境变量方法
    • 3. 环境变量的组织方式
    • 4.通过代码获取环境变量
    • 5. 环境变量的特点
  • 总结
  • 温馨提示

前言

前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,上一篇文章我们了解了关于进程的基本概念,今天博主带大家了解一下 —— 进程优先级以及环境变量, 下面话不多说坐稳扶好咱们要开车了!!!😍

一、进程优先级

1. 优先级概念

进程优先级(Process Priority)是操作系统用来决定进程获取CPU资源的顺序的一种机制。一般来说,进程优先级较高的进程会获得更多的CPU时间片,从而更频繁地执行。进程优先级的设置通常由操作系统或系统管理员来决定,而不是由普通用户来指定。进程优先级的目的是根据进程的重要性或性能需求来分配系统资源,以实现对系统资源的合理分配和性能调整。较高优先级的进程通常会被更快地响应和执行,而较低优先级的进程则可能会被抑制或推迟。

2. Linux查看系统进程

在linux系统中,用ps –l命令则会类似输出以下几个内容:
在这里插入图片描述
我们很容易注意到其中的几个重要信息,有下:

  • UID : 代表执行者的身份。
  • PID : 代表这个进程的代号。
  • PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号。
  • PRI :代表这个进程可被执行的优先级,其值越小越早被执行。
  • NI :代表这个进程的nice值。

3. PRI(Priority)和NI(Nice)

PRI是指进程的实际优先级(Priority)。在Unix/Linux系统中,PRI是一个整数值,代表了进程在调度时的优先级。较低的PRI值表示较高的优先级,而较高的PRI值表示较低的优先级。系统中的PRI值范围可以是不固定的,具体取决于操作系统的实现。

NI是指进程的Nice值(Nice Value)。Nice值是Unix/Linux系统中用于调整进程优先级的参数。Nice值的范围通常是从-20到19,其中-20是最高优先级,19是最低优先级。与PRI不同的是,较低的NI值表示较低的优先级,而较高的NI值表示较高的优先级。

PRI和NI之间存在一个简单的转换关系。通常,PRI = 20 + NI,即PRI值等于20加上Nice值。因此,通过修改NI值,可以间接地修改进程的PRI值,从而调整进程的优先级

可以使用nice命令来设置进程的Nice值。例如,使用以下命令可以将进程的Nice值设置为10:

nice -n 10 command

其中,command是要执行的命令或程序。

除了使用nice命令外,还可以使用renice命令来修改已经运行的进程的Nice值。例如,使用以下命令可以将进程的Nice值修改为5:

renice -n 5 -p pid

其中,pid是要修改Nice值的进程的进程ID。

🚨🚨注意:只有具有足够权限的用户才能修改进程的NI值,一般需要管理员或具有特殊权限的用户才能进行修改

二、环境变量

1. 概念

环境变量是操作系统中用于存储和管理系统级别的配置信息的一种机制。它们是由操作系统或应用程序设置的键值对,用于指定特定应用程序或整个系统在运行时的行为。环境变量通常包含一些重要的配置信息,如路径、语言、时区等。通过设置和读取环境变量,可以在不修改应用程序本身的情况下,对其进行配置和定制。应用程序可以使用环境变量来获取配置参数或根据不同的环境执行不同的操作。

在不同的操作系统中,设置和读取环境变量的方法可能会有所不同。例如,在Unix和Linux系统中,可以使用"export"命令设置环境变量,通过"$"符号引用环境变量的值。

2. 查看环境变量方法

在Linux下,可以使用以下方法来查看环境变量:

  1. 使用"printenv"命令:
    在终端中输入"printenv"命令,将显示当前会话中的所有环境变量及其对应的值。

  2. 使用"echo"命令:
    可以使用"echo"命令来显示单个环境变量的值。例如,要查看"PATH"环境变量的值,可以输入以下命令:

echo $PATH

类似地,可以将"$"符号后面的部分替换为所需的环境变量名称。

  1. 使用"env"命令:
    "env"命令可以显示当前会话中的环境变量和其值。在终端中输入"env"命令即可显示所有环境变量。

  2. 查看特定配置文件:
    根据不同的Linux发行版,可能会有不同的配置文件保存环境变量。在常见的发行版如Ubuntu和CentOS中,可以查看"/etc/environment"文件来获取全局环境变量的值。

注意:这些方法都是在终端中查看当前会话中的环境变量。如果您希望查看永久环境变量(即在每次登录时都生效的环境变量),则可以查看用户的bash配置文件,如~ /.bashrc或~/.bash_profile中的设置。

3. 环境变量的组织方式

在这里插入图片描述
每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。

4.通过代码获取环境变量

  • 命令行第三个参数
#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
	int i = 0;
	for(; env[i]; i++)
	{
		printf("%s\n", env[i]);
	}
	return 0;
}
  • 通过第三方变量environ获取
#include <stdio.h>
int main(int argc, char *argv[])
{
	extern char **environ;
	int i = 0;
	for(; environ[i]; i++)
	{
		printf("%s\n", environ[i]);
	}
	return 0;
}

libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明。

5. 环境变量的特点

  1. 全局性:Linux环境变量是在整个操作系统级别定义和生效的。它们对所有用户和进程都是全局可见的,因此可以在系统中的任何位置和任何进程中使用和访问。

  2. 动态性:Linux环境变量可以在运行时动态地进行修改、添加或删除。这意味着可以根据需要更改环境变量的值,而无需重新编译或重启程序。

  3. 字符串格式:Linux环境变量的值通常以字符串的形式表示。这使得环境变量非常适合存储配置信息、路径、用户名等文本数据。

  4. 持久性:Linux环境变量可以在系统启动时由各种不同的方式进行设置。例如,在/etc/profile~/.bashrc/etc/environment 等文件中设置环境变量,使其在系统启动时自动加载。

  5. 继承性:Linux环境变量可以被派生进程继承。这意味着当创建子进程时,子进程会继承父进程的环境变量。这种特性使得环境变量可以在整个进程树中自动传递并共享。

  6. 临时性:Linux环境变量可以在当前的终端会话中设置,并在会话结束后自动消失。这对于临时设置和调试非常有用。

  7. SHELL变量和环境变量:在Linux中,有些特殊的环境变量被称为SHELL变量,用于控制和配置当前的Shell环境。这些变量在当前Shell中起作用,而不会传递给其他进程。

总结

一、进程优先级:

  1. 优先级概念:进程优先级决定了进程在系统资源分配和竞争中的优先级别。优先级较高的进程会在资源有限时获得更多的处理时间和资源。
  2. Linux查看系统进程:通过命令行工具如topps等可以实时查看系统中运行的进程以及它们的优先级信息。
  3. PRI(Priority)和NI(Nice):在Linux中,进程的优先级主要通过PRI和NI来表示。PRI的范围是-20(最高优先级)到+19(最低优先级),而NI的范围是-20到+19,它们之间存在一定的关系。较小的PRI值表示较高的优先级。

二、环境变量:
环境变量在Linux系统中具有重要作用,用于存储和传递配置信息、路径、用户名等。具体内容如下:

  1. 概念:环境变量是在操作系统层面上定义和生效的全局变量,它们可以在系统中的任何位置和任何进程中使用和访问。
  2. 查看环境变量方法:使用printenvecho命令可以在终端中查看当前环境变量的值,或者通过env命令列出所有环境变量。
  3. 环境变量的组织方式:环境变量以key-value的形式存储,其中key是变量名,value是变量的值。多个环境变量以列表或配置文件的形式进行组织。
  4. 通过代码获取环境变量:可以使用编程语言提供的函数如getenv来获取指定环境变量的值,然后在代码中进行使用。
  5. 环境变量的特点:环境变量具有全局性、动态性、文本格式等特点。它们可以全局共享、动态修改,适应不同的环境和配置需求。

温馨提示

感谢您对博主文章的关注与支持!如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。如果感兴趣的话可以关注博主的更新,不要错过任何精彩内容!

再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL主从复制读写分离

读写分离 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作&#xff08;INSERT、UPDATE、DELETE&#xff09;&#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库 读写分离的好处 因为数据库的“写…

在Linux系统启动java程序(jar包)

文章目录 1. mvn install生成jar包2. 利用ftp工具将jar包上传到linux服务器3. 在linux服务器上启动jar包3.1 直接启动jar包3.2 后台启动jar包3.3 后台不挂断启动jar包3.4 后台不挂断启动jar包并输出日志到指定文件3.5 其他 1. mvn install生成jar包 2. 利用ftp工具将jar包上传到…

小程序中如何查看会员的积分和变更记录

​积分是会员卡的一个重要功能&#xff0c;可以用于激励会员消费和提升用户粘性。在小程序中&#xff0c;商家可以方便地查看会员卡的积分和变更记录&#xff0c;以便更好地了解会员的消费行为和积分变动情况。下面将介绍如何在小程序中查看会员卡的积分和变更记录。 1. 找到指…

Android Ble蓝牙App(七)扫描过滤

Ble蓝牙App&#xff08;七&#xff09;扫描过滤 前言目录正文一、增加菜单二、使用MMKV① 添加依赖② 封装MMKV③ 使用MMKV 三、过滤空设备名四、过滤Mac地址五、过滤RSSI六、源码 前言 在上一篇文章中了解了MTU的相关知识以及对于设备操作信息的展示&#xff0c;本篇文章中将增…

uniapp 在 onLoad 事件中 this.$refs 娶不到的问题

现象 本人想在主页面加载的时候调用子组件的方法。示例代码如下&#xff1a; 运行&#xff0c;发现 this.$refs 取不到。如下图所示&#xff1a; 解决方法&#xff0c;把onLoad 换为 onReady 就可以了。

存储过程报Illegal mix of collations错误的解决方法

CREATE PROCEDURE maxAgeStudent(IN _gender CHAR) BEGINDECLARE maxage INT DEFAULT 0;SELECT max(age) INTO maxage FROM student where gender _gender;SELECT * from student WHERE age maxage and gender _gender; END; 在调用的时候 call maxAgeStudent(1) 产生了报…

MySQL数据库的增删改查(进阶)

目录 数据库约束 约束类型 NULL约束 UNIQUE&#xff1a;唯一约束 DEFAULT&#xff1a;默认值约束 PRIMARY KEY&#xff1a;主键约束 FOREIGN KEY&#xff1a;外键约束 表的设计 一对一关系 一对多关系 多对多关系 查询 聚合查询 聚合函数 GROUP BY子句 HAVING …

LeetCode 1123. 最深叶节点的最近公共祖先:DFS

【LetMeFly】1123.最深叶节点的最近公共祖先 力扣题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-deepest-leaves/ 给你一个有根节点 root 的二叉树&#xff0c;返回它 最深的叶节点的最近公共祖先 。 回想一下&#xff1a; 叶节点 是二叉树…

2023年09月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年09月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多&#xff0c;人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…

如何创建专栏

前言 今天&#xff0c;有一个粉丝问我该如何创建一个专栏&#xff0c;好的&#xff0c;安排上&#xff01; 什么是专栏&#xff1f; 专栏是用户写的一部分博客的分类。可以理解为&#xff1a; 1.我有一些文件&#xff08;文件代指博客&#xff09;&#xff0c;于是我创建了一…

十六、MySQL常用函数有哪些?

1、函数 说到函数&#xff0c;就必须知道其本质是什么&#xff0c;在MySQL中&#xff0c;函数是指一段可以直接被另一段程序调用的程序或代码。 2、字符串函数 &#xff08;1&#xff09;函数 &#xff08;2&#xff09;字符串连接函数 字符串连接函数&#xff1a; select c…

第三章 LInux多线程开发 3.1-3.5线程创建 终止 分离

创建线程&#xff1a;&#xff08;好好记住 可能会叫写代码&#xff09; 一般情况下,main函数所在的线程我们称之为主线程&#xff08;main线程&#xff09;&#xff0c;其余创建的线程称之为子线程。 程序中默认只有一个进程&#xff0c;fork()函数调用&#xff0c;2进行 程序…

ComfyUI 安装

背景&#xff1a; stable diffussion XL最先适配&#xff0c;专业性强的SD操作界面 安装步骤&#xff1a; git clone GitHub - comfyanonymous/ComfyUI: A powerful and modular stable diffusion GUI with a graph/nodes interface. 1、pip install torch torchvision torc…

【压力测试指南】没有任何文档,小白也可以做的压力测试

前言 一般在执行压力测试之前&#xff0c;会由开发提供出接口文档&#xff0c;包含一些接口的详细参数&#xff0c;便于测试工程师编写测试脚本。但在某些情况下&#xff0c;接口等相关文档缺失&#xff0c;那作为Tester&#xff0c;我们该如何顺利的实施压力测试呢&#xff1…

问道管理:光刻胶概念再度活跃,广信材料两连板,蓝英装备等涨停

光刻胶概念6日盘中再度活泼&#xff0c;截至发稿&#xff0c;扬帆新材、广信资料、蓝英配备“20cm”涨停&#xff0c;盛剑环境亦涨停&#xff0c;高盟新材涨超9%&#xff0c;同益股份、容大感光涨超5%。 值得注意的是&#xff0c;广信资料已连续两个交易日涨停。公司近来在成绩…

快速回顾Intel的发展史,看看你都用过哪些处理器

前言 提到CPU我们第一个想起的就是Intel其次才是AMD&#xff0c;有计算机的地方就有它的身影&#xff0c;Intel一直占据着半导体金字塔的顶端&#xff0c;也一直牵制着整个PC市场&#xff0c;这些年间Intel发布了各种各样的CPU&#xff0c;我大体给大家总结一下&#xff0c;看…

聊聊 HTMX 吧

写在前面 最近看了几篇关于 htmx 的文章&#xff0c;自己也去看了一眼官网&#xff0c;也去油管看了一下当时 htmx 发布会的时候他们的演示&#xff0c;下面说几点我对这个所谓的新型起来的技术的看法&#xff0c; 他的来源是什么 首先说一下他虽然是一个新型的技术&#xff0c…

【每日一题】73. 矩阵置零

73. 矩阵置零 - 力扣&#xff08;LeetCode&#xff09; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[…

一文讲解Transformer

我们本篇文章来详细讲解Transformer: 首次提出在&#xff1a;Attention is all you need (arxiv.org) 简单来说&#xff0c;Transfomer就是一种Seq2seq结构&#xff0c;它基于多头自注意力机制&#xff0c;解决了传统RNN在计算过程中不能够并行化的问题。即相较于RNN而言&…

c语言每日一练(14)【加强版】

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。博主有时会将一些难题综合成每日一练加强版&#xff0c;加强版是特殊的&#xff0c;它仅包含5道选择题&#x…