【90 天挑战 HCIE Cloud】第 2 天 Linux 硬件与软件管理

举报
齐月太白 发表于 2021/08/22 22:47:43 2021/08/22
【摘要】 Linux 硬件和软件管理是基础能力,是 Linux 部署行业应用必备的知识点;云计算时代,硬件全部虚拟化了,因此对于硬件的管理要求相比没以前那么高,如磁盘的分区就由云系统自动完成;理解 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 者的发展水平,避免存储成为瓶颈

image.png

固态硬盘刚出道时,是典型的小而美且贵的风格,容量小、性能强劲、价格昂贵。用户不得不在性能和价格间妥协,固态硬盘就加装小小的一块,专门给 C 盘使用。随着近几年闪存颗粒技术的不断发展,固态硬盘 TCO (总体拥有成本)胜出机械硬盘的时间拐点即将到来,普遍预测时间会在 2026 年(报告源自第 3 方,请参考原文链接中“参考资料”章节)

image.png

硬盘技术的演进对于整个技术生态影响巨大,过去机械硬盘随机和线性访问速度的限制,发展滞后于 CPU 和内存,业界衍生出很多技术以规避这种情况,如多级缓存、分布式存储技术,甚至 Hadoop 的技术生态,一开始也是围绕着怎么打破机械硬盘的性能限制而诞生的,更不用说传统数据库技术,和存储技术的适配也是非常重要的一环

磁盘等各类型硬件在 Linux 中是当做一个个文件进行管理的,所有硬件都存储在 /dev 目录下,不同的硬件使用的前缀代号都不一样,可以根据代号来判断硬件对应类别,选择合适的业务存储数据和访问应用,充分发挥硬件效能

小测验:请回答下面的路径代表的是哪一种存储硬件

/dev/sda
/dev/vda
/dev/hda
/dev/usb/lp0

HW_003 磁盘分区

磁盘分区是安装操作系统的第一步,不过云端服务器一般不涉及分区操作,分区信息由云平台在开通 ECS 服务时自动完成了

参考下图,磁盘可分为磁盘分区包括主分区和扩展分区,主分区和扩展分区最多 4 个,这是由磁盘记录分区表信息的 MBR 决定的,MRB 存储容量为一个磁盘的一个扇区即 512 Byte,记录的分区数量信息是有限的

image.png

扩展分区最多可创建 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
  • 数据块:文件数据存储区域

image.png

小测验:请使用 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 的访问地址,参考下图所示

image.png

小测验:请使用命令,分别实现手动和自动挂载 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— 即对应的文件权限配置,其各字段的含义参考下图:

image.png

上图中,权限设置包含了 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 的数字间,是一个什么映射关系呢,参考下图:
image.png

小测验:请参考下面指令获取 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

完成以上操作后,登录服务器网址,终于看到了期待的画面:
image.png

小测验: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命令

参考资料

目录和前后章节

90 天挑战 HCIE Cloud
上一章 - Linux 开启云端之门
下一章 - 编辑器之神 VI

实时更新信息,请关注微信公众号和微博 齐月太白

image.png

点击进入微博 齐月太白:https://weibo.com/moontaibai

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200