Linux 与 DevOps 常用高频命令速查
引言:为什么我们需要一份现代化的命令速查手册?
Linux 命令行浩如烟海,许多开发者在日常运维和排查故障时,往往习惯机械性地复制粘贴,遇到复杂场景(如密钥管理、跳板机穿透、容器无 Shell 调试、定时任务静默失效)时容易陷入困境。
本文摒弃生搬硬套的语法手册风格,以 “真实生产与开发场景” 为导向,将分散的命令归纳为 5 大高频实战模块,助你建立清晰的命令行心智模型。
graph TD
Root["现代 DevOps 命令体系"]
Root --> A["1. SSH 远程与密钥矩阵"]
A --> A1["Ed25519 现代高强密钥"]
A --> A2["~/.ssh/config 多主机与跳板机"]
A --> A3["本地与动态端口转发"]
Root --> B["2. 定时任务与进程守护"]
B --> B1["Crontab 语法与环境变量避坑"]
B --> B2["Supervisord 进程崩溃自启"]
Root --> C["3. 文件与系统管理"]
C --> C1["ln 软硬链接管理与安全删除"]
C --> C2["date 时区与时间戳转换"]
C --> C3["磁盘与内存分析 (df / du / free)"]
Root --> D["4. 网络排查与命名空间"]
D --> D1["lsof 与 ss 端口连接定位"]
D --> D2["nsenter 穿透容器命名空间"]
Root --> E["5. 现代 CLI 生产力工具"]
E --> E1["ripgrep 极速文本检索"]
E --> E2["fzf 命令行交互模糊检索"]
E --> E3["jq JSON 数据切片与提取"]
一、 SSH 远程连接与密钥矩阵
1. 生成现代安全的 SSH 密钥对(首选 Ed25519)
摒弃老旧且体积庞大的 RSA 2048/4096,优先使用性能更好、安全性更高的 Ed25519 椭圆曲线算法:
1# 生成 ed25519 密钥对(直接回车或设置保护密码)
2ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519
3
4# 一键分发公钥到远程服务器(免密登录)
5ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.100
2. 优雅管理多主机:配置 ~/.ssh/config
无需每次记忆冗长的 IP、端口与用户名,在 ~/.ssh/config 中配置别名:
1# 个人云服务器
2Host cloud
3 HostName 1.2.3.4
4 User root
5 Port 2222
6 IdentityFile ~/.ssh/id_ed25519
7
8# 内网树莓派 / HomeLab
9Host rpi
10 HostName 192.168.1.100
11 User pi
12 IdentityFile ~/.ssh/id_ed25519
13
14# 经由跳板机访问内网机器 (ProxyJump)
15Host internal-db
16 HostName 10.0.0.5
17 User dbadmin
18 ProxyJump cloud
配置后,只需输入 ssh cloud 或 ssh internal-db 即可直接一键直连!
3. SSH 端口转发神技
1# 本地端口转发 (-L):将远程服务器的 3306 数据库映射到本地 13306
2ssh -N -L 13306:127.0.0.1:3306 user@remote-server
3
4# 动态 SOCKS5 代理 (-D):把远程机器变成轻量 SOCKS5 代理通道
5ssh -N -D 10808 user@remote-server
二、 定时任务与守护进程管理
1. Crontab 语法与关键避坑指南
Crontab 的标准时间格式为 5 段:分 时 日 月 周。
1# ┌───────────── 分钟 (0 - 59)
2# │ ┌─────────── 小时 (0 - 23)
3# │ │ ┌───────── 日 (1 - 31)
4# │ │ │ ┌─────── 月 (1 - 12)
5# │ │ │ │ ┌───── 星期几 (0 - 7, 0和7都代表周日)
6# * * * * * 命令
⚠️ Crontab 常见三大致命陷阱:
- 环境变量缺失:Crontab 默认的
PATH非常简略(通常只有/usr/bin:/bin),导致脚本找不到docker或python3。务必使用绝对路径(如/usr/local/bin/python3),或者在脚本开头显式声明export PATH=$PATH:/usr/local/bin;- 工作目录问题:Cron 执行时默认在用户家目录,相对路径会读错文件,脚本内请先
cd /path/to/workdir;- 日志输出静默丢失:务必重定向标准输出与错误输出,便于复盘排错:
10 3 * * * /usr/bin/bash /opt/backup.sh >> /var/log/backup.log 2>&1
2. 使用 Supervisord 进行轻量级进程保活
对于非容器化的长驻进程(如 Python 爬虫、自建脚本),用 supervisord 能够轻松实现崩溃自启与日志管理:
1; /etc/supervisor/conf.d/my-app.conf
2[program:my-app]
3directory=/opt/my-app
4command=/usr/bin/python3 app.py
5autostart=true
6autorestart=true
7stderr_logfile=/var/log/my-app.err.log
8stdout_logfile=/var/log/my-app.out.log
9user=www-data
1# 常用管理命令
2sudo supervisorctl reread # 读取新增配置
3sudo supervisorctl update # 更新并启动新程序
4sudo supervisorctl status # 查看所有进程状态
5sudo supervisorctl restart all # 重启所有受管进程
三、 文件链接与系统时间操作
1. ln 软链接与硬链接实战
1# 创建软链接(符号链接):ln -s <真实源文件/目录> <软链接名称>
2ln -s /mnt/data/music ~/Music
3
4# ⚠️ 注意事项:
5# 1. 建议源路径使用【绝对路径】,避免移动链接后路径断裂;
6# 2. 删除目录软链接时,严禁加末尾斜杠!
7rm ~/Music # 正确:只删除软链接本身
8rm -rf ~/Music/ # 危险:可能会清空源目录下的真实内容!
2. date 时间格式化与时间戳互转
1# 1. 格式化输出当前标准时间
2date +"%Y-%m-%d %H:%M:%S" # 输出: 2026-09-25 15:00:00
3
4# 2. 将 Unix 时间戳转换为人类可读时间
5date -d @1727258400 +"%Y-%m-%d %H:%M:%S" # (Linux)
6date -r 1727258400 +"%Y-%m-%d %H:%M:%S" # (macOS)
7
8# 3. 获取当前时间的 10 位 Unix 时间戳
9date +%s
四、 容器与系统命名空间穿透 (nsenter)
在云原生和 Docker 运维中,许多精简镜像(如 Scratch、Distroless、Alpine 精简版)内部没有安装 bash、curl、netstat 等排错工具,导致 docker exec -it <container> sh 无法进入。
此时,我们可以借助 Linux 内核原生工具 nsenter,直接从宿主机“穿透”进入容器的命名空间(Network/PID/Mount 等):
sequenceDiagram
autonumber
participant Host as 宿主机 (拥有完整工具链)
participant Kernel as Linux 内核命名空间
participant Container as 极简容器 (无 curl/bash)
Host->>Kernel: 查询容器主进程 PID (docker inspect)
Host->>Kernel: nsenter -t <PID> -n (共享容器网络命名空间)
Kernel->>Container: 宿主机直接使用 tcpdump / curl 排查容器网络!
1# 1. 获取容器在宿主机上的真实 PID
2PID=$(docker inspect --format '{{ .State.Pid }}' <container_name_or_id>)
3
4# 2. 仅穿透进入容器的网络命名空间 (Network Namespace)
5# 这样可以直接在宿主机上使用宿主机的 curl/tcpdump/ss 测试容器内的网络情况!
6sudo nsenter -t $PID -n ss -tulnp
7sudo nsenter -t $PID -n tcpdump -i eth0 port 80
8
9# 3. 完整穿透进入容器全部命名空间
10sudo nsenter -t $PID -m -u -i -n -p
五、 现代 CLI 生产力与效率工具集
用现代高性能开源工具替换传统老旧命令,体验呈数量级提升:
| 场景 | 传统命令 | 现代替代品 | 核心优势 |
|---|---|---|---|
| 代码/文本搜索 | grep -r | rg (ripgrep) | 基于 Rust,极速多线程,自动忽略 .gitignore 与二进制文件 |
| 交互式模糊搜索 | 纯命令翻页 | fzf | 交互式模糊检索历史命令、文件名、Git 提交 |
| JSON 数据处理 | 手工解析 | jq | 命令行优雅过滤、高亮与切片提取 JSON 字段 |
| 磁盘空间排查 | du -sh * | ncdu / dust | 交互式目录占用分析,按大小可视化排序与删除 |
| 系统资源监控 | top | btop / htop | 炫酷仪表盘、支持 CPU/内存/网络/磁盘/进程树一览无余 |
1# 常用效率一行流:
2# 1. 查找包含某个关键词的文件
3rg "DATABASE_URL" /opt/projects/
4
5# 2. 交互式模糊搜索历史执行过的命令
6history | fzf
7
8# 3. 快速查找占用磁盘最大的前 10 个目录
9du -ah /var/log | sort -rh | head -n 10
10
11# 4. 快速定位某个端口被谁占用并查看进程名
12sudo lsof -i :8080
13# 或
14sudo ss -tulnp | grep :8080
结语
熟练掌握现代命令行工具与进阶技巧,不仅能让日常部署与开发效率倍增,更能让你在面对各种疑难杂症时游刃有余。建议将本手册收藏备用!