这是《Linux 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 Linux 是互联网后端的主流操作系统。数据库、消息队列、缓存、容器、网关、微服务,几乎都运行在 Linux 上。理解 Linux 能让你把“应用慢”拆成 CPU、内存、IO、网络、进程、锁和调度问题,而不是只重启服务。
本章先建立 Linux 的整体视图:系统组成、内核与用户态、文件系统、进程、Shell 和生产运维视角。
1.1 Linux 系统组成
Hardware
-> Kernel
|-- Process Scheduler
|-- Memory Management
|-- Virtual File System
|-- Network Stack
|-- Device Drivers
+-- IPC / Security
-> System Call Interface
-> User Space
|-- Shell
|-- System Libraries
|-- Daemons
+-- Applications
| 层 | 职责 |
|---|---|
| 硬件 | CPU、内存、磁盘、网卡 |
| 内核 | 管理资源、隔离进程、提供系统调用 |
| 系统调用 | 用户态访问内核能力的入口 |
| 用户态 | Shell、服务进程、应用 |
内核与用户态分离是为了安全和稳定:
- 用户进程不能直接访问硬件;
- 权限通过系统调用检查;
- 进程地址空间隔离;
- 异常进程不应直接拖垮系统;
- 内核态和用户态切换有成本。
1.2 Shell 是什么
Shell 是命令解释器,也是运维自动化的语言。
查看当前 Shell:
echo $SHELL
常用 Shell:
| Shell | 说明 |
|---|---|
| bash | Linux 常见默认 Shell |
| zsh | 交互体验好 |
| sh | POSIX 基础 Shell |
| fish | 语法友好,但兼容性不同 |
查看系统:
uname -a
cat /etc/os-release
uptime
whoami
pwd
1.3 文件系统层级
Linux 采用统一目录树。
| 目录 | 内容 |
|---|---|
/bin |
基本命令 |
/boot |
启动文件 |
/dev |
设备文件 |
/etc |
配置文件 |
/home |
用户目录 |
/root |
root 用户目录 |
/var |
日志、缓存、可变数据 |
/tmp |
临时文件 |
/opt |
第三方软件 |
/srv |
服务数据 |
/proc |
内核和进程信息 |
/sys |
设备与内核参数 |
查看目录:
ls -lah /var/log
df -hT
du -sh /var/log/*
/proc 是虚拟文件系统:
cat /proc/cpuinfo
cat /proc/meminfo
cat /proc/loadavg
1.4 一切皆文件
Linux 的很多资源都以文件形式暴露:
| 路径 | 资源 |
|---|---|
/dev/sda |
磁盘设备 |
/dev/null |
黑洞设备 |
/proc/self/status |
当前进程状态 |
/etc/nginx/nginx.conf |
配置 |
/var/log/syslog |
日志 |
标准流:
| 文件描述符 | 名称 |
|---|---|
| 0 | stdin |
| 1 | stdout |
| 2 | stderr |
重定向:
command > out.log
command >> append.log
command 2> error.log
command > all.log 2>&1
管道:
ps aux | grep java | head -20
1.5 进程初步
进程是资源分配单位,线程是 CPU 调度单位。
查看进程:
ps aux
ps -ef
top
htop
进程状态:
| 状态 | 含义 |
|---|---|
| R | 运行或可运行 |
| S | 可中断睡眠 |
| D | 不可中断 IO 等待 |
| Z | 僵尸进程 |
| T | 暂停 |
启动后台进程:
./server &
查看任务:
jobs
fg %1
bg %1
终止进程:
kill -15 PID
kill -9 PID
生产上优先使用 SIGTERM,让应用优雅退出;SIGKILL 不给清理机会。
1.6 用户与权限
查看当前身份:
id
whoami
groups
文件权限:
-rw-r--r--
含义:
| 位 | 说明 |
|---|---|
- |
文件 |
rw- |
属主读写 |
r-- |
属组读 |
r-- |
其他人读 |
修改权限:
chmod 644 app.conf
chmod 750 deploy.sh
chown app:app /opt/app
生产原则:
- 应用使用独立用户运行;
- 不用 root 启动业务;
- 秘密文件最小权限;
- sudo 需要审计;
- SSH 禁止 root 远程登录;
- 权限变更要有配置管理。
1.7 系统启动与服务
传统 SysV init 逐步被 systemd 取代。
systemd 常用命令:
systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx
systemctl disable nginx
journalctl -u nginx -f
一个服务单元示例:
[Unit]
Description=Order Service
After=network-online.target
[Service]
User=app
WorkingDirectory=/opt/order
ExecStart=/usr/bin/java -jar /opt/order/app.jar
Restart=always
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
1.8 生产视角:先看负载
登录一台慢服务器,先看:
uptime
top
free -h
df -h
dmesg -T | tail -100
load average 表示系统平均负载:
load average: 4.20, 3.80, 3.10
判断依据:
- 和 CPU 核数比较;
- 看趋势;
- 区分 CPU 高、IO 等待高还是 D 状态进程多;
- 结合内存和交换分区;
- 结合应用日志和监控。
查看 CPU 核数:
nproc
lscpu
1.9 Linux 学习路线
第一阶段:日常操作
- 文件操作;
- 文本查找;
- 权限;
- 进程;
- 日志查看。
第二阶段:服务管理
- systemd;
- 软件包;
- 网络;
- 磁盘;
- 定时任务;
- Shell 脚本。
第三阶段:性能分析
- CPU;
- 内存;
- IO;
- 网络;
- 进程状态;
- 火焰图。
第四阶段:自动化与安全
- Ansible;
- 审计;
- 防火墙;
- 加固;
- 备份恢复;
- 故障演练。
本章小结
Linux 由内核、系统调用和用户态组成。文件、进程、权限和服务是日常运维的核心对象;CPU、内存、IO 和网络是性能分析的四大资源。生产排障应从系统负载和资源指标入手,再进入应用日志和链路追踪。
思考题
- 内核态和用户态分离有什么意义?
/proc为什么没有真实磁盘占用却能读到进程信息?kill -9和kill -15有什么区别?- 为什么不建议用 root 运行业务进程?
- 服务器 load 高时,如何判断是 CPU、IO 还是不可中断等待?