目录
(1)RPM是红帽包管理(Redhat Package Manager)的缩写。
(2)rpm软件包中包含有关于本软件包的相关信息,便于对软件包信息进行查询。RPM软件包的典型命名格式:
RPM管理工具
(1)RPM是红帽包管理(Redhat Package Manager)的缩写。
- 由Red Hat公司提出的一种软件包管理标准
- 是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)
- RPM功能通过rpm命令使用不同参数来实现
(2)rpm软件包中包含有关于本软件包的相关信息,便于对软件包信息进行查询。RPM软件包的典型命名格式:
软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm
eg.
zsh-5.0.2-14.el7.x86_64.rpm
zsh | -5 | 0 | 2 | 14 | el7 | x86 | 64 |
软件名 | 主版本号 | 次版本号 | 修订号 | 软件发布次数 | 发行商RHEL7 | CPU架构平台 | 支持系统位数 |
(3)rpm包相关网站
(4)rpm安装
参数 | 说明 |
-i,--install | 安装软件包 |
--nodeps | 不验证软件包依赖 |
-v,--verbose | 提供更多的详细信息输出 |
-h,--hash | 软件包安装的时候列出哈希标记 |
-U | 软件包升级 |
-e | 软件包卸载 |
【一个ivh装包,一个evh卸包记好喽】
(5)rpm查询功能(rpm -q 常与下面参数组合使用)
参数 | 说明 |
-a | 查询所有已安装的软件包 |
-l | 显示已安装软件包的相关文件列表和信息 |
-f | 查询文件所属软件包 |
-i | 显示已经安装的rpm软件包信息 |
#查询某个包有没有安装(包名不能写错)
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd
#查询所有已经安装的包
[root@localhost ~]# rpm -qa
#查询安装该包后会产生哪些文件
#查询该文件由哪个软件包产生
[root@localhost ~]# rpm -qf /usr/bin/ls
coreutils-8.30-6.el8.x86_64
(6)rpm包签名验证
嘿嘿,走神了没听到
YUM/DNF管理工具
YUM(Yellow dog Updater,Modified),RHEL8中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf(DNF=Dandified YUM),原有的yum命令仅为dnf的软链接,当然依旧可以使用
(1)YUM/DNF功能
- 在线下载、安装、卸载、升级rpm软件包
- 自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐个、手工地去安装每一个rpm包
(2)如何实现yum/DNF安装
系统会去读取/etc/yum.repos.d/目录下的.repo结尾的文件,从该文件中读取以下内容实现装包:
- 包含各种rpm安装文件的软件仓库(rhel8有两个仓库,rhel7只有一个仓库)
- BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库
- AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库
- 软件仓库的地址信息
(3)配置.repo文件,即yum源
- 建立本地源
[root@localhost ~]# mkdir /media/cdrom
#将本地光盘挂载至本地目录/media/cdrom下
#往这个repo文件里写东西喽
[root@localhost ~]# vim /etc/yum.repos.d/redhat.repo
【如果密钥那等于1了,要写密钥文件路径】
【秋之懊悔:我后来发现配置的这玩意激活会过期,我后面用的老师给的网络源比较稳定】
[BASEOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
gpgcheck=0
#gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial【配的两个仓库】
[APPSTREAM]
name=Appstream
baseurl=file:///media/cdrom/AppStream
gpgcheck=0
#看一下仓库有没有
[root@localhost ~]# yum repolist
#验证能否装包成功
[root@localhost ~]# yum install bind-utils -y
【这是我验证的】
建立网络源
阿里云网络源,aliyun的镜像站点为https://mirrors.aliyun.com
【网络源】
centos-8.5.2111-AppStream-x86_64-os安装包下载_开源镜像站-阿里云
写到这种样子
清华源镜像站点为
https://mirrors.tuna/tsinghua.edu.cn/
中国科技大学镜像站点
USTC Open Source Software Mirror
网易开源镜像站
等等……
(4)yum/dnf工具管理软件包
#查看包,包组相关信息
yum repolist [all] #查看系统中yum资源库配置信息
yum list all #列出仓库里所有可安装的软件包
yum list installed [包名] #列出已经安装的所有的或指定的rpm包(包名中可以使用匹配符)
yum info #查看仓库里面所有包租
yum grouplist #查看仓库里面所有包组
yum groupinfo 包组名 #查看指定包组里面的详细信息
#安装、更新包和包组
yum install [-y] 包名
yum update [-y] 包名
yum groupinstall 包组名
#卸载软件包
yum remove [-y] 包名 #卸载已经安装在系统中的指定的软件包
#搜索文件由哪个包产生
yum provides 文件名 #查找指定的文件属于哪个包
yum whatprovides /etc/fstab #查看这个文件是由哪个包提供的
#模糊搜索包名
yum search 模糊包名 #查看模糊包名的软件包
#清空缓存
yum clean packages all #清除下载到本机的指定的软件包或所有软件包的yum源缓存
RHEL8相应地在yum命令下,增加了一个module子命令,多了个模块(module)、模块下多了个序列(Stream)、序列下多了个组合(profile)
[root@localhost ~]# yum module list 列出模块的
[root@localhost ~]# yum module list perl 列出指定(perl)模块
源代码编译
(1)使用源代码安装软件的优点
- 由于自由软件的最新版本大都以源码的形式最先发布,编译安装可以获得软件的最新版本,及时修复bug
- 如果当前安装的程序无法满足需求,用户可以根据需要重新配置、自由修改源代码,加入新的功能
(2)编译需求
- 确认源代码编译环境:需安装支持C/C 程序语言的编译器yum instal1gcc
- 下载相应的原码软件包
(3)安装
(4)测试是否安装成功
[root@localhost ~]#wget www.baidu.com
进程简介
(1)程序、进程、线程
程序:二进制文件,文件存储在磁盘中,例如/usr/bin/目录下
进程:进程是已启动的可执行程序的运行实例。
- 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
- 进程还具有并发性和交往性,而程序却是封闭的
线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
- 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
- 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
(2)进程分类
查看进程
ps命令查看进程
ps显示某个时间点的程序运行情况
-a | 显示所有用户的进程 |
-u | 显示用户名和启动时间 |
-x | 显示没有控制终端的进程 |
-e | 显示所有进程,包括没有控制终端的进程 |
-w | 宽行显示,可以使用多个w进行加宽显示 |
-f | 做一个更完整的输出 |
#查看当前用户的进程
说明:
topml查看进程
语法:top [-d 数字] | [-bnp]
-d | 后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒 |
-b | 以批次的方式执行top,还有更多的参数可用,通常会搭配数据流重定向来将批处理的结果输出为文件 |
-n | 与-b搭配。进行几次top的进程信息 |
-c | 显示进程的整个命令路径,而不是只显示命令名称 |
-s | 使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险 |
top的输出可以分为统计信息区和进程信息区两个部分,即前5行为统计信息区,后面为进程信息区
进程信息区
在top执行过程中可以使用的按键命令:
h或? | 显示帮助信息,给出交互式命令的一些说明 |
k | 终止一个进程,系统将提示用户输入一个需要终止进程的PID |
I | 忽略闲置进程和僵死进程,这是一个开关式命令 |
s | 改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是秒。如果输入小数,就换算成毫秒;如果输入0,系统输出将不断刷新,默认刷新时间是3秒;需要注意的是,如果设置太短的时间,可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大 |
o或者O | 改变top输出信息中显示项的顺序。按小写的a-z键可以将相应的列向右移动,而按大写的A-Z键可以将相应的列向左移动。最后按enter确定 |
f或者F | 从当前显示列表中添加域者删除项,按键之后会显示列的列表,按a-键即可显示或隐藏对应的列。最后按enter确定 |
m | 切换显示内存信息 |
t | 切换显示进程和cpu状态信息 |
r | 重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值,输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权,默认值是10 |
l | 切换显示平均负载和启动时间信息 |
q | 退出top显示 |
c | 切换显示完整命令行和命令名称信息 |
M | 根据驻留内存大小进行排序输出 |
N | 以PID来排序 |
信号控制进程
给进程发送信号
#列出所有支持的信号
常用信号(用的是数字):
1、SIGHUP 重新加载配置
2、SIGINT 键盘中断ctrl^c
3、SIGQUIT 键盘退出
9、SIGKILL 强制退出
15、SIGTERM 终止(正常结束),缺省信号
18、SIGCONT 继续
19、SIGSTOP 停止
20、SIGTSTP 暂停ctrl^z
[root@localhost opt]#killall vim #给所有vim进程发送信号
[root@localhost opt]#killall httpd
eg.
kill -9 vim 【错误示范】
kill -9 6407 【正确】
[root@localhost opt]# ps -aux | grep vim 【过滤一下看与vim有关的】
root 6407 0.0 0.0 12320 1100 pts/0 S+ 16:09 0:00 grep --color=auto vim
作业控制
作业控制是一个命令行功能,允许一个shell实例来运行和管理多个命令,如果没有作业控制,父进程fork()一个子进程后,将sleeping,直到子进程退出。使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让shell可以在子进程运行期间返回接受其他命令。
foreground(fg):前台进程是在终端中运行的命令。该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端,
background(bg):后台进程没有控制终端,它不需要与终端交互。