目录
第七天
7.1 RPM管理工具
RPM是红帽子包管理(Redhat Package Manager)的缩写。
■ 由Red Hat公司提出的一种软件包管理标准。
■ 是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)。
作用:对发行的 RPM格式的软件包进行安装 、査询、 更新、升级、 校验、 卸载以及生成.rpm格式的软件包等
■ RPM功能通过rpm命令使用不同参数来实现。
rpm:软件包_ 压缩存贮,拥有一个头文件,其中包含有关于本软件包的相关信息, 便于对软件包信 息进行查询。
rpm软件包安装 软件包升级: rpm -Uvh [rpm包名] 。
rpm软件包卸载
rpm卸载: rpm -e [rpm包名]
如果有依赖,导致无法卸载,可以使用--nodeps参数忽略依赖强制卸载。
7.2 YUM管理工具
YUM (Yellow dog Updater,Modified) 则能在线下载、 安装、 卸载、 升级rpm软件包等任务,并且能够自动查找并解决rpm包之间的依赖关系后,一次性完成所有具有依赖关系rpm包的安装,而无需管理员逐个手工地去安装每一个rpm包。
要实现YUM的功能,有赖于三个机制的建立:
■ 其一是需要有一个包含各种rpm安装文件的软件仓库(即yum源)
■ 其二是有软件仓库的仓库数据库 ,其中收集了软件仓库中所有rpm包的头部信息包含了该包的描述,功 能,提供的文件,依赖关系等信息
■ 其三是有软件仓库的地址等信息 。
RHEL8yum源变化说明
RHEL8中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf,原有的yum命令仅为dnf的软链接,当然依旧可以使用的。
[root@kongd ~]# ll `which yum`
lrwxrwxrwx. 1 root root 5 2月 14 2019 /usr/bin/yum -> dnf-3
dnf源文件所在目录依旧为/etc/yum.repos.d/下,但官方在发布Beta版本时并没有为此系统自带源文 件,需要我们自行下载,我们将使用清华源提供的源文件来为RHEL8系统提供软件安装源。
案例1:建立本地光盘源 本地仓库分类:
BaseOS存储库:
提供一套核心的底层操作系统功能,为基础软件安装库
AppStream存储库:
包括额外的用户空间应用程序、运行时语言和数据库,以支持不同的工作负载和用力。AppStream中 的内容有两种格式--RPM格式的和称为模块的RPM格式扩展。
[root@kongd ~]# mkdir /media/cdrom
[root@kongd ~]# mount /dev/cdrom /media/cdrom
[root@kongd ~]# cat /etc/yum.repos.d/rhel8.repo
[RHEL8-BaseOS]
name=RHEL8-BaseOS
baseurl=file:///media/cdrom/BaseOS
gpgcheck=0
[RHEL8-Appstream]
name=RHEL8-Appstream
baseurl=file:///media/cdrom/AppStream
gpgcheck=0
验证:
[root@kongd ~]# yum repolist
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.
RHEL8-Appstream
98 MB/s | 5.3 MB 00:00
RHEL8-BaseOS
126 MB/s | 2.2 MB 00:00
仓库标识 仓库名称 状态
RHEL8-Appstream RHEL8-Appstream 4,672
RHEL8-BaseOS RHEL8-BaseOS 1,658
yum(dnf)工具管理软件包:
1、安装软件包
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子命令。
# yum module -h
# yum module list 列出模块
# yum module list perl 列出指定模块
yum-config-manager –add-repo=“仓库路径” 添加仓库
yum-config-manager –disable “仓库名" 禁用仓库
yum-config-manager –enable “仓库名” 启用仓库
7.3 源代码编译
使用源代码安装软件的优点
获得最新的软件版本,及时修复bug 根据用户需要,灵活定制软件功能
应用场合举例
安装较新版本的应用程序时 自由软件的最新版本大都以源码的形式最先发布
当前安装的程序无法满足需要时 编译安装可由用户自行修改、定制功能
需要为应用程序添加新的功能时 用户可以重新配置、自由修改源代码,加入新的功能
确认源代码编译环境 需安装支持 C/C++程序语言的编译器
解包 —— tar
解包、释放出源代码文件 配置 —— ./configure
针对当前系统、软件环境,配置好安装参数
编译 —— make
将源代码文件变为二进制的可执行程序
安装 —— make install
将编译好的程序文件复制到系统中
7.4 进程简介
什么是进程? 进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix
进程: 是程序运行的过程, 动态,有生命周期及运行状态。
程序和进程的区别:
• 程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程
• 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
• 进程还具有并发性和交往性,而程序却是封闭的 进程和线程的区别
• 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
• 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能 被执行
父子进程的关系
子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程
在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
父进程终止子进程自然终止。
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状 态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的 部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。
前台进程和后台进程
前台进程:在 shell 提示处理打入命令后,创建一个子进程,运行命令, Shell 等待命令退出,然后返 回到对用户给出提示符。这条命令与 Shell 异步运行,即在前台运行,用户在它完成之前不能执行别一 个命令 。
后台进程:在 Shell 提示处打入命令,若后随一个 &, Shell 创建子进程运行此命令,但不等待命令退 出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。“后台进程必须是非交互式的” 。
进程状态
在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU时间和资源分配不断变化,从而为进程分配一个状态,它随着环境要求而改变。
7.5 查看进程
w 查看当前系统信息
[root@bogon cron]# w
14:48:39 up 2:46, 1 user, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.203.1 12:27 0.00s 0.17s 0.02s w
w显示信息的含义:
JCPU: 以终端代号来区分,该终端所有相关的进程的进程执行时,所消耗的 CPU时间会显示在这
PCPU : cpu 执行程序消耗的时间
WHAT: 用户下在执行的操作
load average : 分别显示系统在过去 1、 5、 15分钟内的平均负载程度。
FROM : 显示用户从何处登录系统,“: 0”的显示代表该用户时人 X Windows 下,打开文本模式窗口登录的
IDLE: 用户闲置的时间,这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
查看个别用户信息: w [ 用户名 ]
静态查看进程 ps
注:ps -aux 不同于 ps aux
常用选项 :
-a :显示所有用户的进程
-u :显示用户名和启动时间
-x :显示 没有控制终端的进程
-e :显示所有进程,包括没有控制终端的进程
-l :长格式显示
-w:宽行显示,可以使用多个 w 进行加宽显示
ps 查看隶属自己的进程
ps -u or -l 查看隶属于自己进程详细信息
ps -le or -aux 查看所有用户执行的进程的详细信息
ps -aux --sort pid 可按进程执行的时间、 PID、 UID 等对进程进行排序
进程信息
命令
h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
< 向前
> 向后
z 彩色
W 保存top环境设置
nohup命令可以在用户退出时继续执行某一进程一般的命令在用户退登录后就停止执行了, nohup 命令可以使进程在用户退出登录后仍旧继续执行,nohup 命令将执行后的数据信息和错误信息默认存储到文件 nohup.out 中
格式:nohup program &
7.6 信号控制进程
给进程发送信号
[root@localhost ~]# kill -l //列出所有支持的信号
编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断^C
3) SIGQUIT 键盘退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20)SIGTSTP 暂停^Z
[root@localhost ~]# killall vim //给所有vim进程发送信号
[root@localhost ~]# killall httpd
7.7 作业控制
作业控制是一个命令行功能,允许一个shell 实例来运行和管理多个命令。 如果没有作业控制,父进程fork()一个子进程后,将sleeping,直到子进程退出。 使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行期间返回接受其他命令。
foreground, background, and controlling terminal
foreground: 前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的 输入和信号,并允许从终端读取或写入到终端。
background: 后台进程没有控制终端,它不需要终端的交互。