OPS · Linux / Docker / 服务器运维
服务器运维速查
从文件权限、进程管理到网络传输、任务计划,再到性能观测、日志轮转与 Docker 容器编排,日常运维最常用的 61 条命令一张表收齐,随查随用。
61条命令
12大场景
∞持续更新
📖 速查表
点击展开各小节
📂 文件与目录操作
| 命令 | 说明 | 示例 |
|---|---|---|
| ls | 列出目录内容。-l 详情,-a 显示隐藏文件,-h 人类可读 | ls -lah ls *.log |
| cd | 切换工作目录。cd ~ 回家目录,cd - 回上一个目录 | cd /var/log cd ~/projects |
| pwd | 显示当前工作目录的绝对路径 | pwd # 输出: /home/user/projects |
| cp | 复制文件或目录。-r 递归复制目录,-p 保留属性 | cp file.txt /backup/ cp -r ./dist/ /deploy/ |
| mv | 移动或重命名文件/目录 | mv old.txt new.txt mv file.txt /tmp/ |
| rm | 删除文件或目录。-rf 强制递归删除(⚠️ 谨慎使用) | rm temp.log rm -rf node_modules/ |
| mkdir | 创建目录。-p 递归创建父目录 | mkdir -p a/b/c/d |
🔐 权限与用户
| 命令 | 说明 | 示例 |
|---|---|---|
| chmod | 修改文件权限。u/g/o/a 用户/组/其他人/全部,+/-/= 添加/移除/设置 | chmod +x script.sh chmod 755 app.py |
| chown | 修改文件所属用户和组。-R 递归更改 | chown user:group file.txt chown -R www-data:www-data /var/www |
⚙️ 系统与进程管理
| 命令 | 说明 | 示例 |
|---|---|---|
| ps | 查看进程快照。aux 显示所有进程详细信息 | ps aux | grep nginx ps -ef |
| top / htop | 实时显示系统资源占用和进程列表。htop 是增强版(需安装) | top -bn1 htop |
| kill | 发送信号终止进程。-9 强制杀死,-15 优雅终止 | kill -15 12345 kill -9 12345 |
| free | 查看内存使用情况。-h 人类可读格式 | free -h free -m |
| du | 统计文件或目录的磁盘使用量 | du -sh /var/log du --max-depth=1 -h |
| df | 查看文件系统磁盘空间使用情况 | df -h df -i 查看 inode |
| uname | 查看系统内核信息。-a 显示全部信息 | uname -a # Linux hostname 6.1.0 #1 SMP ... |
| uptime | 查看系统已运行时间、负载平均值 | uptime # 14:23 up 30 days, 2:15, 3 users |
🔍 搜索与文本处理
| 命令 | 说明 | 示例 |
|---|---|---|
| grep | 在文件中搜索匹配模式的行。-r 递归,-i 忽略大小写,-n 显示行号 | grep -rn "TODO" src/ grep -E "error|warn" app.log |
| find | 在目录树中查找文件,支持按名称、类型、大小、时间等条件 | find /var -name "*.log" -size +100M find . -type f -mtime -7 |
| sed | 流编辑器,用于对文本进行替换、删除、插入等操作 | sed -i 's/old/new/g' file.txt ⚠ 易错:-i 直接改源文件 sed -n '10,20p' file.log |
| awk | 强大的文本分析工具,按字段处理、格式化输出 | awk '{print $1, $NF}' access.log awk -F: '{print $1}' /etc/passwd |
📦 网络与文件传输
| 命令 | 说明 | 示例 |
|---|---|---|
| curl | HTTP 请求工具,支持 GET/POST/HEAD 等方法及各种协议 | curl -I https://example.com curl -X POST -d '{"k":"v"}' -H "Content-Type: application/json" url |
| wget | 下载工具,支持断点续传、递归下载 | wget https://example.com/file.zip wget -c -O output.zip url |
| ssh | 远程登录服务器,-p 指定端口,-i 指定密钥 | ssh -p 2222 user@host ssh -i ~/.ssh/id_rsa user@host |
| scp | 基于 SSH 的安全文件复制,-r 递归复制目录 | scp file.txt user@host:/tmp/ scp -r ./dist/ user@host:/var/www/ |
🗜️ 压缩与归档
| 命令 | 说明 | 示例 |
|---|---|---|
| tar | 归档工具。-czf 创建 gzip 压缩,-xzf 解压 | tar -czf archive.tar.gz /path tar -xzf archive.tar.gz |
⏰ 任务计划与系统服务
| 命令 | 说明 | 示例 |
|---|---|---|
| crontab | 管理定时任务。-e 编辑,-l 列出,格式:分 时 日 月 周 命令 | crontab -e 0 3 * * * /backup.sh 每天 3 点备份 |
| systemctl | 管理系统服务(systemd)。启动、停止、启用、查看状态 | systemctl start nginx systemctl enable nginx systemctl status nginx |
| journalctl | 查看 systemd 日志。-u 查看特定服务,-f 实时跟踪 | journalctl -u nginx -f journalctl --since "1 hour ago" |
| lsof | 列出当前系统打开的文件(常用于查看端口占用) | lsof -i :8080 lsof -iTCP -sTCP:LISTEN |
| iptables | Linux 防火墙规则管理。-L 查看规则,-A 添加规则 | iptables -L -n iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
🐳 Docker 容器管理
| 命令 | 说明 | 示例 |
|---|---|---|
| docker ps | 列出运行中的容器。-a 显示全部(含已停止) | docker ps docker ps -a --format "table {{.Names}}\t{{.Status}}" |
| docker images | 列出本地镜像列表 | docker images docker images --filter "dangling=true" |
| docker run | 创建并启动一个新容器。-d 后台运行,-p 端口映射,--name 命名 | docker run -d -p 80:80 --name web nginx docker run -it --rm ubuntu bash |
| docker build | 从 Dockerfile 构建镜像。-t 标记标签 | docker build -t my-app:latest . docker build --no-cache -t my-app . |
| docker exec | 在运行中的容器内执行命令。-it 交互式终端 | docker exec -it web bash docker exec web ls /etc/nginx |
| docker logs | 查看容器日志。-f 实时跟踪,--tail 只看最近 N 行 | docker logs -f web docker logs --tail 100 web |
| docker stop | 优雅停止一个或多个容器(发送 SIGTERM) | docker stop web docker stop $(docker ps -q) |
| docker rm | 删除一个或多个已停止的容器。-f 强制删除运行中的容器 | docker rm web docker rm -f web |
| docker rmi | 删除一个或多个本地镜像。-f 强制删除 | docker rmi nginx:latest |
🧩 Docker Compose 与高级管理
| 命令 | 说明 | 示例 |
|---|---|---|
| docker-compose up | 启动 Compose 项目中所有服务。-d 后台运行 | docker-compose up -d docker-compose up -d web db |
| docker-compose down | 停止并移除所有容器、网络,默认不移除卷 | docker-compose down docker-compose down -v 同时移除卷 |
| docker network | 管理 Docker 网络。ls 列出,create 创建,connect 连接容器 | docker network ls docker network create --driver bridge my-net |
| docker volume | 管理 Docker 卷。ls 列出,create 创建,prune 清理 | docker volume ls docker volume create my-vol |
| docker system prune | 清理 Docker 未使用的资源(容器、网络、镜像、构建缓存) | docker system prune -a --volumes ⚠️ 全面清理 |
📈 性能观测
| 命令 | 说明 | 示例 |
|---|---|---|
| top | 关键指标:load average 与 CPU 核数对比判断负载(超过核数即任务在排队),按 P/M 按 CPU/内存排序定位进程 | top -bn1 | head -20 # load 8.0 = 4 核已满载排队 |
| vmstat | 常用列:r 运行队列长度(大于核数说明 CPU 瓶颈)、b 阻塞进程数、wa IO 等待占比(高即磁盘瓶颈) | vmstat 1 5 # 每 1 秒采样,共 5 次 |
| iostat -x | 看磁盘扩展统计:%util 接近 100% 说明设备饱和,结合 await 判断单次 IO 延迟是否过高 | iostat -x 1 # %util 高 + await 大 → 磁盘慢 |
| free | buff/cache 是内核缓存、可随时回收,判断内存是否吃紧应看 available 列而非 free 列 | free -h # available 才是真实可用内存 |
| df + du | 组合定位空间问题:df -h 看文件系统整体占用,du -sh 逐层下钻找大目录;两者差距大可能是已删除但被进程占用的文件 | df -h du -sh /var/* | sort -h |
🌐 网络排查
| 命令 | 说明 | 示例 |
|---|---|---|
| ss | 查看 TCP 监听端口与占用进程,-t TCP、-l 监听、-n 数字端口、-p 进程,替代已废弃的 netstat | ss -tlnp | grep 8080 |
| ping / mtr | ping 测连通性与延迟抖动;mtr 融合 ping + traceroute,实时定位丢包发生在哪一跳 | ping -c 4 example.com mtr -rw example.com |
| curl -w | 按阶段计时定位慢在哪一环:time_namelookup DNS、time_connect 建连、time_starttransfer 首字节(TTFB) | curl -o /dev/null -s -w 'dns:%{time_namelookup} conn:%{time_connect} ttfb:%{time_starttransfer}\n' https://example.com |
| dig | DNS 排查,+short 只输出解析结果;指定不同 DNS 服务器对比,定位缓存或解析污染问题 | dig +short example.com dig @8.8.8.8 +short example.com |
| nc | 端口连通性测试:-z 只扫描不发数据、-v 显示详情,排查防火墙拦截或服务未启动 | nc -zv 10.0.0.1 6379 # succeeded! 即端口可达 |
🧾 日志与轮转
| 命令 | 说明 | 示例 |
|---|---|---|
| journalctl -u | 按服务过滤 systemd 日志,--since 限定时间范围,排障先看服务启动失败原因 | journalctl -u nginx --since today journalctl -u app --since "1 hour ago" |
| journalctl -f | 实时跟踪日志输出(类似 tail -f),叠加 -n 控制初始回看行数 | journalctl -f journalctl -fu app -n 50 |
| logrotate | 轮转配置要点:daily 每天轮转、rotate 7 保留 7 份、compress 压缩归档,配 missingok/notifempty 更稳健 | /etc/logrotate.d/nginx daily / rotate 7 / compress 三要素 |
| tail -F + grep | tail -F 文件被轮转后仍继续跟踪,配合 grep --line-buffered 实时过滤不积压缓冲 | tail -F app.log | grep --line-buffered ERROR |
| 按天切割命名 | 日志按天切割并带日期命名,天然按时间归档,便于检索、压缩与到期清理 | app-$(date +%F).log app.log.2026-08-28.gz |
| 分级与保留 | 按 ERROR/WARN/INFO 分级落盘,错误日志单独保留更长周期并接入告警,普通日志短周期滚动 | error.log 保留 90 天 info.log 保留 7 天 分级保留 |