在这里插入代码片
@[TOC]
一、优先级
1. 概念
RPI进程优先级:值越小越先被执行
NI:nice值,可被执行的优先级的修正数字
新的优先级 = 老优先级 + nice值(NI)
nice取值范围:-20 - 19 一共40个
优先级可以通过系统中的接口设置
man nice man renice
2. 调整优先级
top //之后按r进入修改数值,q退出
调整优先级,这里改的是nice的值
输入了80,但最高是19
3. 优先级调整规则
进行两次修改
renice分别是10 和 5
这里修改都是从80的基准进行加减
**注意:**优先级再怎么设置,也只能是一种相对的优先级,不能出现绝对的
优先级,否则会出现很严重的进程“饥饿问题”(有进程长时间得不到调用)
**调度器:**较为均衡的让每个进程享受到CPU资源
二、环境变量
在Linux中,命令,程序,工具都是可执行文件
而指令为什么不需要指明路径?
1. 查看环境变量
常见环境变量:
PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash
echo $PATH
目录以:分隔,按顺序查找
可以将可执行文件放进这里的目录(但自己的会污染它的命令池)
-
而我们通常说的软件安装,就是将可执行文件放在系统环境变量特定的目录里
-
或者将这里的文件路径导入到目录里
export PATH=$PATH:地址(可以通过pwd获得)
直接使用文件名即可运行(但注意这里文件名一定要比较特殊/不容易重复),不然是没有反应的
windows底下也有环境变量
为什么两个用户登录默认的文件路径不同?
因为环境变量不同
echo $HOME
查看shell的环境变量
echo $SHELL
查看各种环境变量信息
env
环境变量()本质:是0S在内存/磁盘文件中开辟的空间,用来保存系统相关的数据。
2. 本地变量
本次登录有效
a=10
echo $a
取消本地变量
unset a
- set 显示本地变量和环境变量
set
3. 代码获取环境变量
- 获取指令内容
1 #include <iostream>2 #include <cstdlib>3 #include <unistd.h>4 5 using namespace std;6 7 int main(int argc, char* argv[])8 {
9 for(size_t i = 0; i < argc; i++) 10 {
11 cout << "ARGV= " <<argv[i]<< endl;12 }13 return 0;14 }
命令都看作字符串,argc决定有效字符串个数
指令有很多选项,用来完成同一个命令的不同子功能
选项底层使用的就是命令行参数,通过控制条件(argv的内容)来调整指令
- 获取环境变量信息
int main(int argc, char* argv[], char* env[])
前面的信息就相当于env的数组来调控的
- 因为env 是个数组,元素都是字符串 char* 所以系统提供了一个第三方变量environ获取
#include <stdio.h>
int main()
{
extern char **environ;int i = 0;for(; environ[i]; i++){
printf("%s\n", environ[i]);}return 0;
}
- 其他获得环境变量的方法
man getenv
16 int main()17 {
18 cout << "home:" << getenv("HOME") << endl;19 cout << "path:" << getenv("PATH") << endl;20 return 0;21
4. 环境变量有全局属性
可以被子进程继承
命令行上启动的进程,父进程都是bash
而本地变量不具有全局属性,只有将本地变量添加到环境变量内部。
再次启动一个程序才有bash
export 本地变量名称