LinuxNotes

第 01 章:认识 Linux

zjc 于 2026-01-01 发布

这是《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. 权限通过系统调用检查;
  3. 进程地址空间隔离;
  4. 异常进程不应直接拖垮系统;
  5. 内核态和用户态切换有成本。

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

生产原则:

  1. 应用使用独立用户运行;
  2. 不用 root 启动业务;
  3. 秘密文件最小权限;
  4. sudo 需要审计;
  5. SSH 禁止 root 远程登录;
  6. 权限变更要有配置管理。

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

判断依据:

  1. 和 CPU 核数比较;
  2. 看趋势;
  3. 区分 CPU 高、IO 等待高还是 D 状态进程多;
  4. 结合内存和交换分区;
  5. 结合应用日志和监控。

查看 CPU 核数:

nproc
lscpu

1.9 Linux 学习路线

第一阶段:日常操作

第二阶段:服务管理

第三阶段:性能分析

第四阶段:自动化与安全

本章小结

Linux 由内核、系统调用和用户态组成。文件、进程、权限和服务是日常运维的核心对象;CPU、内存、IO 和网络是性能分析的四大资源。生产排障应从系统负载和资源指标入手,再进入应用日志和链路追踪。

思考题

  1. 内核态和用户态分离有什么意义?
  2. /proc 为什么没有真实磁盘占用却能读到进程信息?
  3. kill -9kill -15 有什么区别?
  4. 为什么不建议用 root 运行业务进程?
  5. 服务器 load 高时,如何判断是 CPU、IO 还是不可中断等待?