首页 > 其他分享 >RHEL9基础(四)

RHEL9基础(四)

时间:2024-05-30 20:32:02浏览次数:20  
标签:shell 变量 登录 基础 用户 RHEL9 进程 cpu

变量

变量的概述:存储变化数据的内存空间地址;变化的是数据,不变的是内存的空间地址

数学的概念:x+2=4  x=2

x是变量,2就是变量的值

x是内存空间地址,2是内存的数据

例如:变量ip_address,值是$(ifconfig | grep netmask | awk ‘{print $2}’)

变量ip_addess是不变的,变的是$(ifconfig | grep netmask | awk ‘{print $2}’)

系统想要使用这个值的话,只需要找到ip_addess这个变量即可

变量的组成:

变量名=变量值

变量名:数字、下划线、字母组成;不能以数字开头

定义变量:

A=100   变量名=变量值

export  A=100 变量名=变量值

变量类型:

本地变量:用户自定义的变量

环境变量:存储系统相关的变量

(系统变量)

PATH变量:记录系统中可执行文件的路径了,在此目录中才能够作为命令执行

PS1变量:命令的提示符

引用变量:

$变量名   ${变量名}

查看变量:

set 查看所有的变量(包括本地变量以及环境变量)

env 查看环境变量

本地变量和环境变量的区别:

作用范围:本地变量--->当前的shell中生效

 环境变量--->当前的shell和子shell中生效

取消变量:

unset 变量名

引号和反斜杠

引号和反斜杠都是属于转义字符,是为了去掉后面符号的特殊意义

\ 反斜杠,去掉反斜杠后面单个字符的意义

eg : echo  \$5

单引号:去掉引号内部所有字符的特殊意义(强引用)

双引号:去掉引号内部所有字符的特殊意义(弱引用)有缺陷的

有4个符号无法去掉: $变量引用符号   \ 反斜杠 !历史条目调用  ` `  命令的执行符号

别名

系统当中的别名是为了简化命令的执行;例如grep 命令的别名是grep –color=auto 所以grep才有高亮

定义别名:

alias 别名=’执行的命令’

查看别名:

alias 查看系统中全部的别名

alias 别名  查看指定的别名

取消别名:

unalias 别名

用户登录shell

用户通过不同的登录方式可以获取到不同的shell操作环境;如果你是使用图形化登录,或者是命令行(字符页面)登录,或者是su – 切换用户,都会获取到不同的shell操作环境

类型:

登录shell(理解为用户登录到了系统,一般需要输入账号密码)

图形化登录;字符页面登录;su – 切换用户

非登录shell(理解为用户没有登录到这个系统,只是登录到了shell的操作环境)

su 切换用户;打开虚拟终端/伪终端;执行脚本

区别:

登录shell指登录到了操作系统;

非登录shell指用户获得了shell的操作环境;

它们的区别其实在于登录shell和非登录shell所触发的变量文件(触发shell的文件)是不一样的

变量文件:

/etc/bashrc   /etc/profile   ~username/.bashrc   ~username/.bash_profile

登录shell触发的文件:  su – 用户

/etc/profile   全局文件

/etc/bashrc 全局文件

~username/.bashrc 用户文件

~username/.bash_profile 用户文件

非登录shell触发的文件:

/etc/bashrc

~username/.bashrc

系统中所有的用户 变量A的值都是100,只有user用户变量A的值是1000

在/etc/bashrc中写入 A=100,在~user/.bashrc中写入A=1000

触发变量文件的优先级:

先加载的是全局文件,再加载用户文件

/etc/bashrc  -> /etc/profile  -> ~username/.bashrc -> ~username/.bash_profile

变量文件中推荐定义的方式:

无论是登录shell还是非登录shell,切换用户想要让变量和别名都生效的话,那么就将变量或者别名写入到~username/.bashrc

无论是登录shell还是非登录shell,想要所有的用户的变量和别名都生效的话,那么就写入/etc/bashrc

用户登出shell

触发配置文件:~username/.bash_logout

当退出系统才会触发此文件,图形化的终端标签页退出、注销、重启不会触发;

触发机制: 远程ssh连接退出触发;字符页面exit退出再次登录触发

进程管理

进程是应用程序运行的时候产生的,也是一个程序运行的实例;

在Linux中,运行某个命令或者启动服务,都会有一个进程;

每一个进程在系统中会分配一个唯一的ID号(PID)

当程序结束的时候,PID会被回收,下一次其他的程序运行时可能会将ID分配出去

进程的权限来自于用户的权限,继承用户的权限;哪个用户运行,那么进程就进程哪个用户的UID和GID

ps查看静态进程

    PID TTY          TIME CMD

   2213 pts/0    00:00:00 bash

   5072 pts/0    00:00:00 ps

PID:进程ID号

TTY:得到终端的方式

pts表示伪终端(远程ssh连接、图形化登录)

tty[1-6]  表示终端设备,显示屏直连,tty2表示有桌面的环境

? 表示没有终端,是内核进程

TIME:表示进程的持续时间;0表示刚刚发起或者一直在运行

CMD:运行的命令

w 查看当前系统登录的用户(who)

ps 选项:

ps -a 查看所有终端执行的进程

ps -ax 查看不属于终端的进程

x表示查看内核进程;Tty是? 表示是内核运行的进程

ps -ao user,%cpu,%mem,command

-o 指定选项

ps -ef === ps -aux

-e 查看所有进程

-f  查看用户 PID  PPID C(cpu资源占比) STIME(系统启动时间) command

--sort:指定排序的参数;例如 ps -aux --sort=-%cpu  按照cpu占比大小进行降序

ps -aux --sort=%cpu   | tail

eg:ps -aux --sort=-%cpu  | head  查看cpu占比最高的进程

  ps -aux --sort=%cpu  | tail   查看cpu占比最高的进程

RHEL9中,有考题会考到,编写一个脚本监控系统状态,监控CPU和内存的资源状态

top实时查看系统进程

默认每3秒刷新一次

-d 指定刷新间隔时间(top -d 2)

-p 查看指定pid的进程状态

top - 11:38:40 up 9 days,  2:42,  2 users,  load average: 0.00, 0.00, 0.00

load average:平均负载时间(每分钟、每5分钟、每15分钟)

和CPU相关

以单核CPU为例:

以每分钟为例

如果负载小于1,表示CPU空闲

如果负载等于1,表示CPU全力运行

如果负载大于1,表示CPU超负荷

进程有父进程和子进程的概念

系统中有两个较为特殊的进程:僵尸进程、孤儿进程

如果是僵尸进程,一定要特别重视,会消耗系统的cpu 内存资源

如果是孤儿进程,不会占用系统的cpu 内存资源,PID为1的进程会接管孤儿进程然后关闭它

产生的原因:

系统中的进程有父进程的概念,父进程会派出子进程干活;

孤儿进程:(父进程退出了,子进程还在干活;父进程先一步比子进程退出)

产生原因:用户手动关闭父进程或者程序BUG导致父进程比子进程先退出

派出来的子进程在干活中,父进程可能因为程序BUG或者特殊原因退出了,子进程就成为了孤儿进程。这个时候系统PID为1的进程会接管孤儿进程(rhel7是init,rhel7以后是systemd,是系统启动运行的第一个进程,也是系统的守护进程),然后关闭孤儿进程。

僵尸进程:(子进程已经干完活了,要告诉父进程我的活儿已经干完了,需要父进程接受我的信息,释放我)

产生原因:程序BUG或者人为故意放出病毒,子进程干完活儿了向父进程发送退出的信息,父进程没接收到,进程就会一直向父进程发送,成为僵尸进程

0.4 us,  0.6 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.2 hi,  0.1 si,  0.0 st

us:用户空间占用cpu百分比

例如shell程序、开启的应用软件、桌面等

sy:内核空间占用cpu百分比

例如系统分配内存、执行的IO操作等

ni:用户自定义优先级的进程占用cpu百分比

id:cpu的空闲百分比

wa:等待磁盘IO操作的时间

时间越长,表示cpu和磁盘的性能差距越大,要检测是不是系统有非常的IO

hi:硬中断

表示硬盘、网卡等硬件设备发送CPU的中断消息,CPU处理消耗的时间

si:软中断

表示软件发送CPU的中断消息,CPU处理消耗的时间

st:虚拟机等待cpu的时间

只有当系统是虚拟机的时候关注此项

top命令过程可以使用一些交互式的命令

1 查看每个逻辑cpu的资源信息

M 按照占用内存的百分比进行排序

m 查看内存进度条模式的百分比

P 按照CPU的百分比进行排序

c 显示命令的名称

T 根据占用的时间进行排序

k 杀死pid

pgrep 通过信息查询进程

-U 通过用户名查找进程

-G 通过用户组查找进程

-u 通过uid查找进程

-g 通过gid查找进程

-P 通过父进程查找子进程

-l  打印命令

-o 如果有多个进程运行,则查找最早运行的进程

-n 如果有多个进程运行,则查找最晚运行的进程

eg:pgrep -n / -o  vim

-d 指定分隔符(shell脚本中应用的较多)

可以把过滤出来的进程根据分隔符进行分割

pidof 根据进程名称查询

pgrep 模糊查询

pidof 精确查询

eg: pidof ssh   和  pgrep  ssh

只要包含关键字ssh,pgerp就可以查询到

pidof必须写全

进程之间的通信方式

进程和进程直接按的沟通?

管道、信号、消息队列、共享内存、socket套接字等

Linux中默认使用信号进行通信

 当进程接受到信号后,优先执行信号的操作;

信号的产生:

内核产生;用户手动发送信号

常用的信号:

列出信号  kill -l

signal 15   默认,关闭程序

signal  9 强制退出 (一般不建议使用,会造成文件无法写入数据)

rhel9中,vim更加灵活,使用-9  强制结束不会出现.swap文件(vim 文件 命令模式)

rhel8中,使用-9 强制结束会出现.swap文件(vim 文件,无论是什么模式)

signal 1  重新加载配置文件

发送信号:

根据进程id    kill 工具

根据进程名     killall  (会一并关闭所有的进程)

结束一整个中断的进程  pkill  -t  pts/2

pkill  : ps和kill结合

可以结束一个终端、一个用户的所有进程

pkill -t tty1    结束终端1下的进程

pkill -kill  / -9   -t  pts/2   踢用户

pkill -u 用户     结束指定用户的所有进程

pkill  -9  vim 强制结束进程

进程的优先级

在系统繁忙的时候,高优先级的进程最优先分配CPU资源

优先级越高,进程越优先分配cpu资源

Linux进程中有两种优先级:

PR 动态优先级 (内核自动调整)

NI  静态优先级 (用户手动调整)

ni优先级的范围:-20~19  ;(数字越小,优先级越高;root用户才能修改ni值)

调整ni值

修改已经启动的ni值: renice -n 15  8004

在启动进程的时候调整ni值:nice -n -20  vim a

后台作业

将一个进程放入到后台执行,让前端终端能够输入命令,不被进程占用;

格式: 命令  & (&符号表示将作业放入后台)

jobs查看当前终端的作业

kill %1 结束作业

bg %1 后台运行

fg %1 前台运行

Ctrl+z 或者 kill  -19   停止作业

标签:shell,变量,登录,基础,用户,RHEL9,进程,cpu
From: https://blog.csdn.net/weixin_52664066/article/details/139333830

相关文章

  • 01--nginx基础
    前言:本文用来整理一下nginx的用法,应该是本人中间件专栏的第一篇文章,这里开始概念和实操将会同样重要,面试时基本概念的理解非常重要,深有体会,不会再让概念成为压死骆驼的稻草。1、nginx简介Nginx(enginex)是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMAP/......
  • 【c++基础(五)】内存管理--new
    1.前言在C语言中,有四个内存管理函数:malloc,calloc,realloc和free但是使用起来他们却是非常的不方便:int*p1=(int*)malloc(sizeof(int)*n);int*p2=(int*)calloc(4,sizeof(int));int*p3=(int*)realloc(p2,sizeof(int)*10);同时这里也会出现一个问题,malloc不会进......
  • 【c++基础(四)】类和对象下--初始化列表等概念
    1.前言类和对象到这里基本已经接近尾声,本篇文章主要介绍一些与类和对象有关的相关细节,在后续使用类和对象中也有可能用的到。本章重点:本篇文章重点讲解初始化列表,友元,匿名对象和类中的static成员,以及类中的内部类的概念。 2.初始化列表 在谈论初始化列表之前就要再次......
  • 代码随想录算法训练营第四十四天|01 背包、动态规划:01背包理论基础(滚动数组)、416. 分
    01背包文档讲解:代码随想录题目链接:46.携带研究材料(第六期模拟笔试)有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 暴力解法:每个物品都有放与不放两种状态......
  • MySQL数据库-基础
    MySQL数据库P1数据库的作用2022/6/191.简介MySQL是一个[关系型数据库管理系统]由瑞典[MySQLAB](https://baike.baidu.com/item/MySQLAB/2620844)公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relat......
  • M-LAG(跨设备链路聚合)二层基础配置
    一、拓扑结构  二、接口配制S6850_1S6850_2interfaceVlan-interface999ipaddress1.1.1.1255.255.255.252#interfaceFortyGigE1/0/53portlink-modebridgeportaccessvlan999#interfaceGigabitEthernet1/0/1portlink-modebridgecomboenablefiber......
  • 汇编:x86汇编环境搭建与基础框架(32位)
    32位汇编代码编写环境:VisualStudio(笔者用的版本为2017);先来说一下在VisualStudio2017中编写汇编代码的准备操作:①创建空项目②设置项目属性:平台工具集设置为VisualStudio2015(v140),因为一些库再2015版本后取消了;③为该项目生成自定义依赖项;勾选masm文件④设置汇编......
  • 复合材料力学基础
    各向异性材料的弹性力学基础复合材料宏观力学分析的基本假设·)所研究的各向异性弹性体为均质连续固体·2)线弹性范围内,服从广义虎克定律.·3)小变形各向异性与各向同性弹性力学的基本方程的差别差别在于:本构方程其它平衡方程,几何方程,协调方程,和边界条件等则完全相同......
  • 编程奇境:C++之旅,从新手村到ACM/OI算法竞赛大门(基础语法)
    踏入C++王国的神秘之门,首要任务是装备上基础语法这把万能钥匙,它不仅是你与代码世界对话的初级咒语,更是构筑编程魔法塔的基石。想象自己是一位即将踏上征途的勇士,先要学会站立、行走,方能奔跑、飞跃。基础语法:勇者的起跑线顺序结构:这就像是一场精心策划的冒险,你的每一个指令—......
  • TBL的基础数据结构
    局部类型:在哪里定义的变量,就是那一块的局部变量。生命域就是Events里的大括号内。直接按照数据类型数据名;的形式定义。全局类型:全局变量,在定义的时候要在数据类型的前面加上global,表示这个变量叫做全局变量。Global数据类型变量名;时间序列类型:Series<数据类型>变量名;可以回......