🚀 Linux 运维终极命令速查表(生产环境版)
安全铁律:
✅rm/mv操作前务必ls -l确认路径✅ 生产环境配置修改必须走 备份→测试→替换→重载 流程
✅sudo后加-i进入交互模式(如sudo -i)
云环境必看:阿里云/腾讯云需同步配置安全组
🔍 一、基础目录与文件操作
表格
| 命令 | 作用 | 常用语法 | 关键示例与避坑指南 |
|---|---|---|---|
pwd |
显示当前路径 | pwd |
pwd → /home/user |
ls |
列出目录内容 | ls [选项] [目录] |
ls -la /home(显示隐藏文件+详情) 避坑: ls -l 确认权限再操作 |
cd |
切换目录 | cd <路径> |
cd /home/web/html/halo |
mkdir |
创建目录 | mkdir [-p] 目录名 |
mkdir -p halo2/uploads(递归创建) 场景:部署前确保目录存在 |
cp |
复制文件/目录 | cp [选项] 源 目标 |
cp config.yaml config.bak(备份配置) |
mv |
移动/重命名 | mv 源 目标 |
mv old.yaml new.yaml(重命名配置文件) |
rm |
⚠️ 高危! 删除文件/目录 | rm [-rf] 文件或目录 |
rm -rf /tmp/*(安全清理临时文件) 血泪教训: rm -rf / 绝对禁止! 正确流程: ls -l /tmp/* → rm -i /tmp/* |
cat |
查看小文件 | cat 文件 |
cat docker-compose.yaml |
less |
分页查看大文件 | less 文件 |
less /var/log/syslog(按 q 退出) |
tail |
查看文件末尾 | tail -n 行数 文件 |
tail -f halo2/logs/app.log(实时日志监控) 场景:Halo启动失败时 tail -f app.log |
nano |
简单文本编辑器 | nano 文件 |
nano docker-compose.yaml → 保存:Ctrl+O → 回车 → 退出:Ctrl+X |
rsync -avz |
生产级文件同步(必用) | rsync -avz /src/ user@host:/dst/ |
rsync -avz --progress /data/ /backup/(同步时显示进度) 为什么用它:断点续传+增量同步,避免全量拷贝 |
find |
精准查找文件(必学) | find <目录> -name <文件名> |
find /var/log -name "*.log" -mtime -7(找7天内修改的log) 场景:定位日志文件 |
tar |
压缩/解压(比zip强) | tar -czvf file.tar.gz dir/ |
tar -xzvf app.tar.gz -C /opt/(解压到指定目录) 优势: -z gzip压缩,-C 指定路径 |
lsof -i :8090 |
端口冲突排查(核心) | lsof -i :8090 |
lsof -i :8090 → 若输出 nginx 1234 root 6u IPv6 12345 0t0 TCP *:8090 (LISTEN) → 确认是 Nginx 占用 |
💡 文件操作安全流程
bash
编辑
# 1. 确认路径 ls -l /var/log/halo/*.log # 2. 测试删除(不实际执行) find /var/log/halo -name "*.log" -mtime +7 -print # 3. 真正删除 find /var/log/halo -name "*.log" -mtime +7 -exec rm -f {} \;
🐳 二、Docker & Docker Compose 核心命令
Docker 基础命令(必知必会)
表格
| 命令 | 作用 | 常用语法 | 关键示例与避坑指南 |
|---|---|---|---|
docker --version |
查看 Docker 版本 | docker --version |
— |
docker info |
查看 Docker 系统信息 | docker info |
docker info | grep "Storage Driver"(确认存储驱动) |
docker images |
列出本地镜像 | docker images |
docker images -a(列出所有镜像,包括中间层) |
docker rmi |
删除镜像 | docker rmi 镜像ID |
docker rmi $(docker images -q)(删除所有镜像) 避坑:删除前确保无容器在使用 |
docker run |
运行新容器 | docker run [选项] 镜像 [命令] |
docker run -d -p 8090:8090 --name halo halo:latest 关键: -d 后台运行,-p 端口映射,--name 命名容器 |
docker stop |
停止容器 | docker stop 容器名 |
docker stop halo(停止halo容器) |
docker start |
启动容器 | docker start 容器名 |
docker start halo |
docker restart |
重启容器 | docker restart 容器名 |
docker restart halo(与Compose命令相同) |
docker rm |
删除容器 | docker rm 容器名 |
docker rm -f halo(强制删除运行中容器) |
docker volume ls |
列出数据卷 | docker volume ls |
docker volume ls -f "dangling=true"(列出未使用卷) |
docker volume inspect |
查看数据卷详情 | docker volume inspect 数据卷名 |
docker volume inspect halo_data(确认挂载路径) |
docker network ls |
列出网络 | docker network ls |
docker network inspect bridge(查看默认网络) |
Docker Compose 命令(生产环境必备)
🔴 技巧1
为了方便管理,可以更改本地挂载目录
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '8100:81' # 管理界面改为 8100(避免和某些服务冲突)
volumes:
- /home/NginxProxyManager:/data # 改引号左边的
- /home/NginxProxyManager:/etc/letsencrypt
| 命令 | 作用 | 常用语法 | 关键示例与避坑指南 |
|---|---|---|---|
docker compose version |
查看 Compose 版本 | docker compose version |
— |
docker compose up -d |
后台启动所有服务 | docker compose up -d |
必须在 docker-compose.yml 所在目录执行 场景:Halo部署后启动服务 |
docker compose down |
停止并删除容器(不删数据卷) | docker compose down |
数据安全:保留数据库/配置 场景:日常维护重启服务 |
docker compose down -v |
彻底删除(含数据卷) | docker compose down -v |
⚠️ 数据会丢失! 仅用于全新部署或重置环境 |
docker compose ps |
查看容器状态 | docker compose ps |
docker compose ps | grep healthy(快速确认健康状态) |
docker compose logs -f <服务名> |
实时查看日志(排错神器) | docker compose logs -f halo |
Halo启动失败必用:docker compose logs -f halo --tail=50(查看最后50行) |
docker compose restart <服务名> |
重启某个服务 | docker compose restart halo |
场景:修改配置后(如 docker-compose.yml)必须重启服务 |
docker compose exec <服务名> sh |
进入容器调试 | docker compose exec halo sh |
场景:检查内部文件 ls /app 或执行命令 curl localhost:8090 |
docker compose build |
重建镜像(更新配置后) | docker compose build --no-cache |
docker compose build --no-cache halo(强制重新构建halo服务) 为什么用:避免缓存旧依赖 |
docker compose pull |
拉取最新镜像(不启动) | docker compose pull |
docker compose pull nginx(单独更新nginx镜像) |
docker system df |
查看 Docker 磁盘占用 | docker system df |
清理前必看:docker system df → docker image prune -a(释放空间) |
docker inspect -f '{{ .NetworkSettings.IPAddress }}' halo |
获取容器 IP(云环境必需) | docker inspect -f '{{ .NetworkSettings.IPAddress }}' halo |
✅ 云上容器 IP 不固定,需动态获取(用于配置 Nginx 反向代理) |
docker volume create halo_data |
安全备份数据卷 | docker volume create halo_data |
✅ 数据安全核心:down -v 会删数据卷 → 先备份再删! |
docker compose config |
验证 Compose 文件 | docker compose config |
docker compose config | grep "ports"(检查端口映射) 场景:部署前验证配置 |
docker compose pull --no-cache |
强制拉取最新镜像 | docker compose pull --no-cache |
docker compose pull --no-cache halo(避免缓存旧镜像) |
docker compose up --build |
构建+启动 | docker compose up --build |
场景:修改Dockerfile后启动服务 关键: --build 会重建镜像 |
基础容器删除命令(Docker)
表格
| 命令 | 作用 | 适用场景 | 关键示例 | 避坑指南 |
|---|---|---|---|---|
docker rm <容器ID/名称> |
删除已停止的容器 | 常规删除 | docker rm halo_1 |
❌ 不能删除正在运行的容器 |
docker rm -f <容器ID/名称> |
强制删除容器(包括运行中) | 紧急情况 | docker rm -f halo_1 |
⚠️ 数据可能丢失,谨慎使用 |
docker container prune |
批量删除所有已停止的容器 | 日常清理 | docker container prune |
✅ 安全,只删除已停止容器 |
docker container prune -f |
无确认提示批量删除 | 自动化脚本 | docker container prune -f |
✅ 适合CI/CD流程 |
docker rm -f $(docker ps -aq) |
删除所有容器(包括运行中的) | 重置环境 | docker rm -f $(docker ps -aq) |
⚠️ 数据全部丢失,仅用于测试环境 |
docker rmi <镜像ID/名称> |
删除镜像 | 清理镜像 | docker rmi halo:latest |
❌ 删除镜像前需确保无容器使用 |
💡 删除容器前必做检查:
# 1. 确认容器状态
docker ps -a | grep halo
# 2. 检查容器是否在运行
docker ps | grep halo
# 3. 如果容器在运行,先停止
docker stop halo
Docker Compose 容器删除命令
| 命令 | 作用 | 适用场景 | 关键示例 | 避坑指南 |
|---|---|---|---|---|
docker-compose rm |
删除已停止的Compose项目容器 | 常规清理 | docker-compose rm |
✅ 仅删除已停止的容器 |
docker-compose rm -f |
强制删除所有Compose容器(包括运行中的) | 快速重置 | docker-compose rm -f |
⚠️ 数据可能丢失,慎用 |
docker-compose rm -v |
删除容器+关联数据卷 | 全新部署 | docker-compose rm -v |
⚠️ 数据会永久丢失,生产环境禁用 |
docker-compose down |
停止并删除容器(不删数据卷) | 日常维护 | docker-compose down |
✅ 保留数据,安全 |
docker-compose down -v |
停止并删除容器+数据卷 | 彻底重置 | docker-compose down -v |
⚠️ 数据会丢失,仅用于全新部署 |
docker-compose rm <服务名> |
仅删除指定服务的容器 | 精准操作 | docker-compose rm db |
✅ 保留其他服务 |
💡 Docker Compose 删除流程:
# 1. 先停止服务 docker-compose stop # 2. 确认容器状态 docker-compose ps # 3. 删除容器(保留数据卷) docker-compose rm # 4. 如果需要彻底删除(数据丢失) docker-compose down -v
📦 三、软件包管理(Ubuntu/Debian)
表格
| 命令 | 作用 | 关键示例 |
|---|---|---|
sudo apt update |
更新软件包列表 | sudo apt update(每日必做) |
sudo apt install 软件名 |
安装软件(如 curl, git) |
sudo apt install curl git nano(批量安装) |
sudo apt remove 软件名 |
卸载软件(保留配置) | sudo apt remove docker(保留配置,方便重装) |
sudo apt purge 软件名 |
彻底卸载(含配置) | sudo apt purge docker(彻底清除) |
sudo apt list --installed | grep docker |
查看已安装的包 | sudo apt list --installed | grep docker(确认Docker是否安装) |
🔌 四、网络与端口排查
表格
| 命令 | 作用 | 关键示例与避坑指南 |
|---|---|---|
ip a / ip addr |
查看 IP 地址(替代 ifconfig) |
ip addr show eth0(查看网卡IP) |
ping 域名或IP |
测试网络连通性 | ping -c 4 www.baidu.com(发送4次包) |
curl -I 网址 |
查看 HTTP 响应头 | curl -I http://localhost:8090(确认Halo服务是否启动) 场景: HTTP/1.1 200 OK 表示成功 |
ss -tuln |
查看监听端口(比 netstat 快) |
ss -tuln | grep 8090(精准过滤端口) 场景:Halo无法访问时检查端口是否监听 |
ss -tuln | awk '{print $5}' | sort | uniq -c |
统计端口占用 | ss -tuln | awk '{print $5}' | sort | uniq -c(发现端口冲突) |
curl -v http://localhost:8090 |
详细查看HTTP请求(含headers) | curl -v -X POST -H "Content-Type: application/json" -d '{"key":"val"}' http://localhost:8090/api |
nc -zv 127.0.0.1 8090 |
快速测试端口连通性(无依赖) | nc -zv 127.0.0.1 8090(替代 telnet) |
mtr -z -w 1000 -c 10 8.8.8.8 |
动态路由追踪(比 traceroute 强) |
mtr -z -w 1000 -c 10 8.8.8.8 → 发现 192.168.1.1 丢包 50% → 确认本地路由器故障 |
tcpdump -i eth0 port 8090 -w debug.pcap |
抓包分析(深度排错) | tcpdump -i any port 8090 -nn -s 0 -w debug.pcap → 用 Wireshark 分析 HTTP 404 原因 |
⚠️ 云环境端口故障排查流程
生成失败
🔐 五、权限与用户
表格
| 命令 | 作用 | 关键配置示例 |
|---|---|---|
sudo |
临时提权 | sudo docker compose up -d(避免用root) |
sudo usermod -aG docker $USER |
将用户加入 docker 组 | 首次安装Docker后必做:免 sudo 运行 docker 命令 |
chmod 600 ~/.ssh/id_rsa |
SSH密钥安全权限 | 普通用户 chmod 644 会导致 ssh 拒绝连接(必须 600) |
chmod +x script.sh |
加执行权限(脚本必备) | chmod +x deploy.sh(确保脚本能执行) |
chown www-data:www-data uploads/ |
修改文件所有者 | chown www-data:www-data /var/www/halo/uploads(Web服务目录权限) |
sudo -u www-data -i |
以特定用户身份执行命令 | sudo -u www-data -i(切换到web服务用户,避免用root操作) |
getfacl file / setfacl -m u:user:rwx file |
ACL高级权限管理 | setfacl -m u:nginx:rwx /var/www/html(给nginx用户单独读写权限) |
sudo ufw default deny incoming |
默认拒绝所有入站连接 | sudo ufw default deny incoming → sudo ufw default allow outgoing(安全基石) |
🔒 SSH 安全加固配置
bash
编辑
# /etc/ssh/sshd_config Port 2222 PermitRootLogin no PasswordAuthentication no AllowUsers admin # 重启 SSH sudo systemctl restart sshd
📊 六、系统信息与资源监控
表格
| 命令 | 作用 | 关键示例 |
|---|---|---|
df -h |
查看磁盘空间(人类可读) | df -h(生产环境每日必看) |
du -sh 目录 |
查看目录大小 | du -sh /var/log(定位大日志文件) |
top / htop |
查看 CPU/内存使用 | htop(更友好,安装:sudo apt install htop) 场景: htop → 按 F6 → MEM 排序 |
free -h |
查看内存使用 | free -h(确认是否内存不足) |
iotop -o |
按进程查看磁盘IO | iotop -o(发现 /var/log 疯狂写入时用) |
lsof -i :8090 |
查看占用端口的进程 | lsof -i :8090(快速定位冲突服务,如Nginx和Halo都占8090) |
journalctl -u docker |
Docker服务日志(Systemd) | journalctl -u docker --since "1 hour ago"(比 docker logs 更全面) |
dstat -cdngy --top-cpu |
全能系统监控(替代 top) | dstat -cdngy --top-cpu → 按 F1 切换 CPU/内存/磁盘/网络视图(实时排障神器) |
⚠️ 七、高危操作安全流程(终极版)
bash
编辑
# === 1. 配置文件修改(以 Nginx 为例) ===
sudo cp -a /etc/nginx /etc/nginx.bak # 备份
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.tmp
sudo nginx -t -c /etc/nginx/nginx.conf.tmp # 测试配置
if [ $? -eq 0 ]; then
sudo mv /etc/nginx/nginx.conf.tmp /etc/nginx/nginx.conf
sudo systemctl reload nginx
else
echo "❌ 配置错误!回滚备份"
sudo cp -a /etc/nginx.bak/nginx.conf /etc/nginx/nginx.conf
sudo systemctl reload nginx
fi
# === 2. 数据库迁移(Halo 专用) ===
# 2.1 备份数据卷
docker volume create halo_data_backup
docker run --rm -v halo_data:/data -v halo_data_backup:/backup alpine tar cvf /backup/backup.tar -C /data .
# 2.2 云环境迁移(阿里云 ECS 间)
scp -P 2222 halo_data_backup/backup.tar user@target-ecs:/tmp/
ssh -p 2222 user@target-ecs "docker volume create halo_data_new"
ssh -p 2222 user@target-ecs "docker run --rm -v halo_data_new:/data -v /tmp/backup.tar:/backup alpine tar xvf /backup/backup.tar -C /data"
🌐 八、UFW 防火墙命令(Ubuntu 专属)
表格
| 命令 | 作用 | 关键示例 |
|---|---|---|
sudo ufw status verbose |
查看防火墙状态(详细) | sudo ufw status verbose(确认规则是否生效) |
sudo ufw allow 8090/tcp |
允许 Halo 端口(云环境必需) | sudo ufw allow 8090/tcp(必须在安全组放行后执行!) |
sudo ufw allow 22/tcp |
允许 SSH(救命命令!) | sudo ufw allow 22/tcp(避免锁死服务器) |
sudo ufw enable |
启用防火墙(首次启用) | sudo ufw enable(必须在放行 SSH 后执行) |
sudo ufw disable |
关闭防火墙(紧急情况) | sudo ufw disable(仅限紧急情况,需立即重新放行 SSH) |
sudo ufw status numbered |
查看规则编号 | sudo ufw status numbered(删除规则前必须查看) |
sudo ufw delete 3 |
删除指定规则(按编号) | sudo ufw delete 3(删除第 3 条规则) |
sudo ufw default deny incoming |
默认拒绝所有入站连接(安全基石) | sudo ufw default deny incoming → sudo ufw default allow outgoing(安全基石) |
💡 UFW 防火墙安全流程
bash
编辑
sudo ufw allow 22/tcp # 先放行 SSH(救命!) sudo ufw allow 8090/tcp # 再放行应用端口 sudo ufw enable # 最后启用防火墙
💎 附:运维效率神器清单
表格
| 工具 | 安装命令 | 作用 | 为什么必装 |
|---|---|---|---|
htop |
sudo apt install htop |
彩色 CPU/内存监控,按 F6 排序内存 |
比 top 快 3 倍,实时定位进程 |
zsh |
sudo apt install zsh |
终端体验升级,搭配 oh-my-zsh(自动补全+语法高亮) |
90% 运维人员必备,减少命令输入错误 |
tmux |
sudo apt install tmux |
会话管理神器:tmux new -s dev → tmux attach -t dev |
防止 SSH 断开导致任务中断(生产环境必备) |
fail2ban |
sudo apt install fail2ban |
自动封禁暴力破解 IP(SSH 保护) | 云服务器安全底线,避免被机器人攻击 |
最后总结:
- 云环境 = 安全组 + UFW + 防火墙三重防护(缺一不可)
- Docker 数据安全 = 备份卷 +
down -v谨慎使用- 故障排查 = 网络(mtr)→ 端口(ss)→ 服务(logs)→ 配置(验证流程)
- 所有高危操作必须走
备份→测试→替换→重载流程
评论区