Part 2 - Linux 虚拟化常用命令

2021-09-01
8分钟阅读时长

«返回课程汇总页面

【版本】

当前版本号v20210926

版本修改说明
v20210926添加常见问题,修正从网盘下载bsdiff
v20210922修改实验2.7 hadoop用户为cdc用户,修正部分命令错误
v20210920添加常见问题
v20210901初始化版本

实验2.1 目录管理命令

【实验目的】

  • 掌握目录相关的 Linux 命令的使用

【实验环境】

  • CentOS 7.X

【实验实例】

  1. 启动实验1制作的虚拟机。

  2. 使用 Final Shell 连接虚拟机,并使用 cdc 用户登录。

  3. 登录以后,查看当前所在路径。

pwd

一般用户登录以后都默认进入当前用户的主目录 /home/用户名

  1. 创建一个新的目录
mkdir dir1
  1. 进入 dir1 目录
cd dir1
  1. 进入 dir1 目录
cd dir1
  1. 返回上一级目录。
cd ..
  1. 删除 dir1 这个空目录
rmdir dir1

【实验要求】

  1. 在 cdc 用户的主目录下创建以下结构的目录。
/
|-home
  |-cdc
    |-dir2
       |-dir21
         |-dir211
  1. 请把 /home/cdc 下的所有空目录删除

  2. 请在实验报告详细记录你的每一步的命令和结果。

提示:可以了解 mkdir -p


实验2.2 相对路径和绝对路径

【实验目的】

  • 掌握 Linux 的相对路径和绝对路径访问方式

【实验环境】

  • CentOS 7.X

【实验实例】

  1. 以下为一些特殊目录
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表 “ 目前使用者身份 ” 所在的主文件夹
  1. 进入根目录,查看根目录下所有目录。
cd /
ls
  1. 进入相对路径目录
cd var/tmp
  1. 查看当前目录
pwd
  1. 进入前一个访问过的目录,并查看当前目录。
cd -
pwd
  1. 直接通过绝对路径进入目录。
cd /var/tmp
pwd

【实验要求】

  1. 在 cdc 用户的主目录下创建以下结构的目录。
/
|-home
  |-cdc
    |-dir3
       |-dir31
       |-dir32
  1. 进入工作目录/home/cdc/dir3/dir32,使用相对路径删除空目录dir31

  2. 使用绝对路径删除空目录dir32

  3. 请在实验报告详细记录你的每一步的命令和结果。


实验2.3 文件创建、复制、删除与移动

【实验目的】

  • 掌握 Linux 文件复制、删除与移动相关命令

【实验环境】

  • CentOS 7.X

【实验实例】

  1. 在 cdc 用户的主目录下创建文件file1
cd ~
touch file1
  1. 复制文件file1file2。并查看是否复制成功
cp file1 file2
ls
  1. 移动(重命名)file1file1.txt
mv file1 file1.txt
  1. 删除file2,按下y确认删除。
rm file2

【实验要求】

  1. 在 cdc 用户的主目录下创建文件file3
  2. 复制file3/var/tmp 目录下,并改名为file4
  3. 删除file4
  4. 请在实验报告详细记录你的每一步的命令和结果。

实验2.4 文件内容的编辑和查看

【实验目的】

  • 掌握 Linux 文件内容的编辑的相关命令

【实验环境】

  • CentOS 7.X

【实验实例】

  1. 在 cdc 用户的主目录下创建一个文件,并同时写入内容。
cd ~
echo 'life is like a box of chocolates' > life.txt
  1. 使用cat 命令输出life.txt内容。
cat life.txt

【实验要求】

  1. 承接上面实例,使用vi修改life.txt,在文件第2行加如以下内容。
You never know what gonna get.
  1. 请在实验报告详细记录你的每一步的命令和结果。

实验2.5 软件的安装与卸载

【实验目的】

  • 掌握 CentOS 的软件的安装与卸载

【实验环境】

  • CentOS 7.X

【实验实例】

  1. 提升到 root 权限,输入 root 的密码。
su
  1. 安装配置 MariaDB
yum install mariadb mariadb-server -y

安装成功应该会展示类似以下内容。

  • 中文界面
已安装:
  mariadb.x86_64 3:10.1.20-1.el7                               
  mariadb-server.x86_64 3:10.1.20-1.el7                        

完毕!
  • 英文界面
installed:
mariadb.x86 64 3:18.1.20-1.e17 mariadb-server.x86 64 3:10.1.29-1.e17

Dependency Installed:
mariadb-common.x8664 3:10.1.29-1.e17 mariadb-errmsg.x8664 3:18.1.29-1.e17  mariadb-conf ig.x8664 3:18.1.28-1.e17

Dependencu Updated:
mariadb-libs.x8664 3:18.1.28-1.e17

Complete!
  1. 新建 MariaDB 的配置文件。
echo '[mysqld]
bind-address = 10.0.0.70
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8'  >/etc/my.cnf.d/cdc.cnf
  1. 设置 MariaDB 为开机启动
systemctl enable mariadb
  1. 启动MariaDB
systemctl start mariadb
  1. 开始 MariaDB 安全配置和初始化。
mysql_secure_installation
  1. 根据以下提示进行输入,修改 MariaDB 的 root 用户密码为123456。
Enter current password for root (enter for none): -> 直接回车
Set root password? [Y/n] -> 输入y
New password:   -> 输入123456
Re-enter new password:  -> 输入123456
Remove anonymous users? [Y/n] -> 输入y
Disallow root login remotely? [Y/n]  -> 输入y
Remove test database and access to it? [Y/n] -> 输入y
Reload privilege tables now? [Y/n] -> 输入y
  1. 重新启动MariaDB
systemctl restart mariadb
  1. 查看MariaDB状态是否为active
systemctl status mariadb
  1. 使用root连接MariaDB,输入密码123456。
mysql -u root -p
  1. 使用exit命令退出MariaDB命令行。
MariaDB [(none)]> exit;

【实验要求】

  1. 使用systemctl stop命令停止MariaDB进程。

  2. 使用yum remove命令移除MariaDB相关组件。

  3. 移除/etc/my.cnf.d/cdc.cnf配置文件。

  4. 请在实验报告详细记录你的每一步的命令和结果。


实验2.6 端口和进程的查看

【实验目的】

  • 掌握 CentOS 查看端口和进程的命令

【实验环境】

  • CentOS 7.X

【实验要求】

  1. 使用yum命令重新安装MariaDB

  2. 使用yum命令安装命令lsofvim

  3. 使用cp命令备份/etc/my.cnf.d/cdc.cnf/etc/my.cnf.d/cdc.cnf.bak

  4. 使用vim 修改/etc/my.cnf.d/cdc.cnf为以下内容。

[mysql]
default-character-set = utf8mb4

[mysqld]
bind-address = 10.0.0.70
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
  1. 重启MariaDB

  2. 使用lsof -i:3306命令查看3306端口的进程是否存在。

  3. 使用netstat -tulpn|grep 3306命令查看3306端口的进程是否存在。

如果提示没有找到命令,可以用以下命令安装

yum install net-tools -y
  1. 使用 MariaDB 的root 用户进行登录。

  2. 请在实验报告详细记录你的每一步的命令和结果。

实验2.7 实现完全备份、差异备份和增量备份

【实验目的】

  • 掌握完全备份、差异备份和增量备份三者的概念和区别
  • 掌握 bsdiff 和 bspatch 命令的使用

【实验说明】

  • bsdiff 是用于比较2个二进制文件之间的差异的命令,并且可以生成差异补丁(patch)文件。
  • bspatch 是可以通过应用补丁(patch)文件把文件进行恢复。

【实验环境】

  • 内存:至少4G
  • 硬盘:至少空余40G
  • 操作系统: 64位 Windows系统。

【实验资源】

  • FinalShell
  • CentOS 7.9系统镜像
  • VirtualBox 6 或 VMWare Workstation
  • bsdiff-4.3.tar.gz
链接:https://pan.baidu.com/s/1kw7nT7dbonUTSlPqIHVwhQ 
提取码:heis

【实验步骤】

安装 bsdiff 和 bspatch

  1. 使用 cdc 用户登录虚拟机,并查看当前用户名。
whoami
  1. 安装一些 bsdiff 需要的编译和依赖包。
sudo yum -y install gcc automake autoconf libtool make bzip2-devel 

注意前面的sudo 命令是提升至root权限去运行后面的yum命令,这里需要输入密码。

  1. 从实验资源网盘下载bsdiff-4.3.tar.gz,通过 FinalShell 上传到 cdc 用户的工作目录/home/cdc
cd ~
rz

rz命令是用于文件上传,如果rz命令失效,可以使用 FinalShell 自带的上传功能进行上传。

  1. 解压bsdiff-4.3.tar.gz
tar -zxvf bsdiff-4.3.tar.gz
  1. 进入解压出来的目录,修改Makefile
cd bsdiff-4.3
vi Makefile
  1. Makefile倒数第1和倒数第3行的首字符前,分别加入一个tab符号。
  • 修改前
install:
        ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin
.ifndef WITHOUT_MAN
        ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1
.endif
install:
        ${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin
        .ifndef WITHOUT_MAN
        ${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1
        .endif
  1. 编译生成命令 bsdiff 和 bspatch
make
  • 正常会输出以下内容
cc -O3 -lbz2    bsdiff.c   -o bsdiff
cc -O3 -lbz2    bspatch.c   -o bspatch
  1. 查看是否命令已经编译成功,并保存载目录下。
ls
  1. 把目录移到/usr/local/sbin/目录,该目录已经声明在环节变量 PATH 中,可以在任何地方调用该目录下的命令。
sudo cp bsdiff bspatch /usr/local/sbin/

bsdiff 和 bspatch 命令示范

  1. 下载并上传chp1_2_data.tar到 hadoop 用户的工作目录。

  2. 解压该压缩包。

tar -xvf chp1_2_data.tar
  1. 解压以后,查看目录下有3个文件,分别代表第1天(Day1.txt),第2天(Day2.txt),第3天(Day3.txt)的内容。
Day1.txt  Day2.txt  Day3.txt

  1. 通过 bsdiff 的帮忙命令查看命令的使用方法
bsdiff -h
  • 从以下输出的内容来看,bsdiff的第1个参数是旧文件名,第2个参数是新的文件名,第三个参数是补丁文件名。
usage: bsdiff oldfile newfile patchfile
  1. 通过 bspatch 的帮忙命令查看命令的使用方法
bspatch -h
  • 从以下输出的内容来看,bspatch的第1个参数是旧文件名,第2个参数是新的文件名,第三个参数是补丁文件名。
usage: bspatch oldfile newfile patchfile
  1. 使用 catdiff 命令查看 Day1.txt 和 Day2.txt 的内容差异。
cat Day1.txt
cat Day2.txt
diff Day1.txt Day2.txt

diff 如果没有任何输出,表示2个文件内容相同。

  1. 使用 bsdiff 计算 Day1.txt 和 Day2.txt 的差异补丁Day2-Day1.patch
bsdiff Day1.txt Day2.txt Day2-Day1.patch
  1. 对比 Day1.txt、Day2.txt、Day2-Day1.patch 三个文件的大小
ll  Day1.txt Day2.txt Day2-Day1.patch

  1. 使用 bspatch在 Day1.txt 上应用差异补丁,还原 Day2 的内容。
bspatch Day1.txt Day2-recov.txt Day2-Day1.patch
  1. 使用 catdiff 命令对比 Day2.txt 和 Day2-recov.txt 的内容,查看是否有差异。

【实验要求】

请同学们参考上面的例子,按以下要求完成实验。

  1. 创建目录fullbackup,使用命令分别完全备份Day1、Day2、Day3的内容到该目录下。

  2. 创建目录diffbackup,使用命令实现以下备份到该目录下。

  • 完全备份 Day1
  • 比较并生成 Day2 与 Day1 的差异补丁Day2-Day1.patch,并使用该补丁恢复出文件Day2-recov.txt,比较恢复文件和 Day2.txt 的区别。
  • 比较并生成 Day3 与 Day1 的差异补丁Day3-Day1.patch,并使用该补丁恢复出文件Day3-recov.txt,比较恢复文件和 Day3.txt 的区别。
  1. 创建目录increbackup,使用命令实现以下备份到该目录下。
  • 完全备份 Day1
  • 比较并生成 Day2 与 Day1 的差异补丁Day2-Day1.patch
  • 比较并生成 Day3 与 Day2 的差异补丁Day3-Day2.patch
  • 使用上面2个差异补丁,恢复出文件Day3-dump.txt,比较恢复文件和 Day3.txt 的区别。

提示:创建目录命令为 mkdir

【常见问题】

1. 安装软件失败提示Error dowloading packages或者 [Errno 256] No more mirrors to try.

答:这是因为没有正确挂载光盘内的镜像文件导致的。重新挂载就可以了。

mount /dev/cdrom /mnt

2. 安装 MariaDB 出错,执行命令yum install mariadb mariadb-server -y 提示“No module named sqlitecachec”。

答:这是因为没有安装上yum-metadata-parser包。

  • (1)执行以下命令完成yum-metadata-parser包的安装。
sudo rpm -ivh /mnt/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm --force
  • (2)执行清理操作,重新安装 MariaDB。
yum clean all
yum install mariadb mariadb-server -y

3. 安装软件不成功,提示“Error downloading packages:” 或者“ No more mirrors to try”

答:

  • (1)检查虚拟光驱是否已经插入镜像文件。

  • (2)解挂,再重新挂载。

umount /mnt
mount /dev/cdrom /mnt
  • (3)检查源的内容是否正确。
cat /etc/yum.repos.d/local.repo 

正常会展示以下内容

[local]
name=local
baseurl=file:///mnt
gpgcheck=0
  • (4)清理源缓存
yum makecache
  • (5)重新执行安装命令