第一大题
1.1
使用虚拟机的原因:
- 资源隔离和安全性:虚拟机提供隔离环境,避免影响物理主机
- 快速部署和复制:可以快速创建多个相同配置的虚拟机
- 便于测试和开发:不会影响生产环境
- 节省硬件成本:多台虚拟机可运行在同一物理服务器上
- 快照功能:便于系统备份和恢复
创建虚拟机的软件:
- VMware Workstation
- VirtualBox
- Hyper-V
1.2
准备阶段:
- 下载 CentOS Stream 9 ISO 镜像
- 准备虚拟机环境
- 确保硬件满足最低要求 (CPU、内存、存储)
安装过程:
- 启动系统并从 ISO 镜像引导
- 配置网络连接
- 选择安装类型
- 配置磁盘分区 (建议:
/boot
,swap
,/
,/home
等) - 设置 root 密码和创建普通用户
- 开始安装并等待完成
- 安装完成后重启系统
1.3
使用快照备份工具的步骤:
- 打开虚拟机管理软件 (如 VMware 或 VirtualBox)
- 选择目标虚拟机
- 找到"快照"或"Snapshot"功能菜单
- 点击"创建快照"或"Take Snapshot"
- 输入快照名称和描述 (如"初始安装完成状态")
- 确认创建快照
- 等待快照创建完成
恢复快照的步骤:
- 打开虚拟机管理软件
- 选择目标虚拟机
- 找到"快照管理器"或"Snapshot Manager"
- 选择要恢复的快照
- 点击"恢复"或"Revert"
- 确认恢复操作
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 的三种主要模式:
-
普通模式 (Normal mode) - 打开文件后默认进入的模式
i
进入插入模式:
进入命令模式h
j
k
l
分别对应左、下、上、右移动光标x
删除当前字符dd
删除当前行yy
复制当前行p
粘贴u
撤销Ctrl + r
重做
-
插入模式 (Insert mode) - 编辑文本内容
- 按
i
进入插入模式 - 此时可以像普通编辑器一样输入文本
- 按
Esc
返回普通模式
- 按
-
命令模式 (Command mode) - 执行保存、退出等操作
- 在普通模式下按 : 进入
:w
保存文件:q
退出:wq
保存并退出:q!
不保存强制退出:set number
显示行号:/
搜索词,向下搜索:?
搜索词,向上搜索
Nano 编辑器常用快捷键:
Ctrl + O
保存文件,然后按 Enter 确认Ctrl + X
退出,如果有未保存的修改会提示保存Ctrl + K
剪切当前行Ctrl + U
粘贴Ctrl + W
搜索Ctrl + \
替换Ctrl + G
打开帮助Alt + U
撤销Alt + E
重做
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
-
预处理(Preprocessing)
gcc -E source.c -o source.i
-
编译(Compilation)
gcc -S source.i -o source.s
-
汇编(Assembly)
gcc -c source.s -o source.o
-
链接(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