Linux 系统管理
1. Linux 系统管理覆盖范围
Linux 系统管理关注的是从系统启动到稳定运行的完整生命周期,核心目标是让服务器具备可登录、可运行、可监控、可恢复、可扩展的基础能力。
| 管理领域 | 关注对象 | 常用工具 |
|---|---|---|
| 启动与服务 | 启动链路、systemd 单元、运行级别 | systemctl、journalctl、grub2 |
| 用户与权限 | 用户、用户组、sudo、文件权限 | useradd、passwd、chmod、chown |
| 进程与资源 | 进程状态、CPU、内存、负载 | ps、top、free、uptime |
| 软件与配置 | 软件包、配置文件、依赖 | yum、dnf、apt、rpm、dpkg |
| 网络与远程 | IP、路由、端口、SSH | ip、ss、ping、ssh |
| 存储与备份 | 磁盘、文件系统、挂载、归档 | lsblk、df、mount、tar、rsync |
| 日志与排查 | 系统日志、服务日志、审计线索 | journalctl、tail、grep、dmesg |
2. 系统启动流程
Linux 启动流程可以理解为从硬件初始化到用户会话建立的分层接力过程。
BIOS/UEFI -> Boot Loader -> Kernel -> initramfs -> PID 1 -> systemd target -> login/session
2.1. 启动阶段说明
| 阶段 | 主要职责 |
|---|---|
| BIOS/UEFI | 完成硬件自检,选择启动设备。 |
| Boot Loader | 典型实现是 GRUB,负责加载 Linux Kernel 与 initramfs。 |
| Kernel | 初始化内核子系统、驱动、内存管理与根文件系统。 |
| initramfs | 在真实根文件系统挂载前提供临时用户空间。 |
| PID 1 | 通常是 systemd,负责拉起系统服务与目标状态。 |
| 登录服务 | 通过 getty、SSH 或图形登录管理器创建用户会话。 |
2.2. 常用启动排查命令
systemctl get-default
systemctl list-units --failed
systemctl status sshd
journalctl -b -p err
journalctl -u sshd --since "1 hour ago"
3. 用户、组与权限管理
Linux 使用用户、用户组和权限位控制资源访问。系统管理中应优先使用最小权限原则,避免长期使用 root 直接操作。
3.1. 用户与组管理
useradd -m -s /bin/bash appuser
passwd appuser
usermod -aG wheel appuser
id appuser
| 命令 | 作用 |
|---|---|
useradd | 创建用户。 |
passwd | 设置或修改密码。 |
usermod | 修改用户属性,例如追加用户组。 |
groupadd | 创建用户组。 |
id | 查看用户 UID、GID 与附属组。 |
3.2. 文件权限模型
Linux 文件权限由拥有者、所属组、其他用户三类主体组成,每类主体分别拥有读、写、执行权限。
ls -l /etc/passwd
chmod 640 app.conf
chown appuser:appuser app.conf
| 权限位 | 文件含义 | 目录含义 |
|---|---|---|
r | 读取文件内容。 | 列出目录项。 |
w | 修改文件内容。 | 新增、删除或重命名目录项。 |
x | 执行文件。 | 进入目录或访问目录下对象。 |
3.3. sudo 管理
生产环境中应通过 sudo 授权可审计的特权操作,而不是共享 root 密码。
visudo
sudo -l
sudo systemctl restart nginx
4. 文件查找与目录结构
4.1. 常见目录职责
| 目录 | 用途 |
|---|---|
/etc | 系统与服务配置。 |
/var | 日志、缓存、运行时数据。 |
/home | 普通用户主目录。 |
/usr | 用户态程序、库和文档。 |
/opt | 第三方软件或自定义部署目录。 |
/tmp | 临时文件。 |
/proc | 内核暴露的进程与系统状态虚拟文件系统。 |
/sys | 设备与内核对象虚拟文件系统。 |
4.2. 文件查找命令
find /etc -name "*.conf"
find /var/log -type f -mtime -1
locate nginx.conf
which bash
whereis nginx
find 适合实时精确查找,locate 依赖索引数据库,速度快但结果可能不是最新。
5. 软件包管理
不同发行版的软件包管理工具不同,但管理目标相同:安装、升级、查询、卸载软件,并处理依赖关系。
| 发行版体系 | 常用命令 | 包格式 |
|---|---|---|
| RHEL/CentOS/Rocky/Alma | yum、dnf、rpm | .rpm |
| Debian/Ubuntu | apt、dpkg | .deb |
# RHEL 系
sudo dnf install nginx
rpm -qa | grep nginx
rpm -ql nginx
# Debian 系
sudo apt update
sudo apt install nginx
dpkg -L nginx
6. systemd 服务管理
systemd 是现代 Linux 发行版常见的初始化系统和服务管理框架。服务通常通过 unit 文件定义启动命令、依赖关系、重启策略和运行用户。
6.1. 常用命令
systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx
systemctl enable nginx
systemctl disable nginx
6.2. reload 与 restart 区别
| 操作 | 行为 | 适用场景 |
|---|---|---|
reload | 重新加载配置,不重新创建主进程。 | 服务支持热加载且只修改配置。 |
restart | 停止后重新启动服务。 | 服务不支持热加载,或二进制、环境变量发生变化。 |
6.3. 示例 unit 文件
[Unit]
Description=Example App
After=network.target
[Service]
User=appuser
WorkingDirectory=/opt/example
ExecStart=/opt/example/bin/server
Restart=on-failure
[Install]
WantedBy=multi-user.target
修改 unit 文件后需要重新加载 systemd 配置。
systemctl daemon-reload
systemctl restart example.service
7. 进程与作业管理
7.1. 查看进程
ps aux | grep nginx
top
htop
pstree -p
pidof nginx
| 工具 | 适用场景 |
|---|---|
ps | 查看某一时刻的进程快照。 |
top | 动态观察 CPU、内存与进程列表。 |
pstree | 查看父子进程关系。 |
pidof | 根据进程名获取 PID。 |
7.2. 终止进程
kill -15 <pid>
kill -9 <pid>
pkill -f "process-keyword"
优先使用 SIGTERM 请求进程自行退出;只有在进程无法正常退出时,才考虑使用 SIGKILL。
7.3. 前后台作业
command &
jobs
fg %1
bg %1
nohup command > app.log 2>&1 &
8. 日志管理
日志排查应先明确对象:系统启动问题、内核问题、服务问题、认证问题还是业务日志问题。
journalctl -xe
journalctl -u nginx
journalctl -b
journalctl -p warning..alert
dmesg -T
tail -f /var/log/messages
tail -f /var/log/syslog
| 日志来源 | 常见内容 |
|---|---|
journalctl | systemd 管理的系统与服务日志。 |
/var/log/messages | RHEL 系常见系统日志。 |
/var/log/syslog | Debian 系常见系统日志。 |
/var/log/secure 或 /var/log/auth.log | 登录、认证和 sudo 相关日志。 |
dmesg | 内核环形缓冲区日志。 |
9. 网络配置与远程管理
9.1. 网络状态检查
ip addr
ip route
ss -lntup
ping 8.8.8.8
traceroute example.com
curl -I https://example.com
| 命令 | 作用 |
|---|---|
ip addr | 查看网卡与 IP 地址。 |
ip route | 查看路由表。 |
ss -lntup | 查看监听端口与关联进程。 |
ping | 检查基本连通性。 |
traceroute | 观察网络路径。 |
curl | 验证应用层访问。 |
9.2. SSH 管理要点
SSH 是 Linux 远程管理的基础通道。生产环境应优先使用密钥认证、限制 root 登录,并结合防火墙、安全组和审计日志进行管理。
ssh user@server
ssh-copy-id user@server
sudo systemctl status sshd
sudo journalctl -u sshd
10. 磁盘、文件系统与挂载
10.1. 查看磁盘与文件系统
lsblk
blkid
df -h
du -sh /var/*
mount | column -t
| 命令 | 作用 |
|---|---|
lsblk | 查看块设备层级结构。 |
df -h | 查看文件系统容量使用情况。 |
du -sh | 统计目录占用空间。 |
blkid | 查看设备 UUID 与文件系统类型。 |
mount | 查看或执行挂载。 |
10.2. 挂载配置
/etc/fstab 用于定义开机自动挂载。生产环境建议使用 UUID,避免设备名变化导致挂载失败。
UUID=xxxx-xxxx /data xfs defaults,nofail 0 0
修改后应先测试挂载配置。
mount -a
findmnt /data
11. 定时任务与自动化
Linux 常见定时任务由 cron 或 systemd timer 实现。
crontab -e
crontab -l
systemctl list-timers
示例:每天凌晨 2 点执行备份脚本。
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
定时任务排查时,应同时检查执行用户、环境变量、脚本权限、工作目录和日志输出。
12. 备份、同步与压缩
12.1. 归档与压缩
tar -czf etc-backup.tar.gz /etc
tar -xzf etc-backup.tar.gz -C /tmp
zip -r logs.zip /var/log
unzip logs.zip -d /tmp/logs
12.2. 文件同步
rsync -avz /data/ backup-server:/backup/data/
rsync -avz --delete /data/ backup-server:/backup/data/
--delete 会删除目标端多余文件,使用前应确认源目录和目标目录无误。
13. 性能监控与基础排查
13.1. 基础指标
uptime
free -h
vmstat 1
iostat -xz 1
mpstat -P ALL 1
| 指标 | 观察重点 |
|---|---|
| Load Average | 是否长期高于 CPU 核数。 |
| CPU 使用率 | 用户态、系统态、iowait、steal 的比例。 |
| 内存 | 可用内存、缓存、swap 使用情况。 |
| 磁盘 IO | 设备利用率、等待时间、队列长度。 |
| 网络 | 丢包、延迟、连接数、监听端口。 |
13.2. 基础排查顺序
- 明确现象:无法登录、服务异常、响应慢、磁盘满、CPU 高、IO 高等。
- 确认影响范围:单机、单服务、单网段还是整体集群。
- 查看最近变更:配置、发布、系统升级、定时任务、容量增长。
- 查看系统资源:CPU、内存、磁盘、网络、进程。
- 查看日志:系统日志、服务日志、内核日志、认证日志。
- 先止血再根因:扩容、重启、限流、回滚与后续复盘分开处理。
14. 常见面试问答
| 问题 | 回答要点 |
|---|---|
| 如何查找文件? | 使用 find 做实时条件查找,使用 locate 做索引查找。 |
| 如何创建用户并设置主目录? | 使用 useradd -m -d /home/user user,再通过 passwd 设置密码。 |
| 如何让服务配置立即生效? | 服务支持热加载时使用 systemctl reload,否则使用 restart。 |
| 如何查看正在运行的进程? | 使用 ps aux、top、htop 或 pstree。 |
| 如何查看系统日志? | systemd 系统使用 journalctl,传统日志通常位于 /var/log。 |
| 如何查看端口占用? | 使用 ss -lntup 或 lsof -i :port。 |
chmod 755 表示什么? | 所有者可读写执行,组用户和其他用户可读执行。 |
| 为什么不建议直接共享 root? | 难以审计、风险集中,应使用个人账号加 sudo 授权。 |
| 如何判断磁盘是否满? | 使用 df -h 看文件系统容量,使用 du -sh 定位目录占用。 |
| 如何排查服务启动失败? | 查看 systemctl status、journalctl -u、配置语法和依赖服务。 |
15. 生产管理清单
- 账号:普通用户登录,特权操作走
sudo,离职账号及时禁用。 - 权限:配置文件和密钥文件遵循最小权限原则。
- 服务:核心服务设置开机自启,变更后确认
systemctl status。 - 日志:关键服务日志有留存、轮转和检索方式。
- 备份:备份任务有日志、校验和恢复演练。
- 容量:磁盘、inode、内存、CPU 和网络连接数有监控阈值。
- 安全:SSH 密钥认证、防火墙规则、系统补丁和审计日志保持可控。
- 变更:配置修改前备份,发布后验证,异常时具备回滚方案。
关联文档
- Linux:Linux 技术体系入口。
- Linux 基础:Linux 基础命令、目录与系统概念补充。
- Linux 进程状态:进程状态、调度与排查相关内容。
- Linux 磁盘管理:磁盘、分区、文件系统与挂载管理。
- SSH 认证原理与配置:远程登录与 SSH 安全配置。
- 服务器 IO 过高排查流程:磁盘 IO 异常时的排查流程。
