本实验需在三种环境中完成,核心目标是体验「同一哲学在不同环境中的体现与差异」:
| 环境 | /proc & /sys 访问 | sysctl 修改 | 注意事项 |
|---|---|---|---|
| WSL2 Ubuntu 22.04 | 完整 | 有 root | 内核信息反映 Windows 层;PID 1 可能非 systemd |
| VirtualBox Ubuntu 24.04 | 完整 | 有 root | 网络接口名可能为 ens33/enp0s3 而非 eth0 |
| 共享服务器 | 受 ACL 限制 | 无 root | A6 改为只读分析模式(见题目说明) |
温馨提示:三种环境的差异不是 Bug,而是本实验的 Feature。当你发现某个命令在不同环境表现不同时,恭喜你正在亲身体验「一切皆文件」在权限与隔离层面的真实含义。
用「只能读文件」的方式回答以下系统信息问题。
禁止使用
ps、free、lscpu、nproc、ip、ifconfig、df
等专用工具。 只能使用
cat、head、grep、awk、wc
等通用文本工具读取 /proc 和 /sys
下的文件。
只看 /proc/cpuinfo,回答:系统有多少个 CPU 核心?
环境差异提示:WSL2 中
/proc/cpuinfo显示的是宿主 Windows 的 CPU 信息,可能与 VirtualBox 分配的 vCPU 数量不同。请在三种环境中都执行并对比。
只看 /proc/1/status,回答:PID 为 1 的进程名称(Name
字段)和当前状态(State 字段)是什么?
环境差异提示:WSL2 中 PID 1 可能是
init而非systemd;共享服务器中受 ACL 限制,你可能无法读取所有字段——记录你实际能读到的内容和报错信息。
只看 /proc/meminfo,回答:系统当前可用的物理内存是多少
MB?(提取 MemAvailable 的值并换算)
只看
/proc/sys/fs/file-max,回答:系统支持的最大同时打开文件数是多少?
只看 /sys/class/net/
下的文件,回答:默认网络接口的已发送(tx_packets)和已接收(rx_packets)数据包数分别是多少?
环境差异提示:不同环境的网络接口名不同。先
ls /sys/class/net/查看有哪些接口,再进入对应目录查找statistics/。
有 root 环境(WSL2 / VirtualBox):
net.ipv4.ip_forward 当前值sysctl -w 临时开启 IP 转发并验证/etc/sysctl.d/
并验证重启后生效无 root 环境(共享服务器):
sysctl -a 查看所有可读参数,找到
net.ipv4.ip_forward 的当前值sysctl -w net.ipv4.ip_forward=1,记录报错信息ls -l /proc/sys/net/ipv4/ip_forward)加分项:记录三个环境中 A6 操作结果的差异,并分析「文件权限如何保护系统安全」(2-3 句话)。
每题提交要求:
下载统一数据文件 system-snapshot.txt,它模拟了一份系统状态快照,包含四个区域:
每道题指定目标输出格式,你需构造 一条管道命令 精确产生该输出。
温馨提示:每道题的答案在三种环境中完全相同——因为数据是统一的。鼓励你在自己系统上也尝试类似的管道分析(如分析
/var/log/syslog),记录在「拓展探索」中可获加分。
从 system-snapshot.txt 中筛选所有 ERROR
级别的日志行,只输出日志的 日期(第一个字段)和
错误信息(ERROR 之后的所有内容)。
目标输出格式(前 3 行示例):
2026-01-15T08:01:12 Failed password for invalid user admin from 10.0.0.15 port 34522 ssh2
2026-01-15T08:01:14 Failed password for invalid user admin from 10.0.0.15 port 34523 ssh2
2026-01-15T08:03:45 upstream timed out (110: Connection timed out) while connecting to upstream
提示:注意过滤掉以
#开头的注释行。
统计每个服务出现的 ERROR 次数,按次数 降序 排列。
目标输出格式:
12 nginx
10 sshd
3 docker
2 cron
1 systemd
提示:日志格式为
日期 主机 服务名[PID]: LEVEL ...,需要提取服务名部分。
找出磁盘使用率最高的 3 个分区,输出 使用率 和 挂载点。
目标输出格式:
95% /archive
90% /data
70% /
找出占用内存(%MEM)最大的前 3 个进程,输出 内存百分比 和 进程命令名。
目标输出格式:
15.6% /usr/sbin/mysqld
8.3% /usr/bin/dockerd
4.2% nginx: worker process
提示:进程数据区域以
USER PID %CPU %MEM ...开头,注意跳过表头行和注释行。
用一条管道命令输出:错误最多的服务名 和
错误总数,格式为 服务名 数量。
目标输出:
nginx 12
提示:在 B2 的基础上继续管道。
每题提交要求:
回顾 Lab 01 ~ Lab 04,选择 3 个 你印象最深的工具或操作,分析它们如何体现 Unix 三大哲学支柱。
要求:
参考方向(不给出完整答案,请用自己的语言组织):
~/.ssh/config →
文本流?配置即文件?chmod / setfacl → 权限即文件属性?grep | sort | uniq -c | sort -rn → 做好一件事 +
文本流?提交 lab05/report.md:
.cast(建议命名 lab05/lab05.cast,便于后续转为
text 进行智能批改)。