Part 2 - Linux 虚拟化常用命令

2023-06-11
8分钟阅读时长

【版本】

当前版本号v20231010

版本修改说明
v20231010增加一些提示和常见问题
v20230918修正个别步骤的描述
v20230611换用 RockyLinux 8

任务2.1 目录管理命令

【任务目的】

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

【任务环境】

  • RockyLinux 8

【任务实例】

  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. 请在报告详细记录你的每一步的命令和结果。

提示1:可以了解 mkdir -p 提示2:tree 命令可以用于查看目录层级结构,安装命令是dnf install tree -y


任务2.2 相对路径和绝对路径

【任务目的】

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

【任务环境】

  • RockyLinux 8

【任务实例】

  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 文件复制、删除与移动相关命令

【任务环境】

  • RockyLinux 8

【任务实例】

  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 文件内容的编辑的相关命令

【任务环境】

  • RockyLinux 8

【任务实例】

  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 软件的安装与卸载

【任务目的】

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

【任务环境】

  • RockyLinux 8

【任务实例】

  1. 提升到 root 权限,输入 root 的密码。
su
复制
  1. 安装配置 MariaDB
dnf 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. 使用dnf remove命令移除MariaDB相关组件。

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

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


任务2.6 端口和进程的查看

【任务目的】

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

【任务环境】

  • RockyLinux 8

【任务要求】

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

  2. 使用dnf命令安装命令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端口的进程是否存在。

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

dnf 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 或 VMWare Workstation
  • bsdiff-4.3.tar.gz

【任务步骤】

安装 bsdiff 和 bspatch

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

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

  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
复制

如果提示“Command Not Found”,那就使用命令dnf install tar -y进行安装

  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

  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 出错,执行命令dnf 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。
dnf clean all
dnf 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-baseos]
name=Rocky Linux $releasever - Local - BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
[local-appstream]
name=Rocky Linux $releasever - Local - AppStream
baseurl=file:///mnt/AppStream
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
复制
  • (4)清理源缓存
dnf clean all
dnf makecache
复制
  • (5)重新执行安装命令

4. 无法修改 MariaDB root 用户密码

答: 可以尝试卸载MariaDB 和 删除 MariaDB 数据,重新安装MariaDB。

  • (1)使用 root 用户登录,卸载 MariaDB
dnf remove mariadb mariadb-server -y
复制
  • (2)删除 MariaDB 数据
rm /var/lib/mysql -rf
复制
  • (3)重新安装 MariaDB
dnf install mariadb mariadb-server -y
复制

扫码或长按识别访问