RHCSA教程管理Linux软件包和进程

RPM管理工具

RPM是红帽包管理(Redhat Package Manager)的缩写。

  • 由Red Hat公司提出的一种软件包管理标准。
  • 是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)。
  • RPM功能通过rpm命令使用不同参数来实现。

rpm软件包中包含有关于本软件包的相关信息, 便于对软件包信息进行查询。RPM软件包的典型
命名格式:软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm,比如 zsh-5.0.2-14.el7.x86_64.rpm

zsh-50214el7x8664
软件名主版本号次版本号修订号软件发布次数发行商CPU架构平台支持系统位数

rpm包相关网站

rpm安装

参数说明
-i,–install安装软件包
–nodeps不验证软件包依赖
-v,–verbose提供更多的详细信息输出
-h,–hash软件包安装的时候列出哈希标记
-U软件包升级
-e软件包卸载

通过本地光盘镜像文件安装rpm包

#安装tree包
[root@server Packages]# rpm -ivh tree-1.7.0-15.el8.x86_64.rpm
#卸载tree包
[root@server Packages]# rpm -evh tree

从网上下载rpm包并安装

http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5. 02-1.el8.x86_64.rpm

[root@server ~]# wget
http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-
1.el8.x86_64.rpm
[root@server ~]# rpm -ivh sl-5.02-1.el8.x86_64.rpm

rpm查询功能

参数说明
-a查询所有已安装的软件包
-l显示已安装软件包的相关文件列表和信息
-f查询文件所属软件包
-i显示已经安装的rpm软件包信息
查询某个包有没有安装(包名不能写错)

在这里插入图片描述

查询所有已经安装的包

在这里插入图片描述

查询安装该包后会产生哪些文件

在这里插入图片描述

查询该文件由哪个软件包产生

在这里插入图片描述

rpm包签名验证

系统中数字证书的位置

在这里插入图片描述

导入密钥

在这里插入图片描述

卸载密钥(不推荐)
 [root@server ~]# rpm -e gpg-pubkey-f21541eb-4a5233e7

YUM/DNF管理工具

YUM (Yellow dog Updater,Modified) 则能在线下载、 安装、 卸载、 升级rpm软件包等任务,并且能够自动查找并解决rpm包之间的依赖关系后,一次性完成所有具有依赖关系rpm包的安装,而无需管理员逐个、
手工地去安装每一个rpm包。
要实现YUM的功能,有赖于三个机制的建立

  • 其一是需要有一个包含各种rpm安装文件的软件仓库(即yum源)
  • 其二是有软件仓库的仓库数据库 ,其中收集了软件仓库中所有rpm包的头部信息包含了该包的描述,功
    能,提供的文件,依赖关系等信息
  • 其三是有软件仓库的地址等信息 。

(1)YUM/DNF 功能

  • 在线下载、 安装、 卸载、 升级rpm软件包
  • 自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐个、 手工的去安装每一个rpm包
    (2)如何实现yum/DNF安装
    系统会去读取 /etc/yum.repos.d/ 目录下的 .repo 结尾的文件,从该文件中读取以下内容实现装包:
    包含各种rpm安装文件的软件仓库(rhel8有两个仓库,rhel7只有一个仓库)
  • BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库
  • AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库
    软件仓库的地址信息
    (3)配置 .repo 文件,即yum源

建立本地源

[root@kongd ~]# mkdir /media/cdrom

#将本地光盘挂载至本地目录/media/cdrom下
[root@server ~]# mount /dev/cdrom /media/cdrom
[root@server ~]# cat /etc/yum.repos.d/rhel8.repo
[RHEL8-BaseOS]
name=RHEL8-BaseOS
baseurl=file:///media/cdrom/BaseOS
gpgcheck=0
#gpgcheck=1 #如果gpgcheck为1,需要写秘钥文件路径
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[RHEL8-Appstream]
name=RHEL8-Appstream
baseurl=file:///media/cdrom/AppStream
gpgcheck=0
#gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[root@server ~]# yum repolist
#验证能否装包成功
[root@server ~]# yum install bind-utils -y

配置互联网源

下载:

[root@server ~]# wget https://mirrors.tuna.tsinghua.edu.cn/redhat/rhel/rhel-8-beta/rhel-8-beta.repo -P /etc/yum.repos.d/

更改:启用源

[root@server ~]# sed -i 's/enabled = 0/enabled = 1/' /etc/yum.repos.d/rhel-8-beta.repo

验证:

[root@server ~]# yum repolist

清华源镜像站点为https://mirrors.tuna.tsinghua.edu.cn/
中国科技大学镜像站点https://mirrors.ustc.edu.cn/
网易开源镜像站http://mirrors.163.com/

yum(dnf)工具管理软件包

yum install [-y] 包名
yum groopinstall 包组名
yum install [-y] 包名 安装指定的软件包,-y则在工作过程中需要使用者响应, 这个选个参数可以直接
回答yes
yum update [-y] 包名 升级指定的软件包或主机中所有已安装的软件包
yum remove [-y] 包名 卸载已经安装在系统中的指定的软件包
yum provides 文件名 查找指定的文件属于哪个包;
yum info 包名 查看指定软件包的详细信息
yum repolist [all] 查看系统中yum资源库配置信息
yum search 模糊包名 查看模糊包名的软件包
yum grooplist 查看仓库里而所有包组
yum groupinfo 包组名 查看指定包组里而的详细信息
yum groupinstall 包组名 安装指定包组里面的所有包
yum list all 列出仓库里所有可安装的软件包
yum list installed [包名] 列出己经安装的所有的或指定的rpm包(包名中可使用匹配符)
yum clean packageslall 清除下载到本机的指定的软件包或所有软件包的yum源缓存
yum whatprovides /etc/fstab 查看这个文件是由那个包提供的

RHEL8相应地在yum命令下,增加了一个module子命令。
多了个模块(module)、模块下多了个序列(Stream)、序列下多了个组合(profile)
YUM = YellowDog Update Modifier
DNF = Dandified YUM

# yum module -h
# yum module list 列出模块
# yum module list perl 列出指定模块
[root@kongd ~]# yum module list postgresql
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use
subscription-manager to register.
上次元数据过期检查:0:00:55 前,执行于 2019年12月27日 星期五 17时38分51秒。
RHEL8-Appstream
Name Stream Profiles Summary
postgresql 10 [d] client, server [d] PostgreSQL
server and client module
postgresql 9.6 client, server [d] PostgreSQL
server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
安装9.6版本
[root@kongd ~]# yum install @postgresql:9.6
或者
[root@kongd ~]# yum module install postgresql:9.6
安装模块的命令用法是:
# dnf [options] module install <module_spec>...
启用module stream
如果你有通过其他外部存储库安装的其他版本,请先卸载它,然后启用模块:
# dnf remove mongodb-server
# dnf module enable mongodb:3.6
这将启用module stream并使包RPM中的流RPM可用,模块化依赖关系在启用时解析并检查,但不会自动启
用,enable命令也可用于切换module streams。
禁用module stream
要禁用模块并使所有相关module streams不可用,请使用:
# dnf module disable <module-name>
列出已启用的module streams
要列出已启用的module streams,请执行:
# dnf module list --enabled
获取module stream详细信息
打印有关给定module stream的详细信息的语法是:
# dnf module info <module_spec>
重置模块状态
你还可以重置模块状态,以便不再启用或禁用它:
# dnf module reset <module_spec>

源代码编译

(1)使用源代码安装软件的优点
由于自由软件的最新版本大都以源码的形式最先发布,编译安装可以获得软件的最新版本,及时修
复bug
如果当前安装的程序无法满足需求,用户可以根据需要重新配置、自由修改源代码,加入新的功能
(2)编译需求
确认源代码编译环境:需安装支持 C/C++程序语言的编译器 yum install gcc
下载相应的源码软件包
(3)安装

解包 —— tar
解包、释放出源代码文件
配置 —— ./configure
针对当前系统、软件环境,配置好安装参数
编译 —— make
将源代码文件变为二进制的可执行程序
安装 —— make install
将编译好的程序文件复制到系统中

案例

[root@server ~]# cd /opt/
[root@server opt]# curl https://mirrors.tuna.tsinghua.edu.cn/gnu/wget/wgetlatest.tar.gz -o wget-latest.tar.gz
[root@server opt]# tar xf wget-latest.tar.gz
[root@server opt]# ll
total 4968
drwxr-xr-x. 14 root root 4096 Feb 27 00:27 wget-1.21.3
-rw-r--r--. 1 root root 5079864 Jun 1 09:36 wget-latest.tar.gz
[root@server opt]# cd wget-1.21.3/
[root@server wget-1.21.3]# yum install openssl openssl-devel make -y
[root@server wget-1.21.3]# ./configure --with-ssl=openssl #针对当前系统、软件环
境,配置好安装参数
[root@server wget-1.21.3]# make # 将源代码文件编译为二进制的可执行程序
[root@server wget-1.21.3]# make install #将编译好的程序文件复制到系统中

(4)测试是否安装成功

[root@server ~]# wget www.baidu.com

进程

程序、进程、线程

程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下
进程:进程是已启动的可执行程序的运行实例。

  • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
  • 进程还具有并发性和交往性,而程序却是封闭的

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一
条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的
任务。

  • 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
  • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才
    能被执行。

进程分类

在这里插入图片描述

查看进程

w 查看当前系统信息
在这里插入图片描述

w 显示信息的含义:
JCPU: 以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的 CPU时间会显示在这里
PCPU : cpu 执行程序消耗的时间
WHAT: 用户下在执行的操作
load average : 分别显示系统在过去 1、 5、 15分钟内的平均负载程度。
FROM : 显示用户从何处登录系统,“: 0”的显示代表该用户时人 X Windows 下,打开文本模式窗口登
录的
IDLE: 用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
查看个别用户信息: w [ 用户名 ]

ps命令

  • ps显示某个时间点的程序运行情况

-a :显示所有用户的进程
-u :显示用户名和启动时间
-x :显示 没有控制终端的进程
-e :显示所有进程,包括没有控制终端的进程
-l :长格式显示
-w:宽行显示,可以使用多个 w 进行加宽显示
-f:做一个更完整的输出

在这里插入图片描述解释:
说明:
F:代表这个程序标志(process flags),说明这个程序的权限。常见号码有:4表示此程序的权限为root;1表示此子程序仅进行复制(fork)而没有实际执行(exec)
S:代表这个程序的状态(STAT),主要的状态有:
R(Running):该程序正在运作中;
S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒;
D:不可被唤醒的睡眠状态,通常可能是在等待I/O的情况;
T:停止状态(stop),可能是在工作控制(后台暂停)或traced状态;
Z(Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外。
+:位于后台的进程组
UID/PID/PPID:代表此程序被该UID所拥有/程序的PID号码/此程序的父进程PID号码。
C:代表CPU使用率,单位为百分比;
PRI/NI:Priority/Nice的缩写,代表此程序被CPU所执行的优先顺序,数值越小代表该程序越快被CPU执行。
ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel funcition,指出该程序在内存的哪个部分,如果是running的程序,一般会显示-。SZ代表此程序用掉多少内存,WCHAN表示目前程序是否运作中,若为-表示正在运行。
TTY:登入者的终端机位置,若为远程终端登入则使用动态终端界面(pts/n)。
TIME:使用掉的CPU时间,即此程序实际花费CPU运作的时间。
CMD:触发此进程的指令是什么。

查看所有用户执行的进程的详细信息

在这里插入图片描述### 查看当前用户的进程
在这里插入图片描述# ps aux |less
在这里插入图片描述解释:
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)

  • R 运行
  • S 可中断睡眠 Sleep
  • D 不可中断睡眠
  • T 停止的进程
  • Z 僵尸进程
  • X 死掉的进程
  • s 进程的领导者,父进程
  • < <优先级较高的进程
  • N N优先级的进程
  • +表示是前台的进程组
  • l 以线程的方式运行
    START: 进程的启动时间
    TIME: 进程占用CPU的总时间
    COMMAND: 进程文件,进程名
[root@server ~]# ps aux --sort %cpu |less #按照进程占用cpu百分比排序显示进程
[root@server ~]# ps aux --sort -%cpu |less
[root@server ~]# ps aux --sort rss |less
[root@server ~]# ps aux --sort -rss |less
[root@server ~]# ps -le
#自定义显示字段
[root@server ~]# ps axo user,pid,ppid,%mem,command
#查看进程树
[root@server ~]# pstree

查看指定进程的PID

[root@server ~]# ps aux | grep sshd
[root@localhost ~]# pgrep -l sshd
[root@localhost ~]# pgrep sshd
[root@localhost ~]# pidof sshd

top命令

[root@server ~]# top
[root@server ~]# top -d 1
[root@server ~]# top -d 1 -p 10126 查看指定进程的动态信息
[root@server ~]# top -d 1 -p 10126,1
[root@server ~]# top -d 1 -u apache 查看指定用户的进程
[root@server ~]# top -d 1 -b -n 2 > top.txt 将2次top信息写入到文件

在top执行过程中可以使用的按键命令:

交互式命令说明
h或?帮助
M按内存的使用排序
P按CPU使用排序
N以PID的大小排序
R对排序进行反转
f自定义显示字段
l显示所有CPU的负载
W保存top环境设置

信号控制进程

给进程发送信号
[root@localhost ~]# kill -l #列出所有支持的信号
编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断^C
3) SIGQUIT 键盘退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20)SIGTSTP 暂停^Z
[root@server ~]# killall vim #给所有vim进程发送信号
[root@server ~]# killall httpd

作业控制

作业控制是一个命令行功能,允许一个shell 实例来运行和管理多个命令。
如果没有作业控制,父进程fork()一个子进程后,将sleeping,直到子进程退出。
使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行期间返回接受其他命令。
foreground, background, and controlling terminal
foreground: 前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
background: 后台进程没有控制终端,它不需要终端的交互。

[root@server ~]# sleep 3000 & #运行程序(时),让其在后台执[root@server ~]# sleep 4000 #ctrl+z可以将前台的任务放到
后台中暂停
[2]+ Stopped sleep 4000
[root@server ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
root 8896 0.0 0.0 100900 556 pts/0 T 12:13 0:00 sleep 4000
#查看当前终端放在后台的进程( jobs )
[root@server ~]# jobs
[1]- Running sleep 3000 &
[2]+ Stopped sleep 4000
+表示最近被放到后台的工作,-表示最近第二个被放到后台中的工作,超过第三个就不会有+/-符号存在了
[root@server ~]# bg %2 #让作业2在后台继续运行
[root@server ~]# fg %1 #将作业1调回到前台
[root@server ~]# kill %1 #kill 1,终止工作号为1的进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecure

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值