【Linux进行时】环境变量and进程优先级

这篇具有很好参考价值的文章主要介绍了【Linux进行时】环境变量and进程优先级。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

1.环境变量

❓首先一个问题:我写的代码(这个代码很简单,不用管)编译之后运行的时候为什么要带./ ? 或者说我怎么才可以让我不用带./ ?

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

💡.代表当前文件下,/是文件分隔符,这是用相对路径的方式来访问,所以我们也可以用绝对路径

myproc和ls都是指令,ls可以直接输入,但是我们直接输入myproc就不可以,只不过ls是纳入了linux的常用指令

🔥原因:我们的默认的程序在系统是会存在一个环境变量PATH,这个环境变量可以帮助我们通过该变量来在系统中在特定路径下去搜索命令

1.0.环境变量是什么?

window系统也有环境变量

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

❓main函数可以带参吗,最多带几个呢

💡可以,常见是两个,最多是三个

image-20230814170347499

🔥指针和指针变量是两个概念

指针是地址,能表示地址都能叫指针;指针变量是一个变量开4个字节

envp是一个环境变量表:

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

❓那么什么叫环境变量呢?

💡本质就是一个内存级的一张表,这张表由用户在登录系统的时候,进行给他特定用户形成属于自己的环境变量表环境变量中的每一个,都有自己的用途,有的是进行路径查找到,有的是进行身份认证的,有的是进行动态库查找的,有的是用来确认当前路径等等,每一个环境变量都有自己的特定应用场景,每一个元素都是kv结构的

❓那么环境变量对应的数据,都是从哪里来的呢?💡系统的相关配置文件中读取进来的

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

🔥.=source

.也是个命令,让后面的配置文件立马生效

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

argv就是一个表

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

1.1.环境变量PATH概念:

  • 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数

  • 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但

    是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

  • 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

常见环境变量

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash。

环境变量的组织方式:

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串

**🔥前置:**在 Linux 命令行中,我们也是可以定义变量的,命令行变量分为两种:

  • 普通变量
  • 环境变量(具备全局属性)

1.2.查看环境变量方法

🔥查看所有的环境变量:env

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

#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声明。

🔥系统中存在一个环境变量path,但是我们要查看的话,echo $环境变量名

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

💡.根本原因是ls会在我们特定的环境变量所知名的路径中,而我们的可执行程序并没有在那个路径中,需要我们指明路径

环境变量 PATH
PATH中会承载多种路径,中间用冒号 ( : ) 作为分隔符。

我们再执行某一个程序时,比如执行 ls 时,我们的系统识别到 ls 的输入时,会在上面路径中逐个搜索,只要在特定的路径下找到了 ls,就会执行特定路径下的 ls 并停止搜索。

换言之,PATH
PATH 就提供了环境变量,可执行程序搜索的路径。

🔥可以查指令的路径:which 指令名

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

🔥设置一个新的环境变量:export 环境变量名=路径

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

❓那我们是不是可以试着把我们的程序加载到环境变量中呢?🔥显然是可以的啊

如果你想让你的环境变量设置永久有效的话,是需要更改配置文件的,该配置文件在系统当中,跟云服务器没有关系。

🔥把一个环境变量加到配置文件中export 环境变量名=$PATH:路径

在linux中,把可执行程序,拷贝到系统默认路径下,让我们直接访问的方式——相当于Linux下软件的安装!

export PATH=$PATH:/home/xiaolu/xiaolu_task/lesson2

!这里不是+号是等号

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

🔥清除环境变量:unset 环境变量名

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

🔥显示本地定义的shell变量和环境变量:set

🔥环境变量可以通过函数获取:getenv

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

char *user=getenv("USER");
  7   if(user==NULL)perror("getenv");
  8   else printf("USER:%s\n",user);

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

1.3.常见环境变量

我们先通过env查看一下所有的环境变量

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

不知道大家有没有关注过,每次登陆服务器默认所处的路径?就是默认所处的工作目录。

root 用户的工作目录和普通用户的工作目录不同,那 Linux 是如何知道的呢?

  • HOME:指定用户的主工作目录(即用户登陆到 Linux 系统中时,默认的目录)

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

  • PWD:显示当前目录。

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

  • USER:显示当前谁在用系统

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

  • SHELL:当前用户用的是哪种Shell。

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

🔥得益于 Linux 存在历史命令的记录功能,我们可以在 Xshell 里 ↑ ↓ 显出历史命令,就像这样:

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

  • HISTSIZE:保存历史命令记录的条数。

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

我们可以通过history指令去查看我们之前用的指令

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

  • HOSTNAME:主机的名称,应用程序如果要用到主机名的话,通常是从这个环境变量中取得。

操作系统

  • LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

1.4.特性总结

命令行中启动的进程,父进程全部都是 bash 。

环境变量是可以被所有的子进程继承的——所以环境变量有全局性

本地变量和环境变量的根本区别在于:改变量是否能被子进程所继承

本地变量只在shell内部有效,不能被子进程继承

2.进程优先级

权限是能不能的问题,优先级是谁先执行的问题

❓为什么会有优先级?💡CPU资源有限

2.1.优先级概念

  • cpu资源分配的先后顺序,就是指进程的优先权(priority)。

  • 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。

  • 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整

    体性能

2.2查看进程

🔥查看进程的优先级: ps -l

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

我们很容易注意到其中的几个重要信息,有下:

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

2.3.PRI and NI

PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高

那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值

  • PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice
  • 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行
  • 所以,调整进程优先级,在Linux下,就是调整进程nice值
  • nice其取值范围是-20至19,一共40个级别。

PRI代表当前进程的优先级 ni代表当前进程的优先级修正数据

  • 优先级需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进

    程的优先级变化。

  • 可以理解nice值是进程优先级的修正修正数据可以通过代码来调,也可以用指令,也可以用top

2.4.进程优先级的修改

🔥修改优先级:top+按r 输入优先级的数值

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

输入pid,然后输入ni值然后退出

我们假设给一号进程 -20的nice值的话,会出现报错

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis

如果你执意修改,你须具备 超级用户 的权限 —— 这里我们 sudo top 就行

值得强调的是,Linux 不允许用户无节制地设置优先级,设置的优先级范围不能逾过下列区间:[-20,19]

**注意:**每次设置优先级,这个 old 优先级都会被恢复成为 80 (跟上一次没关系)

【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis
【Linux进行时】环境变量and进程优先级,Linux,操作系统,linux,java,redis文章来源地址https://www.toymoban.com/news/detail-716906.html

到了这里,关于【Linux进行时】环境变量and进程优先级的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux进行时】磁盘文件结构

    上篇文章,我们提及文件是存放在磁盘当中,本篇文件我们来了解一下磁盘的结构!!! ❓什么是磁盘? 💡磁盘(disk)是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用

    2024年02月05日
    浏览(37)
  • Linux 使用 PTP 进行时间同步

    PTP(精确时间协议)是一种用于在网络中进行时钟同步的协议。当与硬件支持结合使用时,PTP 能够达到亚微秒的精度,这种精度远高于 NTP 协议。 PTP 时间同步协议的支持分为内核空间和用户空间两部分。在 Linux 系统中,PTP 协议的实际实现称为 LinuxPTP,它是 PTPv2 根据 Linux 的

    2024年04月11日
    浏览(33)
  • 【Linux】进程优先级 && 进程切换 && 环境变量

    目录 一、进程优先级  1、优先级概念  2、优先级特点  3、修改Linux下的优先级 二、进程切换  1、进程特性  2、进程切换 三、环境变量  1、基本概念  2、常见环境变量  3、查看环境变量方法  4、PATH环境变量  5、和环境变量相关的命令  6、环境变量的组织方式  7、通过

    2024年02月11日
    浏览(41)
  • 【Linux】进程状态|优先级|进程切换|环境变量

    💕 运行队列: 进程是如何在CPU上运行的:CPU在内核上维护了一个运行队列,进行进程的管理。让进程进入队列,本质就是将该进程的task_struct 结构体对象放入运行队列之中。这个队列在内存中,由操作系统自己维护。 💕 运行状态: 运行状态 进程PCB在运行队列里就是运行

    2024年02月02日
    浏览(31)
  • 【Linux】进程优先级 + 环境变量

    在学完进程状态之后,本章我们将来学习一下环境变量,还有进程优先级等🙋🙋🙋…… 本文实验系统: CentOS 7.6 ~ 优先级是权限吗? 在之前我们讲解过什么是权限:👉 传送门 我们这里讲的优先级并不是权限,那么优先级到底是什么呢? 如果我们说权限是能不能的问题的

    2024年02月05日
    浏览(38)
  • 【Linux】环境变量和进程优先级

    目录 环境变量 什么是环境变量 系统结构 系统接口 深度解析 命令行参数 进程优先级 优先级查看 优先级修改 进程间的概念 🍮平时在使用  Linux  的时候,总会使用  ls  、 pwd  这类的命令,我们也都知道这些命令也是  C  语言写的,但是为什么我们自己写的可执行程序需

    2023年04月27日
    浏览(46)
  • 【Linux】探索Linux进程优先级 | 环境变量 |本地变量 | 内建命令

    最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:Linux入门

    2024年02月04日
    浏览(54)
  • 【Linux】进程优先级 && 命令行参数 && 环境变量

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一、进程优先级 1.1、进程优先级的基本概念 1.2、优先级 VS 权限 1.3、为什么要有优先级? 1.4、Linux的优先级的特点 查看方式 1.5、PRI and NI 1.6、用top命令更改已存在进程的nice 1.7、其

    2024年03月25日
    浏览(36)
  • [Linux 进程(三)] 进程优先级,进程间切换,main函数参数,环境变量

    排队的本质就是确认优先级。 优先级是什么?它也是PCB中的一个整型字段 , 数值越小,优先级越高 。是得到某种资源的先后顺序。 Linux进程的优先级数值范围:60~99。 Linux中默认进程的优先级都是80。 为什么要有优先级 ?本质是资源不足。 谈到优先级,就不得不说我们以

    2024年01月21日
    浏览(40)
  • 【Linux】环境变量与进程优先级知识点

    环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。 PATH : 指定命令的搜索路径 HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录) SHELL : 当前Shell,它的值通常是/bin/bash USER:记录了当前登录的用户是谁 主要以PATH进行学习

    2023年04月23日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包