本文整理了 Linux运维开发中最常用的高频命令,涵盖文件操作、文本处理、权限管理、进程控制、网络排障、压缩解压、定时任务和Docker/K8s实战,每个命令都配有真实示例,可直接复制使用
摘要:整理 Linux 运维开发高频命令,按文件操作、文本处理、权限、进程、网络、压缩、定时任务等场景分类,每个命令附真实示例,可直接复制使用。
1. 文件与目录操作
1.1 查看目录内容
| 命令 | 说明 |
|---|
pwd | 显示当前所在目录的绝对路径 |
ls | 列出目录内容,常用 ls -l(详细信息)、ls -a(含隐藏文件)、ls -lh(人类可读方式显示)、ls -rtl(按修改时间正序排序) |
tree | 以树状结构显示目录层级(部分系统需自行安装) |
# 查看当前目录详细列表
ls -lh
# 长格式显示,按修改时间正序排序(旧的在上,新的在下)
ls -rtl
# 以树状结构查看目录层级
tree /data/project
1.2 切换与定位目录
| 命令 | 说明 |
|---|
cd | 切换目录,cd .. 返回上级,cd ~ 回用户主目录,cd - 回到上一次目录,cd / 回到系统根目录 |
# 进入配置目录
cd /etc/nginx
# 返回上级目录
cd ..
# 回到上一次所在目录(来回切换很好用)
cd -
1.3 创建与删除目录/文件
| 命令 | 说明 |
|---|
mkdir | 创建目录,mkdir -p a/b/c 递归创建多级目录 |
touch | 创建空文件,或更新文件时间戳 |
rm | 删除,rm -r 递归删除目录,rm -f 强制删除(⚠️ 谨慎使用,不可恢复) |
# 递归创建多级目录并进入
mkdir -p /data/logs && cd /data/logs
# 创建空文件
touch file.txt
# 删除目录及内部所有内容(高危操作,慎用!)
rm -rf /tmp/test
1.4 复制与移动/重命名
| 命令 | 说明 |
|---|
cp | 复制,cp -r 递归复制目录,cp -p 保留权限与时间 |
mv | 移动或重命名文件 |
# 备份配置文件(保留权限)
cp -p /etc/nginx/sys.conf /etc/nginx/sys.conf.bak
# 递归复制整个目录
cp -r ./dist /data/www/
# 重命名文件(mv 同时支持移动)
mv app_old.jar app.jar
1.5 文件权限
| 命令 | 说明 |
|---|
chmod | 修改文件/目录权限,数字法 755、644 最常用 |
chown | 修改属主与属组,chown user:group 文件 |
chgrp | 仅修改属组 |
umask | 设置新建文件的默认权限掩码 |
# 查看文件权限(-rw-r--r-- 等)
ls -l /data/project
# 赋予脚本可执行权限(最常用)
chmod +x run.sh
chmod 755 run.sh
# 修改属主为 www 用户、属组为 web 组
chown www:web /data/project -R
# 递归设置目录权限:目录 755、文件 644
find /data/project -type d -exec chmod 755 {} \;
find /data/project -type f -exec chmod 644 {} \;
提示:数字权限速记——4 读、2 写、1 执行;755 表示属主全权限、组和其他人只读可执行。
2. 文本查看与内容处理
文本处理三剑客:
grep(检索):负责“找”,按行过滤,精准定位目标。awk(分析):负责“算”,按列切割,擅长数据统计与格式化。sed(编辑):负责“改”,流式处理,擅长全局替换与内容增删。
2.1 查看文件内容
| 命令 | 说明 |
|---|
cat | 一次性输出整个文件内容,适合小文件 |
less | 分页查看大文件,/关键词 搜索,q 退出,g 到首行、G 到尾行 |
head | 查看文件开头,head -n 20 显示前 20 行 |
tail | 查看文件末尾,tail -n 20 查看最后 20 行;实时跟踪日志见 11.1 |
# 查看文件最后 20 行
tail -n 20 /var/log/app.log
# 查看文件前 20 行
head -n 20 /etc/nginx/nginx.conf
2.2 搜索与过滤
| 命令 | 说明 |
|---|
grep | 文本搜索王者,按正则表达式过滤行,常与管道符 | 结合使用,-i 忽略大小写,-n 显示行号,-r 递归搜索 |
# 1. 基础搜索与高亮
# 在日志中搜索 ERROR,忽略大小写(-i)并显示行号(-n)
grep -in "error" /var/log/app.log
# 递归搜索(-r)并高亮关键词(--color)
grep -rn --color "exception" ./logs
# 精确匹配单词(-w):搜 "cat" 不会把 "catalog" 搜出来
grep -w "cat" document.txt
# 2. 上下文查看(排查报错必用)
# 查看报错行,以及它的前 5 行和后 5 行 (Context)
grep -C 5 "NullPointerException" app.log
# 只看匹配行的后 10 行 (After) / 前 10 行 (Before)
grep -A 10 "Start Process" app.log
grep -B 10 "Process Failed" app.log
# 3. 多条件与反向过滤(清洗日志噪音)
# 多条件“或”匹配(-E):同时过滤 ERROR 或 WARN 或 FATAL
grep -E "ERROR|WARN|FATAL" app.log
# 反向过滤(-v):排除干扰信息(如健康检查、DEBUG日志)
grep "error" app.log | grep -v "healthcheck"
grep -E "ERROR|WARN" app.log | grep -vE "DEBUG|INFO"
# 4. 递归搜索避坑与统计
# 全局搜代码,排除无关目录(防止搜 node_modules 卡死终端)
grep -rn "TODO" . --exclude-dir={.git,node_modules,target,build}
# 只搜索特定后缀的文件
grep -rn "import" . --include="*.py"
# 统计关键字出现的次数(-c)
grep -c "Timeout" app.log
# 5. 特殊字符搜索避坑
# 避坑:如果要搜索以 "-" 开头的字符串(如 -e),会被误认为是参数
# 正确写法 1:使用 -- 终止参数解析
grep -- "-e" file.txt
# 正确写法 2:使用 -e 显式指定模式
grep -e "-e" file.txt
2.3 文本处理与统计
| 命令 | 说明 |
|---|
awk | 列处理王者,默认按空格分割。-F 指定分隔符,$1 是第一列,$0 是整行 |
sed | 流式编辑器,s/旧/新/g 替换,d 删除,p 打印。注意 -i 的跨平台差异 |
cut | 轻量级截取,-d 指定分隔符,-f 取列。适合处理简单规则文本 |
sort | 排序,-n 数值排序,-r 倒序,-u 去重,-k 按指定列排序 |
uniq | 去重,只能去除相邻重复行,必须先 sort。-c 计数,-d 仅显示重复行 |
wc | 统计,-l 行数,-w 单词数,-c 字节数 |
strings | 二进制提取,从二进制文件(如 Core Dump、编译后的程序)中扒出可读字符串 |
diff | 差异对比,常加 -u 输出标准 unified 格式 |
# 经典连招:统计日志中每个 IP 的出现次数,并按次数从高到低排序
awk '{print $1}' access.log | sort | uniq -c | sort -rn
# 提取 CSV 文件的第 2 列
awk -F',' '{print $2}' data.csv
# 找出 access.log 中响应时间(假设在第 10 列)大于 500ms 的慢请求
awk '$10 > 500 {print $0}' access.log
# 全局替换配置中的旧端口并写回
sed -i 's/8080/8081/g' /etc/app/config.yml
# 删除文件中的所有注释行(以 # 开头)和空行
sed -e '/^#/d' -e '/^$/d' config.yml
# 从二进制文件(如日志、核心转储)中扒出可读文字,过滤异常信息
strings ./logs | grep -i "exception"
# 对比两个配置文件的差异
diff nginx.conf nginx.conf.bak
3. 用户与用户组
3.1 用户管理
| 命令 | 说明 |
|---|
whoami | 显示当前用户名 |
id | 查看当前用户的 UID/GID 及所属组 |
useradd | 创建用户,useradd -m -s /bin/bash 用户名 创建并指定 shell |
passwd | 设置/修改用户密码 |
usermod | 修改用户属性,-aG 追加到附加组(⚠️ 不加 -a 会覆盖原有组) |
userdel | 删除用户,userdel -r 连同主目录一起删除 |
# 1. 创建用户并设置密码
useradd -m -s /bin/bash zhangsan
passwd zhangsan
# 2. 将用户安全地追加到 sudo 组(Debian/Ubuntu 用 sudo,CentOS 用 wheel)
# 💡 记忆口诀:改组必加 a,无 a 必挨骂!
usermod -aG sudo zhangsan
3.2 用户组与身份切换
| 命令 | 说明 |
|---|
groupadd | 创建用户组 |
su | 切换用户,su - 用户名 切换到其登录环境 |
sudo | 以其他身份(默认 root)执行命令 |
# 创建用户组
groupadd dev
# 切换为 root 身份执行
sudo apt update
注意:修改用户组时务必使用 -aG 追加,直接 usermod -G 会移除用户原有附加组。
4. 进程管理
4.1 查看进程
| 命令 | 说明 |
|---|
ps | 查看进程快照,ps aux 显示所有进程,ps -ef 全格式输出 |
top | 动态监控进程资源占用(CPU/内存),P 按 CPU 排序、M 按内存排序 |
htop | top 的增强版,支持方向键操作(需安装) |
# 查看所有进程
ps aux | head -20
# 动态监控,定位占用 CPU/内存最高的进程
top
4.2 终止进程与后台任务
| 命令 | 说明 |
|---|
kill | 按 PID 杀进程,kill -9 强制杀死(SIGKILL),kill -15 优雅终止(SIGTERM,允许进程清理资源,应优先于-9使用) |
pkill | 按名字杀进程,pkill -f 按完整命令行匹配 |
jobs / fg / bg | 查看后台任务、切换到前台、放到后台运行 |
nohup | 不挂断运行,配合 & 让程序在退出终端后继续执行 |
# 查找某服务的进程 PID 并杀死
pgrep -f "app.jar"
kill -9 12345
# 后台启动 Java 服务,日志写入文件,终端关闭也不中断
# nohup (不挂断) + 执行命令 + > (日志重定向) + 2>&1 (错误日志也写入同一文件) + & (放入后台)
nohup java -jar app.jar > app.log 2>&1 &
4.3 系统服务管理
| 命令 | 说明 |
|---|
systemctl | 管理系统服务,start/stop/restart/reload/status/enable/disable |
# 服务管理
systemctl status nginx # 查看运行状态
systemctl restart nginx # 重启(会导致连接短暂中断)
systemctl reload nginx # 平滑重载配置(生产环境首选,不断开连接)
systemctl enable nginx # 设置开机自启
5. 系统信息
5.1 系统与内核信息
| 命令 | 说明 |
|---|
uname -a | 查看内核与系统版本信息 |
hostname | 查看/设置主机名 |
date | 查看/设置系统时间 |
# 查看发行版信息(选择包管理命令前先确认)
cat /etc/os-release
# 查看内核版本
uname -a
5.2 资源与负载监控
| 命令 | 说明 |
|---|
uptime | 查看运行时长与系统负载 |
free -h | 查看内存使用情况(人性化显示) |
df -h | 查看磁盘分区使用率 |
du -sh 目录 | 统计目录占用空间大小 |
who / last | 查看当前登录用户 / 登录历史 |
# 查看内存(重点看 available)
free -h
# 查看各磁盘挂载点的使用率
df -h
# 统计项目目录总大小
du -sh /data/project
# 查看当前目录一级子目录大小排序(磁盘爆满定位必用)
du -h --max-depth=1 * | sort -rh | head -n 10
# 查看系统负载(load average 三个值分别代表 1/5/15 分钟均值)
uptime
6. 网络命令
6.1 网络查看与连通性测试
| 命令 | 说明 |
|---|
ip addr | 查看网卡与 IP 地址(ifconfig 的现代替代) |
ping | 测试网络连通性,ping -c 4 指定发包次数 |
telnet | 测试远端主机端口是否可达(排障神器),如 telnet 192.168.1.10 80;部分系统需先安装 telnet 客户端 |
# ================= 1. 基础网络与端口 =================
# 查看本机 IP 与网卡信息
ip addr
# 测试远端主机 80 端口是否可达(连通后出现连接提示,Ctrl+] 再输入 quit 退出)
telnet 192.168.1.10 80
6.2 HTTP 请求与下载
| 命令 | 说明 |
|---|
curl | 发起 HTTP 请求,排障和调试接口必备 |
wget | 下载文件,-c 断点续传 |
# ================= 2. curl 接口调试与排障 ================
# 测试接口连通性(排障三步:ping → 端口 → 应用日志)
curl -v http://127.0.0.1:8080/api/health
# 仅获取响应头(快速检查 HTTP 状态码、证书、重定向、Nginx版本)
curl -I http://127.0.0.1:8080/api/health
# 静默模式但保留错误信息(日常调试推荐,不刷屏)
curl -sS http://127.0.0.1:8080/api/health
# 发送 JSON POST 请求
curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' URL
# 脚本健康检查专用(参数拆解记忆法)
# -o /dev/null : 丢弃响应体(不下载文件内容)
# -s : 静默模式(不显示进度条)
# -w "%{http_code}\n" : 只输出HTTP状态码并换行
curl -o /dev/null -s -w "%{http_code}\n" http://127.0.0.1:8080/api/health
# ================= 3. 文件下载 =================
# 下载文件并断点续传(下大文件必备)
wget -c https://example.com/pkg.tar.gz
6.3 端口监听排查
| 命令 | 说明 |
|---|
ss / netstat | 查看端口监听与连接状态,ss -tlnp 查看监听端口及对应进程 |
# 查看 80 端口被哪个进程占用
ss -tlnp | grep :80
6.4 远程连接与文件传输
| 命令 | 说明 |
|---|
ssh | 远程登录,ssh 用户@主机 -p 端口 |
scp | 基于 SSH 复制文件,-r 复制目录 |
rsync | 增量同步文件/目录,支持断点续传,-avz 常用参数 |
# 远程登录服务器
ssh root@192.168.1.10
# 远程复制文件到服务器
scp ./deploy.sh root@192.168.1.10:/opt/
# 同步本地目录到服务器(-a 归档、-v 显示过程、-z 压缩传输)
rsync -avz ./dist/ root@192.168.1.10:/var/www/html/
6.5 实战演练:网络问题四层排查法
遇到网络问题(比如前端访问不了后端的 API),严格按照以下四层模型逐层排查:

真实工作场景模拟:前端跑过来喊:“后端!你的登录接口挂了!”
你的反应(按四层模型):
- 第 1 层:你在自己电脑上
ping 服务器IP → 通了 ✅ - 第 2 层:你
telnet 服务器IP 8080 → 不通 ❌- 结论:网络没问题,是端口被挡了!
- 动作:检查云服务器控制台,发现安全组没开 8080 端口,添加规则 → 问题解决!
- 第 3 层(假设第 2 层通了):你
systemctl status tomcat → 发现服务挂了 ❌- 动作:
journalctl -u tomcat -ex 发现是内存溢出(OOM),调整 JVM 参数 → 重启解决!
- 第 4 层(假设第 3 层正常):你在服务器本地
curl -v http://127.0.0.1:8080/login → 返回 500 错误 ❌- 动作:看 Spring Boot 日志,发现是数据库密码过期,修改配置 → 问题解决!
提示:排查网络问题时按「连通性 → 端口 → 服务状态 → 日志」的顺序逐层定位,避免跳步。
7. 压缩与解压
7.1 tar 打包与解包
| 命令 | 说明 |
|---|
tar | 打包/解包,.tar.gz 和 .tar.xz 是最常见格式 |
## 1. tar (打包/解包)
# 记忆法:c=创建, x=解压, z=gzip, J=xz, v=显示, f=文件, C=指定目录, t=查看
# 打包并压缩 (.tar.gz)
tar -zcvf backup.tar.gz /data/project
# 解压到指定目录
tar -zxvf backup.tar.gz -C /opt/restore
# 排除目录打包 (前端/Node必备)
tar -zcvf backup.tar.gz --exclude='node_modules' --exclude='.git' /data/project
# 查看压缩包内容 (不解压)
tar -ztvf backup.tar.gz
# 高压缩率打包 (.tar.xz,适合大日志/数据库备份)
tar -Jcvf backup.tar.xz /var/log/
7.2 zip / gzip 格式处理
| 命令 | 说明 |
|---|
gzip / gunzip | 压缩/解压单个 .gz 文件 |
zip / unzip | 处理 .zip 格式(跨平台通用) |
# 2. zip / unzip (跨平台)
zip -r site.zip ./site
unzip site.zip -d ./site_out
# 解决 Windows 中文 zip 乱码
unzip -O CP936 site.zip # 或推荐安装 unar 命令
## 3. gzip (单文件压缩)
gzip access.log # 源文件会被删除
gzip -k access.log # 加 -k (keep) 保留源文件
gunzip access.log.gz
8. 搜索命令
8.1 文件搜索
| 命令 | 说明 |
|---|
find | 全能搜索王,按文件名/类型/时间/大小在文件系统中查找 |
locate | 极速搜索,基于数据库快速查找(需先运行 updatedb 更新索引) |
# 1. 基础与多条件检索
# 显示文件详细信息(-ls 相当于对结果执行 ls -dils)
find . -name "*文件名*" -ls
# 多层目录+多类型文件同时检索(加上 -type f、转义括号、-print0 和 -0)
find ./ -type f \( -name "*.sh" -o -name "*.py" \) -print0 | xargs -0 grep --color "import"
# 2. 时间查找(排查问题 / 清理日志)
# 查找 7 天前修改的日志(清理过期日志必用,写进 crontab)
find /var/log -name "*.log" -mtime +7
# 查找最近 7 天内修改过的文件(审计:最近谁动了数据?)
find /data -mtime -7 -type f
# 查找最近 10 分钟内修改过的文件(神技:刚发完版,看哪些文件变了)
find /opt/project -mmin -10 -type f
# 3. 大小查找(磁盘爆满排查)
# 查找大于 100M 的文件(磁盘爆满排查第一步)
find / -size +100M -type f
# 查找超过 1GB 的大文件,并屏蔽权限报错(2>/dev/null)
find / -type f -size +1G 2>/dev/null
# 找到大文件后,配合 ls -lh 看看具体多大(人类可读格式)
find /var/log -size +500M -type f -exec ls -lh {} \;
# 4. 结合 xargs 与 -exec 的高效处理
# 避坑:普通 xargs 遇到带空格的文件名会报错!
# 终极安全写法:-print0 配合 xargs -0 (用 null 字符分隔)
find . -name "*.log" -print0 | xargs -0 grep --color "warning"
# 使用 -exec 执行复杂操作({} 代表找到的文件,\; 代表结束)
# 批量删除 30 天前的临时文件
find /tmp -type f -name "*.tmp" -mtime +30 -exec rm -f {} \;
# 批量移动文件(将找到的 .bak 文件移到 /backup 目录)
find . -name "*.bak" -exec mv {} /backup/ \;
8.2 命令定位
| 命令 | 说明 |
|---|
which | 查找命令的可执行文件路径(只看 $PATH 环境变量里的第一个) |
whereis | 查找命令的二进制、源码和帮助文档(man)位置(搜索范围更广) |
type | 终极鉴别器,不仅能找路径,还能识别出命令是别名(alias)还是内置命令(builtin) |
# 1. 基础路径查找
which python3
whereis nginx
whereis -b nginx # 只查找二进制文件 (binary)
whereis -m nginx # 只查找帮助文档 (manual)
# 2. 多版本冲突排查(找出 PATH 中所有同名命令)
# 场景:系统自带了 python,你又装了 conda,想知道到底有几个 python
which -a python3
# 3. 鉴别命令的真实身份(which 的进阶替代者)
type ll # 输出: ll is aliased to `ls -alF' (识别别名)
type cd # 输出: cd is a shell builtin (识别内置命令)
type nginx # 输出: nginx is /usr/sbin/nginx (识别外部程序)
9. 软件包管理
常用包管理器
| 系统家族 | 代表发行版 | 安装 (自动确认) | 更新索引/缓存 | 搜索包 |
|---|
| Debian 系 | Ubuntu, Debian | apt install -y 包名 | apt update | apt search 关键词 |
| RedHat 系 | CentOS, RHEL, Rocky | yum install -y 包名 | yum makecache | yum search 关键词 |
| 轻量/容器 | Alpine Linux | apk add 包名 | apk update | apk search 关键词 |
# 1. Ubuntu 安装 nginx (必须先 update,否则报找不到包)
sudo apt update && sudo apt install -y nginx
# 2. CentOS/Rocky 安装排查工具
sudo yum install -y vim tcpdump net-tools
# 3. Dockerfile 中 Alpine 安装 (必加 --no-cache 减小镜像体积)
apk add --no-cache curl bash
注意:CentOS 8+ / RHEL 8+ 中,yum 命令底层已替换为 dnf,但用法完全一致,直接敲 yum 依然有效
10. 定时任务
crontab 与一次性任务
| 命令 | 说明 |
|---|
crontab -e | 编辑当前用户的定时任务 |
crontab -l | 查看当前用户的定时任务 |
crontab -r | 删除全部定时任务(慎用) |
at | 一次性定时任务(需安装 at 服务) |
cron 时间格式:分 时 日 月 周 命令
# 每天凌晨 3 点执行备份脚本
crontab -e
# 写入以下内容
0 3 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
# 每 5 分钟执行一次健康检查
*/5 * * * * /opt/scripts/healthcheck.sh
# 查看已配置的任务
crontab -l
# 查看 cron 执行日志(Debian/Ubuntu)
grep CRON /var/log/syslog
注意:cron 执行时环境变量极少,脚本内建议使用绝对路径,并将输出重定向到日志文件便于排查。
11. 日志查看
日志实时跟踪与检索
| 命令 | 说明 |
|---|
tail -f | 实时跟踪日志文件(排障最常用) |
journalctl | 查看 systemd 日志,-u 服务名 过滤服务,-f 实时跟踪 |
dmesg | 查看内核环缓冲消息(硬件/驱动报错排查) |
# 实时跟踪应用日志(Ctrl+C 退出)
tail -f /var/log/app.log
# 查看最后 200 行并持续跟踪
tail -200f /var/log/app.log
# 查看 nginx 服务最近 1 小时的日志
journalctl -u nginx --since "1 hour ago"
# 查看内核相关报错
dmesg | tail -50
12. 容器与编排(Docker / Kubernetes)
12.1 Docker 镜像与容器
| 命令 | 说明 |
|---|
docker ps -a | 查看所有容器(含已停止),排障第一步:看状态是否为 Exited |
docker run | 运行容器,-d(后台) -p 宿主机:容器(端口) -v 宿主机:容器(挂载) --name(命名) |
docker exec -it 容器名 sh | 进入运行中的容器(精简镜像无 bash,用 sh 代替) |
docker logs -f --tail 200 容器名 | 查看日志,-f(实时跟踪) --tail(最后N行) --since 1h(最近1小时) |
docker build -t 镜像名:标签 . | 根据当前目录 Dockerfile 构建镜像 |
docker cp | 容器与宿主机互拷文件,如:docker cp 容器名:/var/log/app.log ./ |
docker stats | 实时查看容器 CPU / 内存占用(排查资源瓶颈) |
docker system prune -a | 清理磁盘神器:删除所有停止的容器、无用网络和未使用的镜像 |
# 1. 标准启动(必加 -v 挂载,保证数据持久化与热更新)
docker pull nginx:latest
docker run -d --name web -p 8080:80 -v /data/html:/usr/share/nginx/html nginx
docker logs -f --tail 200 web
# 2. 进入容器排查问题
docker exec -it web sh
# 3. 代码更新后重新构建并启动
docker build -t my-app:v2 .
docker stop web && docker rm web
docker run -d --name web -p 8080:80 my-app:v2
# 4. 服务器磁盘告警时的终极清理(⚠️ 会删除未运行容器及未使用镜像/数据卷)
docker system prune -a --volumes
12.2 Docker Compose 多服务编排
| 命令 | 说明 |
|---|
docker compose up -d | 后台启动整套服务(加 --build 可强制重新构建镜像) |
docker compose down | 停止并移除容器与网络(默认不删数据卷,加 -v 才会删除) |
docker compose ps | 查看各服务运行状态 |
docker compose logs -f | 实时查看日志(加 服务名 指定查看,避免多服务日志混杂) |
docker compose exec 服务名 sh | 进入指定服务容器(精简镜像无 bash,用 sh 代替) |
docker compose restart | 重启服务(加 服务名 可单独重启,无需重建镜像) |
# 1. 后台启动并检查状态
docker compose up -d
docker compose ps
# 2. 修改代码/Dockerfile 后热更新(仅重建指定服务)
docker compose up -d --build web
# 3. 单独重启某个服务(配置变更后常用)
docker compose restart redis
# 4. 查看指定服务实时日志
docker compose logs -f web
# 5. 进入容器排查问题
docker compose exec web sh
# 6. 停止并清理环境(加 -v 会连数据库等持久化数据一起删除)
docker compose down
12.3 Kubernetes(kubectl)常用命令
| 命令 | 说明 |
|---|
kubectl get | 查看资源状态:pods / deployments / services / nodes / events |
kubectl -n 命名空间 | 指定命名空间操作,如 -n kube-system |
kubectl describe | 查看资源详情与事件(排障第一步,优先于 logs) |
kubectl logs -f | 实时查看 Pod 日志(加 --previous 可查看崩溃前日志) |
kubectl exec -it Pod名 -- sh | 进入 Pod 容器(精简镜像无 bash,用 sh 代替) |
kubectl apply -f | 应用 YAML 配置(声明式创建/更新资源) |
kubectl delete -f | 按 YAML 删除资源(不可撤销,执行前务必 get 核对) |
kubectl rollout | 滚动更新管理:restart(重启) / status(状态) / history(历史) |
kubectl top | 查看资源占用:top node / top pod(排查性能瓶颈) |
kubectl port-forward | 端口转发,本地调试集群内服务用 |
# 1. 查看资源状态(-o wide 附带节点 IP,便于定位调度问题)
kubectl get pods,svc,deploy
kubectl get pods -n kube-system -o wide
# 2. 排障三件套(按顺序执行,可定位 80% 问题)
kubectl describe pod web-7d9b5c6b8f-abcde
kubectl logs -f web-7d9b5c6b8f-abcde
kubectl get events -n default --sort-by='.lastTimestamp'
# 3. 进入容器排查(精简镜像用 sh)
kubectl exec -it web-7d9b5c6b8f-abcde -- sh
# 4. 声明式部署与回滚
kubectl apply -f deployment.yaml
kubectl rollout restart deployment web
kubectl rollout status deployment web
# 5. 本地调试集群内服务
kubectl port-forward svc/web-service 8080:80
# 6. 安全删除资源(执行前必须确认名称)
kubectl delete -f deployment.yaml
排障心法:严格遵循 get(看状态)→ describe(看事件/详情)→ logs(看应用日志)的顺序,避免盲目翻日志浪费时间。
生产红线:kubectl delete 不可撤销;执行任何删除/更新操作前,必须先 kubectl get 核对资源名称,并 kubectl get events 确认集群无异常事件。
写在最后
以上命令覆盖了日常运维与开发的高频场景,建议按以下方式巩固:
- 优先掌握:文件目录、文本处理、进程管理是工作中使用频率最高的三类命令。
- 善用帮助:遇到生疏命令优先用
man 或 --help 查阅,比搜索更准确。 - 动手固化:多写脚本把重复操作封装成自己的工具集,避免每次手敲。
- 安全底线:删除、覆盖、改权限前务必二次确认,生产环境慎用
-rf。
Linux 命令没有捷径,熟能生巧,建议收藏本文并持续补充自己的常用命令清单。
以上就是Linux运维开发必备高频命令大全(工作版)的详细内容,更多关于Linux高频命令的资料请关注脚本之家其它相关文章!