【90 天挑战 HCIE Cloud】第 2 天 Linux 硬件与软件管理
硬件管理 Hardware (HW)
HW_001 设备查询
Windows 一般用设备管理器查计算机的硬件资源,Linux 的设备资源查询和管理,是由多个不同命令组合完成的,总的来说,命令可以分为硬件规格与配置查询和硬件资源使用状态查询
硬件规格配置查询,主要的需求场景和命令参考下表
序号 | 查询内容 | 命令 |
---|---|---|
1 | 查看 Linux 内核版本,cpu 信息 | uname -a && lscpu |
2 | 查看 cpu 和内存信息 | cat /proc/cpuinfo && cat /proc/meminfo |
3 | 查看计算机名称 | hostname |
4 | 列出所有 pci 设备,即和主板连接的硬件设备 | lspci -tv |
5 | 列出所有 usb 设备 | lsusb -tv |
6 | 列出加载的 Linux 内核模块 | lsmod |
7 | 查看详细硬件信息 | dmesg |
8 | 查看环境变量 | env |
硬件资源使用状态查询,包括部分常用的运营运维管理命令,参考下表
序号 | 查询内容 | 命令 |
---|---|---|
1 | 查看内存和交换区使用量 | free -m |
2 | 查看各硬件分区使用清空 | df -h |
3 | 查看指定目录的大小(这个超级有用) | du -sh |
4 | 查看系统运行时间、用户数和负载 | uptime |
5 | 列出所有 usb 设备 | lsusb -tv |
6 | 显示应用进程消耗的 cpu 资源 | top |
7 | 实时统计 cpu 使用率 | sar |
8 | 查看用户登录日志 | last |
小测验:请执行以下指令,解释指令执行结果含义
[root@hcie ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1
[root@hcie ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 2
[root@hcie ~]# cat /proc/cpuinfo| grep "processor"| wc -l
4
[root@hcie ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
4 Intel(R) Xeon(R) Gold 6266C CPU @ 3.00GHz
[root@hcie ~]# cat /proc/meminfo |grep MemTotal |cut -d ':' -f 2 |cut -d ' ' -f 8
15896912
HW_002 磁盘演进之路
个人电脑三大件 CPU 内存和磁盘,这 3 者的配置规格基本定义了一台计算机的档次,以前在中关村选购电脑或玩 DIY,主要关注的也是这 3 个方面
- CPU:Intel 还是 AMD,核数、主频多少,再深入一点了解下浮点运算能力;后来,随着高画质影像视频、游戏应用的快速发展,GPU 的重要性也在不断提升
- 内存:内存颗粒、制造工艺、厂商,当然还有最重要的容量、读写速率等
- 磁盘:首先看是机械硬盘还是固态硬盘,机械硬盘关注磁盘容量、转速、数据读取时延等,固态硬盘 SSD 关注价格、容量和使用寿命等,主流 USB 采用的是和固态硬盘相同的技术,一般简称为闪存盘,是固态硬盘的一个别名
三者协同非常重要,任何一环拖后腿都会产生“短木板效应”,对计算性能造成影响,参考下图,在 SSD 固态硬盘出现之前,硬盘受限于机械特性,其性能提升相比 CPU 和内存都是非常缓慢的。SSD 固态硬盘技术的出现,缓解了这一情况,迅速拉齐了 3 者的发展水平,避免存储成为瓶颈
固态硬盘刚出道时,是典型的小而美且贵的风格,容量小、性能强劲、价格昂贵。用户不得不在性能和价格间妥协,固态硬盘就加装小小的一块,专门给 C 盘使用。随着近几年闪存颗粒技术的不断发展,固态硬盘 TCO (总体拥有成本)胜出机械硬盘的时间拐点即将到来,普遍预测时间会在 2026 年(报告源自第 3 方,请参考原文链接中“参考资料”章节)
硬盘技术的演进对于整个技术生态影响巨大,过去机械硬盘随机和线性访问速度的限制,发展滞后于 CPU 和内存,业界衍生出很多技术以规避这种情况,如多级缓存、分布式存储技术,甚至 Hadoop 的技术生态,一开始也是围绕着怎么打破机械硬盘的性能限制而诞生的,更不用说传统数据库技术,和存储技术的适配也是非常重要的一环
磁盘等各类型硬件在 Linux 中是当做一个个文件进行管理的,所有硬件都存储在 /dev 目录下,不同的硬件使用的前缀代号都不一样,可以根据代号来判断硬件对应类别,选择合适的业务存储数据和访问应用,充分发挥硬件效能
小测验:请回答下面的路径代表的是哪一种存储硬件
/dev/sda
/dev/vda
/dev/hda
/dev/usb/lp0
HW_003 磁盘分区
磁盘分区是安装操作系统的第一步,不过云端服务器一般不涉及分区操作,分区信息由云平台在开通 ECS 服务时自动完成了
参考下图,磁盘可分为磁盘分区包括主分区和扩展分区,主分区和扩展分区最多 4 个,这是由磁盘记录分区表信息的 MBR 决定的,MRB 存储容量为一个磁盘的一个扇区即 512 Byte,记录的分区数量信息是有限的
扩展分区最多可创建 1 个,可划分多个逻辑分区,编号从 5 开始如 /dev/sda5,每个逻辑分区和主分区在使用上没有什么差异
以上介绍的分区是基于 MBR 实现的,使用的分区命令是 fdisk;目前主流的分区类型还包括 GPT 分区,命令采用 gdisk
小测验:请按照如下要求执行,执行 fdisk 分区指令,完成磁盘分区操作
- 有两块 SATA 硬盘,各 500G,创建磁盘分区 /sda1 /sda2 /sda5 /sdb1 /sdb2
- /sda1 /sda2 各 100G,/sda5 50G,剩余磁盘空间用于未来扩容使用
- /sdb1 和 /sdb2 平分磁盘空间
注:以下指令常用语查询硬盘分区状态
[root@hcie ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 120G 0 disk
└─vda1 253:1 0 120G 0 part /
[root@hcie ~]# cat /proc/partitions
major minor #blocks name
253 0 125829120 vda
253 1 125828079 vda1
[root@hcie ~]# fdisk -l
Disk /dev/vda: 120 GiB, 128849018880 bytes, 251658240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x64860148
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 251658206 251656159 120G 83 Linux
[root@hcie ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1
[root@hcie ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 2
[root@hcie ~]# cat /proc/cpuinfo| grep "processor"| wc -l
4
[root@hcie ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
4 Intel(R) Xeon(R) Gold 6266C CPU @ 3.00GHz
[root@hcie ~]# cat /proc/meminfo |grep MemTotal |cut -d ':' -f 2 |cut -d ' ' -f 8
15896912
HW_004 文件系统类型
磁盘分区在物理上对磁盘进行了分割,将磁盘用起来,但操作系统没办法直接操作硬盘资源,操作系统可以访问的是一个个文件,因此须建立文件系统,通过文件系统管理硬件资源
下面的指令展示了系统所支持的文件系统种类:
[root@hcie ~]# cat /etc/filesystems
xfs
ext4
ext3
ext2
nodev proc
nodev devpts
当前主流 Linux 系统一般采用 ext4 文件系统类型,参考下面的命令
[root@hcie ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
devtmpfs devtmpfs 7934200 0 7934200 0% /dev
tmpfs tmpfs 7948456 0 7948456 0% /dev/shm
tmpfs tmpfs 7948456 552 7947904 1% /run
tmpfs tmpfs 7948456 0 7948456 0% /sys/fs/cgroup
/dev/vda1 ext4 123591212 2689892 115432516 3% /
tmpfs tmpfs 7948456 32 7948424 1% /tmp
tmpfs tmpfs 1589688 0 1589688 0% /run/user/0
Linux 文件系统一般都采用以下 3 级结构
- 目录项:包括目录结构、文件和 inode 节点号
- inode:文件节点索引,一个文件对应一个,记录文件属性,以及 inode 指向文件数据块地址;文件属性相关信息,参考下述指令显示的文件信息结果
[root@hcie etc]# ll
-rw-r--r--. 1 root root 44 May 18 2020 adjtime
- 数据块:文件数据存储区域
小测验:请使用 mkfs.ext4 指令,创建磁盘文件系统,同时熟练掌握将 sfs 服务的使用方法
HW_005 磁盘分区挂载
硬盘分区安装文件系统后,还需挂载到 Linux 下的树形文件目录,操作系统才可以直接操作文件。有多个硬盘的服务器,一般会将不同目录挂载到不同硬盘,这样做有几个好处
- 硬盘资源隔离,一块盘坏了只影响本盘文件
- 单个硬盘读写性能有限,需做访问负载分担(在硬盘分区时,就得考虑访问均衡问题)
- 独立伸缩,当某个盘容量不够时,支持独立扩容
- 独立备份,对特定的存储有关键数据的盘进行备份
云时代之前,文件系统挂载磁盘分区一般有一个推荐配置方案,参考下表
目录 | 用途 | 文件类型 | 推荐大小 |
---|---|---|---|
/ | 根目录,默认所有文件都在该目录下 | ext4 | 5G |
/boot | 存放 Linux 启动有关程序,如 Linux 内核文件等 | ext4 | 500M |
/usr | 用户应用程序安装和运行目录,程序产生的数据可能比较多 | 10G | |
/usr/local | 用户自己的应用程序,可以考虑和 /usr 合并在一个盘 | ext4 | 3~10G |
/var | 存储变化数据和日志文件等,如 web 存放目录 /var/www | ext4 | 20G |
/home | 用户自行管理的目录,一般是一些普通文件,数据量往往非常大,可能占比很高 | ext4 | 10G |
/tmp | 临时文件暂存区,一般会定期清空 | ext4 | 1G |
/swap | 虚拟内存,建议为物理内存大小的 2 倍 | swap | 8G |
注:上表是 Linux 分区的一个建议,无论是目录容量还是分区规则,都是云时代之前的最佳实践经验,一定要结合自己的实际使用情况做容量规划
云服务器一般不涉及该步骤,分区是默认建好的,如果有外部硬盘如 EVS,则需考虑规划方式
小测验:请使用命令,将 /dev/sda1 挂载到 /boot,/dev/sda2 挂载到自建目录 /home/lib,并对 /home/lib 执行 umount 操作
HW_006 NFS 网络文件系统
nfs 是一种网络文件系统,支持通过 nfs 将外部服务器的文件系统,挂接在本地目录下,操作系统一般默认未安装 nfs,可以使用以下指令完成安装
[root@hcie ~]# sudo yum -y install nfs-utils
华为云弹性文件服务 sfs 支持在云端建立 nfs 服务端,将 sfs 服务下的文件系统挂接到 Linux 系统,可以先登录华为云 sfs 官网,新建文件系统资源,得到 sfs 的访问地址,参考下图所示
小测验:请使用命令,分别实现手动和自动挂载 sfs 文件系统到 Linux 服务器上,参考挂载NFS文件系统到云服务器(Linux) 和 自动挂载文件系统
账号与权限 Account and Authority (AA)
AA_001 用户管理
Linux 用户分为超级管理云用号 root 和普通用户,超级管理员 root 用户标识符 UID 为 0,普通用户 UID 为 500~6000,1~499 用于伪用户,提供给系统进程使用,不能使用伪用户登录系统
添加用户使用 useradd 命令,参考下面指令
[root@hcie ~]# useradd test01
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@hcie ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
test01:x:1000:1000::/home/test01:/bin/bash
[root@hcie ~]# ll /home
total 4.0K
drwx------ 2 test01 test01 4.0K Aug 21 17:51 test01
[root@hcie ~]# su test01
Welcome to 4.19.90-2003.4.0.0036.oe1.x86_64
System information as of time: Sat Aug 21 17:53:14 CST 2021
System load: 0.00
Processes: 104
Memory used: 1.5%
Swap used: 0.0%
Usage On: 3%
IP address: 192.168.1.127
Users online: 1
[test01@ecs-9e0e root]$ exit
使用 useradd 创建用户后,在 /etc/passwd 可以看到用户信息,/home 目录下创建用户名命名的专属文件夹,useradd 创建的用户默认是没有密码的,使用 su test01 即可切换到对应的用户,不需要设置密码
用户信息保存在 /etc/passwd,用户密码则以加密方式存储在 /etc/shadow,参考下面命令,展示了配置用户密码后的效果
[root@hcie ~]# passwd test01
Changing password for user test01.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@hcie ~]# cat /etc/shadow
root:!!$6$fmS6czcBxVuizxIA$CDgEch4xQbQJizmjmWwX5N04RbSo6ejxpbalF0Z64LeMzY/xd7OSC.LE87AYwlJ6F18SJYhdRH8IWWiRY4Hfc/:18400:0:99999:7:::
bin:*:18344:0:99999:7:::
daemon:*:18344:0:99999:7:::
test01:$6$LYAkN6DvI5iM6JxD$7TVku.NEJLy8Fg3bHpWiE.RH/vR9tz4HCG/fAYc0FdtOSXdlfAUusD7D4Hy0q8TKbiXYNSNfM12dZdWNPSVNZ.:18860:0:99999:7:::
有多种方式可以查看当前用户状态信息,请参考下面指令
[root@hcie ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@hcie ~]# who
root pts/0 2021-08-21 21:44 (119.123.79.60)
root pts/1 2021-08-21 23:21 (119.123.79.60)
[root@hcie ~]# w
23:55:26 up 7 days, 13:28, 2 users, load average: 0.00, 0.00, 0.00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 21:44 2:10m 0.00s 0.00s -bash
root pts/1 23:21 6.00s 0.05s 0.00s w
[root@hcie ~]# whoami
root
注:使用 passwd 命令设置密码后,在 /etc/shadow 文件种对应的用户名 test01 后面,就会有一段加密字符串,是系统根据 md5 SHA256 或 SHA512 加密原始密码生成的
小测验:请使用相关命令创建用户 user02,配置密码后,再删除该用户及用户所属的 /home 目录
AA_002 用户组管理
Linux 用户组 (group) 适用于多个用户的权限管理,用户组包含两种类别:
- 主要组(Primary Group,又称为私有组 Private Group):创建用户时,如果未指定用户组,默认将创建一个用户名同名的用户组
- 次要组(Secondary Group,又称为公共组 Public Group):用户创建时可以指定组名,次要组支持添加多个用户
主要组和次要组之间可以相互转化,如私有组新增了其他的用户,则变为公共组
用户组管理支持新增、删除用户组,从用户组中添加或删除用户,或对指定文件的所属用户和组进行修改,请查看如下示例介绍:
[root@hcie ~]# groupadd gtest01
[root@hcie ~]# tail -n1 /etc/group
gtest01:x:1001:
[root@hcie ~]# gpasswd -a test01 gtest01
Adding user test01 to group gtest01
[root@hcie ~]# groups test01 # 显示 test01 所属 groups
test01 : test01 gtest01
[root@hcie ~]# tail -n1 /etc/group
gtest01:x:1001:test01
[root@hcie ~]# chown -R test01.gtest01 file
小测验:
- 创建组 gtest02,添加设置组密码,将 user01 添加到组
- 将 user01 从组 gtest01 中删除
- 将 user01 所属组修改为 gtest02
AA_003 文件权限管理
Linux 操作系统中,所有的文件都有对应的权限设置,参考下面指令
[root@hcie ~]# ll -a /root
total 44K
dr-xr-x---. 4 root root 4.0K Aug 14 11:41 .
dr-xr-xr-x. 20 root root 4.0K Aug 14 10:27 ..
-rw------- 1 root root 6.6K Aug 22 14:22 .bash_history
-rw-r--r--. 1 root root 18 Oct 29 2019 .bash_logout
-rw-r--r--. 1 root root 176 Oct 29 2019 .bash_profile
-rw-r--r--. 1 root root 198 Aug 14 11:33 .bashrc
drwx------ 3 root root 4.0K May 18 2020 .cache
-rw-r--r--. 1 root root 100 Oct 29 2019 .cshrc
-rw------- 1 root root 0 May 18 2020 .history
drwx------ 2 root root 4.0K Aug 14 10:27 .ssh
-rw-r--r--. 1 root root 129 Oct 29 2019 .tcshrc
dr-xr-x— 即对应的文件权限配置,其各字段的含义参考下图:
上图中,权限设置包含了 3 种角色:
- Owner 指文件所属用户
- Group 指文件所属用户组
- Other Users 和文件没有用户和用户组关系的其他用户
权限设置包含 3 种类别,针对文件和目录两种文档类型,其含义略有差别:
代号 | 计数 | 文件权限 | 目录权限 |
---|---|---|---|
r | 4 | 读取文件内容 | 使用 ls 指令查看文件列表 |
w | 2 | 修改文件内容 | 创建或删除目录中的文件或子目录 |
x | 1 | 读取文件内容 | 使用 ls 指令查看文件列表,也可以 cd 进入目录 |
注:上述计数含义,在介绍 chmod 权限修改时,会有介绍
文件权限可以按需修正,包括所属组、用户和权限设计,参考下面指令:
chgrp test01 gtest01
chown root:root file
chmod u+wx,g-r,o=rx file
chmod a-w file
参考上面指令可以发现,可以对 u(用户) g(用户组) o(其他) a(所有角色) 相应用户的权限信息,做出修改,其修改操作符有 3 个,分别介绍如下:
操作符 | 含义 |
---|---|
+ | 添加 r w x 权限 |
- | 删除 r w x 权限 |
= | 配置 r w x 权限 |
还有一种方式可以对权限进行修改,请参考以下指令,尝试不同配置下的访问权限差异:
[root@hcie ~]# touch file
[root@hcie ~]# ll
total 0
-rw------- 1 root root 0 Aug 22 14:44 file
[root@hcie ~]# chmod 771 file && ll
total 0
-rwxrwx--x 1 root root 0 Aug 22 14:44 file
[root@hcie ~]# chmod 421 file && ll
total 0
-r---w---x 1 root root 0 Aug 22 14:44 file
[root@hcie ~]# chmod 651 file && ll
total 0
-rw-r-x--x 1 root root 0 Aug 22 14:44 file
那么 rwx 和 771 421 的数字间,是一个什么映射关系呢,参考下图:
小测验:请参考下面指令获取 file 文件当前的权限,分别使用 u+r 和 777 两种方式,对权限进行修改满足下述要求
- 用户权限(u):能够使用编辑程序打开文件,对文件内容进行修改,并使用 python 命令运行文件
- 用户组权限(g):能够使用编辑程序打开并查看文件内容,但无法修改文件,也无法运行文件
- Others 权限(o):支持运行文件,但不支持对文件进行读写
[root@hcie ~]# ll run.py
-rw------- 1 root root 0 Aug 22 14:44 run.py
软件管理 Software (SW)
SW_001 源码安装 Apache
Linux 安装软件有源码安装和安装包安装两种(Windows 一般只使用安装包安装),这是由 Linux 自身的 GPL 授权特性决定的,在 Linux 上运行的软件,一般都采用了 GPL 或者类似的开源授权,会提供源码
一般而言,源码安装要相对复杂些,包括以下几个步骤:
- 下载源码安装包:一般使用 wget 指令访问官网获取源码,默认保存到 /usr/local
- 配置生成 Makefile 文件:执行 ./configure 命令,生成适合本系统运行的 Makefile 文件,后续 make 命令会基于该文件完成编译和链接操作
- 编译:make 指令,将源码文件 (包括 .c 源码文件和 .h 头文件) 编译成二进制目标文件 (*.o)
- 安装:执行 make install 命令将上一步编译好的二进制文件安装到指定的目录
现在我们来到 Linux 建站最常见的步骤:通过源码安装 Apache HTTP Server 服务。Apache HTTP 服务是业界最流行的一个开源 Web 服务器,是 LAMP 组合 Linux Apache Mysql PHP 中的一员,Apache HTTP 服务在 Linux 中运行指令为 httpd
注:以 Apache HTTP 服务为起点,Apache 逐渐成为开源世界的绝对主导力量,其中 Apache 软件基金会 引领开源生态建设方面,众多优秀的开源项目如 Flink Hadoop Kafka Maven Tomcat 等顶顶大名的开源组件
源码安装需要提前安装几个必备的编译软件,wget vim openEuler 系统预装就有,gcc gcc-c++ cmake 等则需要进行安装;apr-util 组件的安装依赖 expat-devel,也需要提前安装好,否则后续会报错;pcre-devel 则是 httpd 组件依赖的服务,也需要提前安装好
[root@hcie ~]# yum install gcc gcc-c++ cmake
[root@hcie ~]# yum install expat-devel pcre-devel
Apache httpd 依赖 pcre apr apr-util 几个组件,因此安装 Apache 前需先完成这几个组件的安装,这几个服务组件都支持通过源码安装
现在我们进入正题,开始 Apache 组件的源码安装,第一步先通过 wget 指令获取到 Apache httpd 及其他几个依赖组件的源码
[root@hcie ~]# wget https://downloads.apache.org/httpd/httpd-2.4.46.tar.gz
[root@hcie ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
[root@hcie ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz
[root@hcie ~]# wget https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.gz
# 注意,上面下载 pcre 版本时,不能选择 pcre2 相应的版本,否则后面 Apache 会安装失败,Apache 对应的是 pcre 组件
[root@hcie ~]# tar -zxvf apr-1.7.0.tar.gz
[root@hcie ~]# cd apr-1.7.0
[root@hcie ~]# ./configure --prefix=/usr/local/apr
[root@hcie apr-1.7.0]# make && make install
# apr-util pcre 和 httpd 的解压操作请自行完成,apr-util pcre 的 make && make install 步骤下面已省略
[root@hcie apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@hcie pcre-8.45]# ./configure --prefix=/usr/local/pcre
# httpd 在执行 ./configure 编译阶段,需要用到 apr 和 apr-util 相应源码文件,必须复制到 srclib 目录下,否则 httpd 在执行 make && make install 时将报错
[root@hcie ~]# cd httpd-2.4.46/srclib
[root@hcie srclib]# cp -r ~/apr-1.7.0 apr
[root@hcie srclib]# cp -r ~/apr-util-1.6.1 apr-util
[root@hcie httpd-2.4.46]# ./configure --prefix=/usr/local/apache2 --with-included-apr --with-pcre=/usr/local/pcre
[root@hcie httpd-2.4.46]# make && make install
# 运行 Apache httpd 服务
[root@hcie httpd-2.4.46]# cd /usr/local/apache2/bin
[root@hcie bin]# ./apachectl start
# 验证 httpd 服务是否正常运行
[root@hcie bin]# ps -ef | grep httpd
root 139342 1 0 22:21 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
daemon 139344 139342 0 22:21 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
daemon 139345 139342 0 22:21 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
daemon 139346 139342 0 22:21 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
root 139440 27613 0 22:21 pts/1 00:00:00 grep --color=auto httpd
完成以上操作后,登录服务器网址,终于看到了期待的画面:
小测验:Apache 建站是以前站长的第一课,源码安装又是玩 Linux 的一个必备技能,请参考上述操作指南,一步步使用源码完成 Apache httpd 服务的安装,对深入理解源码安装的原理、步骤非常有帮助
SW_002 安装工具
不同的 Linux 发行版本使用不同的软件安装工具,参考下表
系列 | Linux 发行版本 | 软件安装工具 |
---|---|---|
Debian | Kali Ubuntu | dpkg apt-get |
Redhat | Redhat Fedora CentOS openEuler | rpm yum |
SUSE | SUSE | rpm zypper yast2 |
下面将重点说明 Redhat 系列的两个软件安装工具 rpm 和 yum
rpm 是使用最广泛的安装工具,已成为 Linux 行业的软件安装标准,提供了软件打包、安装、查询、升级、卸载、校验等功能;rpm 包本身并不解决包依赖的问题,比如通过 rpm 安装软件 A,软件 A 依赖软件 B 和软件 C,而软件 B 又依赖 软件 D,则 rpm 安装软件的顺序就是 D -> B -> C -> A
由于 rpm 安装程序包非常多,彼此间的依赖关系极其复杂,新手用户往往在安装程序的第一步,就会遇到各种阻碍,用户需要逐项梳理依赖关系,一个个下载彼此依赖的程序包,整个过程是非常磨人的
注:有一点要特别注意,rpm 包并不是跨平台通用的,不同的 Linux 发行系列,甚至同一个发行系列下的不同版本,使用的 rpm 包都是不同的;另外针对不同的 cpu 架构如 x86 和 arm,rpm 包也是不一样的,下载的时候要特别注意
yum 就是为了解决 rpm 的包依赖问题而产生的,yum 通过 repos 库保存安装包文件,维护不同安装包之间的依赖关系,当用户使用 yum 安装软件 A 时,yum 将自动识别所有包依赖关系,并完成依赖包的安装,大幅提升了软件安装效率
小测验:请说明以下软件安装相关指令执行的功能
rpm -ivh --nodeps a.rpm
rpm -qa a.rpm
rpm -ql a*
rpm -qi a.rpm
rpm -qa
rpm -qf file_from_a
rpm -e a.rpm
rpm -Uvh a.rpm
rpm -V a.rpm
yum list all
yum list installed
yum list recent
yum repolist
yum info a.rpm
yum provides /etc/fstab
yum clean all
yum makecache
yum -y install sw.a
yum reinstall sw.a
yum update sw.a
yum remove sw.a
yum localinstall a.rpm
SW_003 安装源配置
和 CentOS 一样,openEuler 使用 yum 作为系统自带的主力安装工具,相关配置主要通过 /etc/yum.conf 文件和 /etc/yum.repos.d 目录两部分完成
yum 安装需要配置安装源,作为安装包依赖关系和及安装包的下载来源,华为云预装的 openEuler 操作系统,默认配置了 openEuler 官网作为安装源,参考下面命令:
[root@hcie yum.repos.d]# ll /etc/yum.repos.d
total 4.0K
-rw-r--r--. 1 root root 1.7K May 18 2020 openEuler_x86_64.repo
[root@hcie yum.repos.d]# cat openEuler_x86_64.repo
[OS]
name=OS
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler
[everything]
name=everything
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler
[EPOL]
name=EPOL
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler
[debuginfo]
name=debuginfo
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler
[source]
name=source
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler
[update]
name=update
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler
小测验:若服务器原先使用的并非 openEuler 官网的 yum 源,怎么配置使用官网的镜像源?
SW_004 软件定期执行
Linux 使用 crontab 定期执行软件,可以进行非常精准的控制,先看下 crontab 查询和删除定时任务的用法:
[root@hcie ~]# crontab -l
* * * * 1 /bin/ls
[root@hcie ~]# crontab -r
[root@hcie ~]# crontab -l
no crontab for root
命令 crontab -e 可以进入定时任务的编辑页面,每行配置一个定时任务,前 5 个参数都是数字,用来设置定时任务发起时间,最后 1 个参数是可执行程序的绝对路径,系统将定时调用可执行程序
针对前 5 个参数的含义,参考下表说明(以下内容均摘自 runoob 网站)
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
# 每分钟执行一次
* * * * * /bin/ls
# 在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次
0 6-12/3 * 12 * /usr/bin/backup
# 周一到周五每天下午 5:00 寄一封信给 alex@domain.name
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
# 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
# 每两个小时重启一次apache
0 */2 * * * /sbin/service httpd restart
# 每天7:50开启ssh服务
50 7 * * * /sbin/service sshd start
# 每天22:50关闭ssh服务
50 22 * * * /sbin/service sshd stop
小测验:请针对下文列出的 crontab 不同场景,说明配置方法
- 每月1号和15号检查/home 磁盘
- 每小时的第一分执行 /home/bruce/backup这个文件
- 每月的1、11、21、31日是的6:30执行一次ls命令
参考资料
- Linux 最佳分区方案
- 如何使用 openEuler
- Linux 用户和权限管理
- Linux Group Management Explained with Examples
- Linux crontab 命令
- 源码安装 Apache
- 3D TLC NAND To Beat MLC
- SSDs will crush hard drives
目录和前后章节
90 天挑战 HCIE Cloud
上一章 - Linux 开启云端之门
下一章 - 编辑器之神 VI
实时更新信息,请关注微信公众号和微博 齐月太白
点击进入微博 齐月太白:https://weibo.com/moontaibai
- 点赞
- 收藏
- 关注作者
评论(0)