第一大题

1.1

使用虚拟机的原因

创建虚拟机的软件

1.2

准备阶段

安装过程

1.3

使用快照备份工具的步骤

  1. 打开虚拟机管理软件 (如 VMware 或 VirtualBox)
  2. 选择目标虚拟机
  3. 找到"快照"或"Snapshot"功能菜单
  4. 点击"创建快照"或"Take Snapshot"
  5. 输入快照名称和描述 (如"初始安装完成状态")
  6. 确认创建快照
  7. 等待快照创建完成

恢复快照的步骤

  1. 打开虚拟机管理软件
  2. 选择目标虚拟机
  3. 找到"快照管理器"或"Snapshot Manager"
  4. 选择要恢复的快照
  5. 点击"恢复"或"Revert"
  6. 确认恢复操作

1.4

# 创建用户组
sudo groupadd group1      # 销售部
sudo groupadd group2      # 技术部

# 创建用户并设置初始密码
sudo useradd -g group1 -m tom1
echo "111111" | sudo passwd --stdin tom1
sudo useradd -g group2 -m tom2
echo "111111" | sudo passwd --stdin tom2

1.5

# 1. 查看磁盘情况
sudo fdisk -l

# 2. 假设/dev/sdb是第二块磁盘,创建文件系统
sudo mkfs.ext4 /dev/sdb

# 3. 创建挂载点目录
sudo mkdir -p /var/www/images

# 4. 临时挂载
sudo mount /dev/sdb /var/www/images

# 5. 永久挂载(编辑/etc/fstab)
echo "/dev/sdb /var/www/images ext4 defaults 0 0" | sudo tee -a /etc/fstab

# 6. 验证挂载
mount | grep /var/www/images

第二大题

2.1

# 安装Nginx
sudo dnf install nginx -y

# 启用Nginx开机自启动
sudo systemctl enable nginx

# 验证Nginx是否可以正常访问
ping -I 192.168.10.20

2.2

常用的编辑器主要有 Vim 和 Nano

Vim 的三种主要模式

  1. 普通模式 (Normal mode) - 打开文件后默认进入的模式
    • i 进入插入模式
    • : 进入命令模式
    • h j k l 分别对应左、下、上、右移动光标
    • x 删除当前字符
    • dd 删除当前行
    • yy 复制当前行
    • p 粘贴
    • u 撤销
    • Ctrl + r 重做
  2. 插入模式 (Insert mode) - 编辑文本内容
    • i 进入插入模式
    • 此时可以像普通编辑器一样输入文本
    • Esc 返回普通模式
  3. 命令模式 (Command mode) - 执行保存、退出等操作
    • 在普通模式下按 : 进入
    • :w 保存文件
    • :q 退出
    • :wq 保存并退出
    • :q! 不保存强制退出
    • :set number 显示行号
    • :/ 搜索词,向下搜索
    • :? 搜索词,向上搜索

Nano 编辑器常用快捷键

2.3

#!/bin/bash
size=$(find /var/log -type f -name "*.log" -exec du -ch {} + | awk '/total$/{print $1}')
echo "${size:-0}" > logsize.txt

2.4

#!/bin/bash

# 获取第一台服务器价格
read -p "请输入第一台服务器的价格(元): " a

# 获取第二台服务器价格
read -p "请输入第二台服务器的价格(元): " b

# 计算总价
total=$(echo "$a+ $b")

# 显示结果
echo "总价格: ${total}元"

第三大题

3.1

#!/bin/bash
# 批量重命名.txt为.md的脚本
cd /home/students/documents

# 进入目录并执行重命名
for f in *.txt;
do
    mv -v "$f" "${f%.txt}.md"
done

3.2

#!/bin/bash
# 创建组
groupadd group1

# 创建10个用户
for i in {01..10};
do
    useradd -g group1 "stu$i"
done

3.3

#!/bin/bash
n=$((RANDOM%10+1))
while read -p "猜1-10的数: " g;
do
    ((g==n)) && echo "对了!" && break
    echo $((g>n?"大了":"小了"))
done

第四大题

4.1

#include <stdio.h>

void main() {
    int i, j;
    // 外层循环控制行数 (1-9)
    for (i = 1; i <= 9; i++) {
        // 内层循环控制每行的列数 (1-i)
        for (j = 1; j <= i; j++) {
            // 格式化输出乘法算式,%-2d 保证对齐
            printf("%d×%d=%-2d ", j, i, i * j);
        }

        // 每行结束后换行
        printf("\n");
    }
}

4.2

  1. 预处理(Preprocessing)
    gcc -E source.c -o source.i
  2. 编译(Compilation)
    gcc -S source.i -o source.s
  3. 汇编(Assembly)
    gcc -c source.s -o source.o
  4. 链接(Linking)
    gcc source.o -o executable

4.3

启动 GDB 调试程序的命令格式是:gdb 可执行文件
查看当前所有断点和监视点信息的命令:info breakpoints
运行程序的命令是:run
继续执行到下一个断点的命令是:continue
给变量设置一个监视点:watch 变量名
在 GDB 中设置断点的命令是:break 行号或函数名

4.4

sy:sy.c
    gcc sy.c -o sy

clean:
    rm -f sy.o