Linux基础学习第二周作业
一、进程管理
1.1 进程基本概念
进程是程序的一次运行实例。Linux 系统中每个进程都有唯一的进程标识符 PID(Process ID),以及标识其来源的父进程 ID PPID。所有用户态进程最终都起源于 systemd(PID 为 1)。
进程的生命周期通常包括:创建(fork)→ 执行(exec)→ 运行/等待 → 终止(exit)→ 父进程回收。若子进程终止后父进程未及时回收其资源,该进程将变为僵尸进程(Zombie),持续占用进程表项。
常见进程状态如下:
| 状态 | 含义 | 是否占用 CPU | 能否强制终止 |
|---|---|---|---|
| R | 运行或可运行 | 是 | 是 |
| S | 可中断睡眠 | 否 | 是 |
| D | 不可中断睡眠,通常等待 I/O | 否 | 否,即使 kill -9 也无效 |
| T | 已停止/挂起 | 否 | 需先恢复 |
| Z | 僵尸进程 | 否 | 否,已死亡 |
1.2 静态查看进程
ps:进程快照
ps 用于获取某一时刻的进程状态,常用组合:
# 查看所有进程详细信息
ps aux
# 按 CPU 占用率降序排列
ps aux --sort=-%cpu | head
# 按内存占用率降序排列
ps aux --sort=-%mem | head
# 自定义输出字段
ps -eo cmd,pid,ppid,user,%cpu,%mem,stat,start_time
ps aux 输出字段说明:
| 字段 | 说明 |
|---|---|
| USER | 运行进程的用户 |
| PID | 进程 ID |
| %CPU | CPU 占用率 |
| %MEM | 内存占用率 |
| VSZ | 虚拟内存大小 |
| RSS | 实际驻留内存大小 |
| TTY | 进程运行的终端 |
| STAT | 进程状态 |
| START | 启动时间 |
| TIME | 占用 CPU 总时间 |
| COMMAND | 进程命令 |
pstree:以树状结构查看进程
# 查看完整进程树
pstree
# 显示 PID
pstree -p
# 查看指定用户的进程
pstree -u apache
lsof:查看端口与文件占用
# 查看 80 端口被哪个进程占用
lsof -i :80
# 查看某个文件被哪个进程使用
lsof /etc/hosts
netstat 与 ss:查看网络连接与监听端口
# 查看所有 TCP 监听端口及对应进程
netstat -tnlp
# 查看 22 端口状态
netstat -tnlp | grep :22
# ss 命令与 netstat 功能等价,性能更优
ss -tnlp
ss -tnlp | grep :22
参数说明:
| 参数 | 含义 |
|---|---|
| -t | TCP 协议 |
| -u | UDP 协议 |
| -n | 以数字形式显示端口,不做服务名解析 |
| -l | 仅显示监听状态的端口 |
| -p | 显示进程名和 PID |
| -a | 显示所有连接状态 |
1.3 动态查看进程
top:实时系统监控
top 界面分为顶部汇总信息和下方进程列表两部分。
顶部信息包含:
| 行 | 内容 |
|---|---|
| 第 1 行 | 当前时间、系统运行时长、登录用户数、1/5/15 分钟平均负载 |
| 第 2 行 | 总进程数、运行中、休眠、停止、僵尸进程数量 |
| 第 3 行 | CPU 使用率:us 用户态、sy 内核态、id 空闲、wa I/O 等待 |
| 第 4 行 | 内存总量、已用、空闲、缓存/缓冲区 |
| 第 5 行 | Swap 总量、已用、空闲 |
常用交互快捷键:
| 按键 | 功能 |
|---|---|
| q | 退出 top |
| k | 杀死进程,输入 PID 后回车 |
| r | 调整进程 nice 值 |
| P | 按 CPU 使用率排序 |
| M | 按内存使用率排序 |
| 1 | 显示每个 CPU 核心的使用情况 |
| h | 显示帮助 |
命令行参数示例:
# 每 5 秒刷新一次
top -d 5
# 仅监控指定 PID
top -p 1234,5678
# 仅显示指定用户的进程
top -u apache
# 批处理模式输出到文件
top -b -n 3 > top.log
htop:增强版 top
htop 提供更友好的交互界面,支持鼠标操作和进程树视图。
# Rocky 安装
sudo dnf -y install epel-release
sudo dnf -y install htop
# Ubuntu 安装
sudo apt -y install htop
1.4 进程控制
kill:向进程发送信号
常用信号:
| 信号 | 数值 | 作用 |
|---|---|---|
| SIGHUP | 1 | 重新加载配置文件,PID 不变 |
| SIGINT | 2 | 中断进程,类似 Ctrl+C |
| SIGKILL | 9 | 强制终止,无法被捕获或忽略 |
| SIGTERM | 15 | 正常终止,默认信号 |
| SIGSTOP | 19 | 挂起进程 |
| SIGCONT | 18 | 恢复被挂起的进程 |
示例:
# 正常终止进程
kill 3324
# 强制终止进程
kill -9 5221
# 重新加载服务配置
kill -1 3324
killall:按进程名批量终止
# 终止所有 httpd 进程
killall httpd
1.5 其他常用系统信息命令
# 查看系统负载与运行时间
uptime
# 查看内存使用情况
free -m
free -h
# 查看 CPU 信息
lscpu
nproc
# 查看操作系统版本
cat /etc/redhat-release
uname -r
uname -m
二、Linux 网络基础
2.1 OSI 参考模型与 TCP/IP 模型
OSI 七层模型将网络通信划分为七个层次,每层负责不同功能:
| 层次 | 名称 | 主要功能 | 典型设备/协议 |
|---|---|---|---|
| 第 7 层 | 应用层 | 为应用程序提供接口 | HTTP、FTP、DNS、DHCP |
| 第 6 层 | 表示层 | 数据格式转换、加密解密 | SSL/TLS |
| 第 5 层 | 会话层 | 建立、管理、终止会话 | RPC |
| 第 4 层 | 传输层 | 端到端可靠数据传输 | TCP、UDP |
| 第 3 层 | 网络层 | 逻辑寻址与路由转发 | IP、ICMP、路由器 |
| 第 2 层 | 数据链路层 | 帧封装、MAC 寻址、差错检测 | 以太网、交换机 |
| 第 1 层 | 物理层 | 比特流传输 | 网线、光纤、网卡 |
TCP/IP 模型是互联网实际采用的协议栈,通常分为四层:应用层、传输层、网络层、网络接入层(或细分为五层对等模型)。数据发送时逐层封装头部,接收时逐层解封装。
2.2 IP 地址基础
IPv4 地址由 32 位二进制组成,通常以点分十进制表示,如 192.168.1.1。每个 IP 地址由网络部分和主机部分组成,子网掩码用于划分两者边界。
常见 IP 地址分类:
| 类别 | 范围 | 默认掩码 |
|---|---|---|
| A 类 | 0.0.0.0 ~ 127.255.255.255 | /8 |
| B 类 | 128.0.0.0 ~ 191.255.255.255 | /16 |
| C 类 | 192.0.0.0 ~ 223.255.255.255 | /24 |
| D 类 | 224.0.0.0 ~ 239.255.255.255 | 组播地址 |
| E 类 | 240.0.0.0 ~ 255.255.255.255 | 保留研究用 |
私有地址范围(用于内网):
| 类别 | 私有地址范围 |
|---|---|
| A 类 | 10.0.0.0 ~ 10.255.255.255 |
| B 类 | 172.16.0.0 ~ 172.31.255.255 |
| C 类 | 192.168.0.0 ~ 192.168.255.255 |
2.3 TCP 三次握手与四次挥手
三次握手建立连接
TCP 是面向连接的可靠传输协议,建立连接需要三次握手:
- 客户端发送 SYN 报文,序列号 Seq = a;
- 服务端回复 SYN + ACK 报文,序列号 Seq = b,确认号 Ack = a + 1;
- 客户端回复 ACK 报文,序列号 Seq = a + 1,确认号 Ack = b + 1。
三次握手的意义在于确认双方的收发能力均正常,并同步初始序列号。
四次挥手断开连接
TCP 连接关闭需要四次挥手:
- 主动方发送 FIN + ACK 报文;
- 被动方回复 ACK 报文;
- 被动方发送 FIN + ACK 报文;
- 主动方回复 ACK 报文,连接关闭。
由于 TCP 是全双工通信,两个方向的连接需要分别关闭,因此需要四次交互。
2.4 交换机工作原理
交换机工作在数据链路层(第 2 层),根据 MAC 地址转发数据帧。其核心机制包括:
- MAC 地址学习:交换机收到数据帧后,记录源 MAC 地址与接收端口的对应关系;
- MAC 地址表:维护 MAC 地址到端口的映射表;
- 单播转发:已知目的 MAC 时,直接向对应端口转发;
- 广播泛洪:未知目的 MAC 或广播帧时,向除源端口外的所有端口转发。
交换机每个端口属于独立的冲突域,有效隔离了物理层冲突。
2.5 路由器与路由基础
路由器工作在网络层(第 3 层),根据 IP 地址和路由表进行跨网段转发。路由表中的条目来源包括:
| 路由类型 | 来源 | 特点 |
|---|---|---|
| 直连路由 | 接口配置 IP 后自动生成 | 接口 UP 时存在 |
| 静态路由 | 管理员手工配置 | 适合小型稳定网络,无法自动适应拓扑变化 |
| 动态路由 | 通过 OSPF、RIP 等协议学习 | 适合大型网络,可自动收敛 |
跨网段通信路径示例(PC1 访问 PC3):
- PC1 判断目标 IP 与自身不在同一网段,将数据包发给网关;
- 交换机查 MAC 表,将数据包转发给路由器;
- 路由器查路由表,确定下一跳和出接口;
- 数据包经路由转发到达目标网段;
- 目标交换机将数据包交给 PC3。
2.6 VLAN 基础
VLAN(Virtual Local Area Network)将一个物理交换机在逻辑上划分为多个广播域。同一 VLAN 内的设备可以互通,不同 VLAN 默认隔离。
Access 端口用于连接终端设备,每个 Access 端口只属于一个 VLAN。配置思路:
system-view
vlan batch 10 20
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
VLAN 的作用包括:隔离广播域、提升安全性、灵活划分部门网络。
2.7 Linux 网络管理常用命令
# 查看 IP 地址
ip addr
ip addr show ens160
# 查看路由表
ip route
# 测试网络连通性
ping 192.168.1.1
# 追踪路由路径
traceroute 192.168.2.10
# 查看 DNS 配置
cat /etc/resolv.conf
# 查看主机名
hostname
hostnamectl
三、Docker 容器技术概览与 WordPress 部署
3.1 容器技术的价值
容器是一种轻量级的虚拟化技术,与传统虚拟机相比,容器共享宿主机内核,启动速度快、资源占用少。其核心优势包括:
- 环境一致性:将应用及其依赖打包为镜像,确保开发、测试、生产环境一致;
- 多版本共存:同一宿主机可运行不同版本的运行环境,互不干扰;
- 快速恢复:结合编排平台可在故障时快速重新调度容器。
3.2 Docker 安装
以 Rocky Linux 为例:
# 1. 卸载旧版本
sudo dnf remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 2. 安装依赖
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
# 3. 添加 Docker 仓库(国内镜像站示例)
sudo yum-config-manager --add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 安装 Docker
sudo dnf install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
# 5. 启动并设置开机自启
sudo systemctl enable --now docker
# 6. 验证
sudo docker version
国内网络环境下,建议配置镜像加速器:
sudo cat > /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://ccr.ccs.tencentyun.com",
"https://docker.m.daocloud.io",
"https://docker.xuanyuan.me",
"https://docker.1ms.run"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.3 Docker 镜像与容器基本操作
镜像管理
# 查看本地镜像
docker images
# 从仓库拉取镜像
docker pull nginx:latest
docker pull wordpress
docker pull mariadb
# 修改镜像标签
docker tag old_name:new_tag new_name:new_tag
# 删除镜像
docker rmi image_name
# 导出镜像
docker save -o nginx.tar nginx:latest
# 导入镜像
docker load < nginx.tar
容器管理
# 运行容器(后台模式,端口映射)
docker run -d --name web1 -p 80:80 nginx
# 查看运行中的容器
docker ps
# 查看所有容器(含已停止)
docker ps -a
# 启动/停止/重启容器
docker start web1
docker stop web1
docker restart web1
# 删除容器
docker rm web1
# 强制删除所有容器
docker rm -f $(docker ps -aq)
# 进入容器执行命令
docker exec -it web1 bash
# 设置容器开机自启
docker run -d --name web2 --restart always -p 8080:80 nginx
# 或更新已运行容器
docker update --restart always web1
3.4 WordPress 容器化部署实验
本实验使用 MariaDB 作为数据库,WordPress 作为博客应用,通过 Docker 网络实现容器间通信。
步骤一:拉取镜像
docker pull mariadb
docker pull wordpress
步骤二:创建专用网络
docker network create wordpress_net
步骤三:部署 MariaDB 数据库
docker run -d \
--name wordpress_db \
--network wordpress_net \
-e MARIADB_ROOT_PASSWORD=yangge \
-e MARIADB_DATABASE=wordpress \
-e MARIADB_USER=wpuser \
-e MARIADB_PASSWORD=yangge \
-v mariadb_data:/var/lib/mysql \
mariadb
参数说明:
| 参数 | 说明 |
|---|---|
| –name | 容器名称 |
| –network | 指定容器加入的网络 |
| -e MARIADB_ROOT_PASSWORD | root 密码 |
| -e MARIADB_DATABASE | 初始化数据库名 |
| -e MARIADB_USER / PASSWORD | 创建普通数据库用户 |
| -v mariadb_data:/var/lib/mysql | 使用命名卷持久化数据库数据 |
步骤四:部署 WordPress
docker run -d \
--name wordpress \
--network wordpress_net \
-p 83:80 \
-e WORDPRESS_DB_HOST=wordpress_db:3306 \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=yangge \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress_data:/var/www/html \
wordpress:latest
参数说明:
| 参数 | 说明 |
|---|---|
| -p 83:80 | 将宿主机 83 端口映射到容器 80 端口 |
| -e WORDPRESS_DB_HOST | 数据库连接地址,使用容器名作为主机名 |
| -e WORDPRESS_DB_USER / PASSWORD / NAME | 连接数据库的凭据和数据库名 |
| -v wordpress_data:/var/www/html | 持久化 WordPress 网站文件 |
步骤五:验证与访问
# 查看容器运行状态
docker ps
# 进入数据库容器验证连接
docker exec -it wordpress_db bash
mariadb -uwpuser -pyangge
在浏览器中访问 http://宿主机IP:83,即可进入 WordPress 初始化向导,按提示完成站点标题、管理员账号等配置。
3.5 部署经验小结
- 容器间通过 Docker 自定义网络通信时,可直接使用容器名作为主机名解析;
- 数据库密码建议使用复杂度更高的字符串,实验环境可简化,生产环境必须严格管理;
- 数据持久化应通过
-v挂载卷实现,避免容器删除后数据丢失; - 端口映射需注意宿主机端口是否被其他服务占用,可通过
ss -tnlp提前检查。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)