Linux是一个自由和开放源码的类UNIX操作系统内核,由芬兰赫尔辛基大学学生Linus Torvalds于1991年创建。严格来说,"Linux"仅指内核,但日常使用中常指基于该内核的完整操作系统(GNU/Linux)。
| 年份 | 事件 |
|---|---|
| 1969 | Ken Thompson在Bell Labs创建UNIX |
| 1983 | Richard Stallman发起GNU项目,目标是创建自由操作系统 |
| 1987 | MINIX发布,教学用小型UNIX系统 |
| 1991.8.25 | Linus在comp.os.minix发帖宣布Linux项目 |
| 1994 | Linux 1.0发布,首个稳定版本 |
| 1996 | Linux 2.0,支持SMP多处理器 |
| 2005 | Linus创建Git版本控制系统管理内核代码 |
| 2024 | Linux内核6.x,驱动全球96%+的服务器 |
| 特性 | Linux | Windows | macOS |
|---|---|---|---|
| 内核 | Linux (Monolithic/Module) | NT Hybrid | XNU (Hybrid) |
| 开源 | 完全开源 | 闭源 | 部分开源(Darwin) |
| 许可 | GPL v2 | 商业许可 | APSL + 商业 |
| Shell | Bash/Zsh/Fish等 | PowerShell/CMD | Zsh |
| 包管理 | apt/yum/pacman等 | MSI/EXE/Store | Homebrew |
| 服务器份额 | ~96% | ~2% | ~1% |
┌─────────────────────────────────────────┐
│ 用户空间 (User Space) │
├─────────────────────────────────────────┤
│ 应用层 │ Shell │ GUI │ 服务 │
├─────────────────────────────────────────┤
│ 系统调用接口 (System Call Interface) │
├─────────────────────────────────────────┤
│ 内核空间 (Kernel Space) │
├──────┬──────┬──────┬───────┬────────────┤
│ 进程 │ 内存 │ 文件 │ 网络 │ 设备驱动 │
│ 管理 │ 管理 │ 系统 │ 协议栈 │ 模块 │
├──────┴──────┴──────┴───────┴────────────┤
│ 硬件抽象层 (HAL) │
├─────────────────────────────────────────┤
│ 硬件 (CPU/MEM/DISK/NET) │
└─────────────────────────────────────────┘
现代CPU提供特权级机制(x86的Ring 0-3),Linux使用Ring 0(内核态)和Ring 3(用户态):
open()、read()、write()、fork() ┌── Debian ──┬── Ubuntu ──┬── Linux Mint
│ │ ├── Pop!_OS
│ │ └── Kali Linux
Slackware │
───┬────────┤ ┌── Fedora ──── RHEL ──┬── CentOS Stream
│ │ │ ├── Rocky Linux
│ ├── Red Hat ──┤ └── AlmaLinux
│ │ └── openSUSE ──┬── Leap
│ │ └── Tumbleweed
│ │
│ └── Arch ──── Arch Linux ─── Manjaro ─── Garuda
│
└── Gentoo ──── Funtoo
| 发行版 | 包管理 | 发布模式 | 适用场景 |
|---|---|---|---|
| Ubuntu Server | apt/dpkg | 6个月/2年LTS | 云计算、开发 |
| RHEL | yum/dnf/rpm | 商业订阅 | 企业生产 |
| Rocky/Alma | dnf/rpm | 跟RHEL | 企业替代 |
| Debian | apt/dpkg | ~2年稳定版 | 稳定性优先 |
| SLES | zypper/rpm | 商业订阅 | 企业/SAP |
$ uname -a
Linux VM-4-3-ubuntu 6.8.0-101-generic #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 9 10:15:05 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/os-release
NAME=Ubuntu VERSION=24.04.4 LTS (Noble Numbat) ID=ubuntu
$ cat /proc/version
Linux version 6.8.0-101-generic (buildd@lcy02-amd64-051) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 9 10:15:05 UTC 2026
$ lscpu
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Vendor ID: AuthenticAMD BIOS Vendor ID: Smdbmds Model name: AMD EPYC 7K62 48-Core Processor BIOS Model name: 3.0 CPU @ 2.0GHz BIOS CPU family: 1 CPU family: 23 Model: 49 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 Stepping: 0 BogoMIPS: 5190.24 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 arat Hypervisor vendor: KVM
$ free -h
total used free shared buff/cache available Mem: 7.5Gi 2.0Gi 1.7Gi 49Mi 4.1Gi 5.5Gi Swap: 9.9Gi 161Mi 9.8Gi
$ df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda2 79G 29G 47G 39% / /dev/vda2 79G 29G 47G 39% /
$ uptime
21:37:29 up 19:21, 0 user, load average: 1.07, 0.76, 0.64
$ w
21:37:29 up 19:21, 0 user, load average: 1.07, 0.76, 0.64 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
$ lsmod | head -10
Module Size Used by ipt_REJECT 12288 175 nf_reject_ipv4 12288 1 ipt_REJECT tcp_diag 12288 0 inet_diag 28672 1 tcp_diag nf_conntrack_netlink 57344 0 xt_nat 12288 5 xt_tcpudp 16384 0 veth 45056 0 xt_conntrack 12288 2
$ systemctl get-default
graphical.target
$ systemctl list-unit-files --type=service --state=enabled | head -15
UNIT FILE STATE PRESET apparmor.service enabled enabled apport.service enabled enabled blk-availability.service enabled enabled chrony.service enabled enabled cloud-config.service enabled enabled cloud-final.service enabled enabled cloud-init-local.service enabled enabled cloud-init.service enabled enabled console-setup.service enabled enabled containerd.service enabled enabled cron.service enabled enabled dmesg.service enabled enabled docker.service enabled enabled e2scrub_reap.service enabled enabled
| 方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 物理机安装 | 生产服务器 | 性能最优 | 硬件兼容性风险 |
| 虚拟机 | 学习/开发 | 快照恢复方便 | 性能损失5-15% |
| 云服务器 | 生产/弹性 | 快速部署、弹性 | 成本、数据安全 |
| WSL2 | Windows开发 | 无缝集成 | 不完全兼容 |
| 容器(LXC/Docker) | 隔离应用 | 轻量级 | 非完整OS |
/boot - 1GB (EFI分区,ext4/xfs)/ - 20-30GB (根分区,xfs)/home - 剩余空间 (用户数据,xfs)swap - 内存≤8GB时=内存大小,>8GB时=8GB# 1. 更新系统
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo dnf update -y # RHEL/Fedora
# 2. 设置时区
sudo timedatectl set-timezone Asia/Shanghai
# 3. 设置主机名
sudo hostnamectl set-hostname myserver
# 4. 配置网络(Netplan示例)
cat /etc/netplan/01-netcfg.yaml
# 5. 安装基础工具
sudo apt install -y vim curl wget git htop net-tools
# 6. 配置SSH
sudo systemctl enable --now ssh
sudo ufw allow ssh
# 体现Linux哲学的典型用法
# 管道连接:查找占空间最大的5个目录
du -sh /* | sort -rh | head -5
# 重定向:保存命令输出
ls -la /etc/ > /tmp/etc-listing.txt 2>&1
# 一切皆文件:查看CPU信息就是读文件
cat /proc/cpuinfo | grep "model name" | head -1
# 小工具组合:统计nginx日志中访问最多的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
原因:未安装桌面环境或显卡驱动不兼容
排查:
# 检查是否安装了桌面
systemctl get-default # 应该是 graphical.target
dpkg -l | grep desktop # 查看桌面包
journalctl -b | grep -i error # 查看启动错误
# 安装桌面(Ubuntu)
sudo apt install ubuntu-desktop
# 切换到图形目标
sudo systemctl set-default graphical.target
sudo systemctl isolate graphical.target
排查:
# 查看网络接口
ip addr show
# 查看网络管理器状态
systemctl status NetworkManager
# 检查DNS
cat /etc/resolv.conf
# 测试连通性
ping -c 3 8.8.8.8
ping -c 3 google.com
排查:
# 检查SSH服务
systemctl status sshd
# 检查监听端口
ss -tlnp | grep 22
# 检查防火墙
sudo iptables -L -n | grep 22
sudo ufw status
# 查看SSH配置
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"
使用命令获取以下信息并记录:
查看以下"文件"内容,理解Linux"一切皆文件"的设计:
# CPU信息
cat /proc/cpuinfo | head -5
# 内存信息
cat /proc/meminfo | head -5
# 内核启动参数
cat /proc/cmdline
# 挂载的文件系统
cat /proc/mounts | head -5
# 系统运行时间
cat /proc/uptime
使用管道组合命令完成以下任务:
/etc下所有.conf文件的数量# 参考答案
find /etc -name "*.conf" 2>/dev/null | wc -l
ss -tn state established | wc -l
ps aux --sort=-%mem | head -6
✅ 了解Linux历史与架构
✅ 掌握系统信息查看命令
✅ 理解Linux设计哲学
✅ 能够进行基本故障排查
下一课 → 文件系统层次结构,深入理解Linux目录布局