Linux 高频运维命令全梳理 — 生产级命令参考手册
来源:马哥Linux运维 | 发布日期:2026-06-14
本文涵盖 60+ 高频 Linux 命令,按生产场景分类,每个命令包含用途、常用参数、真实可跑示例及风险提示。适合系统梳理命令体系的新人运维和需要跨工种排错的 DevOps 工程师。
命令速查索引
| 分类 | 核心命令 |
|---|---|
| 系统信息 | uname, hostname, uptime, date, cal, who, w, last |
| 进程 | ps, top, htop, pidof, pgrep, pkill, kill, pstree, nice, renice, systemctl |
| CPU | top, mpstat, sar -u, vmstat, lscpu, turbostat, perf top |
| 内存 | free, vmstat, sar -r, slabtop, smem, pmap, numastat |
| 网络 | ip, ss, netstat, curl, wget, tcpdump, iftop, nethogs, mtr, traceroute, nc, ethtool, sar -n |
| 磁盘 | df, du, lsblk, blkid, mount, fdisk, parted, iostat, iotop, fuser, lsof |
| 文件 | find, locate, stat, file, tree, ls, chmod, chown, ln, rsync, scp, tar, zip |
| 日志 | tail, head, less, grep, awk, sed, journalctl, dmesg, logrotate |
| 用户 | useradd, usermod, userdel, passwd, chage, groupadd, id, su, sudo |
| 服务 | systemctl, journalctl, systemd-analyze |
| 包管理 | yum, dnf, apt, rpm, dpkg |
| 定时 | crontab, at, flock |
| 性能分析 | strace, ltrace, perf, bcc, bpftrace |
| 文本三剑客 | grep, awk, sed, xargs, sort, uniq, cut, tr, column |
| 实用工具 | tmux, screen, glances, dstat, nmon, sysstat |
一、系统信息命令
uname — 查看系统信息
uname -a # 完整系统信息(内核版本、架构、主机名)
uname -r # 内核版本(模块编译时必需)
uname -m # 架构(x86_64 / aarch64 / i686)
hostname — 主机名管理
hostname # 查看主机名
hostname -I # 查看所有 IP
hostnamectl set-hostname redis-prod-01 # 永久改主机名(systemd 机器)
uptime — 运行时间与负载
uptime # 显示开机时长、登录用户数、1/5/15 分钟平均负载
负载除以 CPU 核数 > 1 说明繁忙。
date — 时间查看与设置
date # 查看时间
date -s "2026-06-13 14:30:00" # 改时间(生产慎用)
date -d "@1700000000" # 时间戳转时间
date +%s # 当前时间戳
date -d "yesterday" +%Y-%m-%d # 算昨天日期
w / who / last — 登录用户
w # 当前登录用户及正在做什么
who # 简版登录信息
last # 历史登录记录(从 /var/log/wtmp 读取)
last -i # 显示登录 IP
二、进程命令
ps — 进程查看
ps aux # BSD 风格(推荐)
ps -ef # System V 风格
ps auxf # 进程树视图
ps aux --sort=-%cpu # 按 CPU 排序
ps aux --sort=-%mem # 按内存排序
ps -eo pid,ppid,user,stat,pcpu,pmem,vsz,rss,etime,cmd # 自定义字段
ps -eLf # 查看线程(LWP 列)
top / htop — 实时监控
top # 交互键:P=CPU 排序 M=内存排序 1=展开多核 c=完整命令行
top -bn1 | head -20 # 一次性输出不进入交互
htop # 增强版,鼠标可操作(需安装)
STAT 状态含义:R(运行) S(睡眠) D(不可中断) Z(僵尸) T(停止) I(空闲) <(高优先级) N(低优先级)
pidof / pgrep / pkill — 进程查找与终止
pidof nginx # 按名找 PID
pgrep -f nginx # 按命令行匹配查找
pgrep -u mysql mysqld # 按用户+进程名查找
pkill nginx # 杀所有 nginx 进程
pkill -9 -f "python.*app.py" # 按命令行模糊匹配杀进程
⚠️
pkill模糊匹配可能误杀,慎用。
kill — 信号管理
kill <pid> # 优雅退出(默认 SIGTERM=15)
kill -9 <pid> # 强制杀(SIGKILL)— 可能丢数据
killall nginx # 按进程名杀
kill -l # 列出所有信号
常见信号:1(HUP 重载配置) 2(INT Ctrl+C) 9(KILL 强制) 15(TERM 优雅退出)
⚠️
kill -9高危:跳过进程清理逻辑,数据库可能丢未提交事务,文件可能丢未刷盘的日志。进阶用法详见 linux-kill-command-advanced-guide — kill 命令高阶实战(kill -0 保活检测、kill -1 热重载、批量杀进程、进程组清理)
nice / renice — 进程优先级
nice -n 10 python3 backup.py # 启动时设优先级(-20~19,-20 最高)
renice -n -5 -p 1234 # 调整已运行进程优先级(root 可设负值)
systemctl — systemd 服务管理
systemctl start|stop|restart|reload|status nginx
systemctl enable|disable nginx # 开机自启管理
systemctl is-active nginx # 是否在运行
systemctl list-units --type=service --state=failed # 查看失败服务
systemctl mask nginx # 禁用服务(连手动起都起不来)
systemctl daemon-reload # 重载 systemd 配置
⚠️
systemctl mask会创建/dev/null软链,恢复需用systemctl unmask。
三、CPU 命令
lscpu — CPU 架构信息
lscpu # 显示 CPU 架构、核数、超线程、NUMA 节点等
mpstat — 逐核 CPU 利用率
mpstat -P ALL 1 # 每秒输出所有 CPU 的 %usr/%sys/%iowait/%idle
关键指标:
%iowait高说明磁盘是瓶颈,%steal高说明宿主机资源争抢。
sar -u — CPU 历史监控
sar -u 1 5 # CPU 利用率,1 秒取 1 次共 5 次
sar -u -f /var/log/sa/sa13 # 查看 13 号的历史记录(需启用 sysstat 收集器)
turbostat — CPU 频率与 C-State
turbostat --interval 5 # 每 5 秒输出实际运行频率
如果
Avg_MHz远低于TSC_MHz(标称频率),说明 CPU 在节电,可能影响性能。
perf — 性能分析利器
perf top # 按调用栈展示热点函数
perf top -p <pid> # 看指定进程热点
perf record -a -g sleep 10 && perf report # 录制 10 秒后分析
⚠️
perf record -a在生产慎用,记录所有 CPU 事件,存储压力大。
四、内存命令
free — 内存使用概览
free -h
关键字段:
total(总内存)free(完全空闲)available(实际可用=free+可回收 buff/cache)buff/cache(页缓存+buffer)
/proc/meminfo — 内存详细统计
cat /proc/meminfo
排查重点:
Dirty(待写盘脏页)Writeback(正在写盘)AnonPages(匿名页=堆栈)Mapped(被 mmap 的文件页)
slabtop — 内核 Slab 分配器
slabtop # 排查内核内存泄漏常用,看 OBJS/ACTIVE/SIZE
smem — 更准确的内存统计
smem -tk # 按 RSS/PSS/USS 排序(PSS 更准确,共享库按比例算)
smem -u mysql # 查看指定用户的内存
pmap — 进程内存映射
pmap -x <pid> # 看进程每块内存的映射(地址/大小/RSS/Dirty)
pmap -x <pid> | tail -1 # 看总计
numastat — NUMA 内存
numastat -m # 看 NUMA 节点内存分配,跨 NUMA 访问性能差
关联排查:linux-essential-commands-reference — 30 个高频命令精简版
五、网络命令
ip — 网络配置(替代 ifconfig)
ip a # 查看所有 IP
ip r # 查看路由表
ip route get 8.8.8.8 # 查看具体 IP 走哪条路由
ip addr add 10.20.0.20/24 dev eth0 # 添加 IP
ip link set eth0 up|down # 启用/关闭网卡
ss — socket 统计(替代 netstat)
ss -tunap # 查看所有 TCP/UDP 连接及进程
ss -tlnp # 查看监听端口
ss -s # 连接统计(estab/timewait/orphaned)
ss -tan state time-wait | wc -l # 统计 TIME_WAIT 数量
curl — HTTP 调试
curl -v https://example.com # 详细请求
curl -I https://example.com # 只看响应头
curl -o /dev/null -s -w "%{time_total}\n" url # HTTP 耗时
# P50/P99 延迟计算
for i in {1..100}; do curl -o /dev/null -s -w "%{time_total}\n" url; done \
| sort -n | awk '{a[NR]=$1}END{print "P50:" a[int(NR*0.5)]; print "P99:" a[int(NR*0.99)]}'
wget — 下载
wget url # 下载
wget -c url # 断点续传
wget --limit-rate=1m url # 限速
tcpdump — 抓包
tcpdump -i eth0 port 80 # 按端口过滤
tcpdump -i eth0 host 10.20.0.10 # 按主机过滤
tcpdump -i eth0 -w capture.pcap # 保存到文件
tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' # 抓 HTTP 请求
⚠️ 生产慎用,可能捕获敏感信息(密码、token),抓包文件要妥善保管。
iftop / nethogs — 网络流量监控
iftop -i eth0 # 实时网络流量(按连接)
nethogs eth0 # 按进程查看网络流量
mtr / traceroute — 路由追踪
mtr -r 8.8.8.8 # 持续追踪,显示每跳丢包率/延迟
mtr --tcp example.com # TCP 模式路由追踪
traceroute 8.8.8.8
nc — 网络调试
nc -zv 10.20.0.10 80 # 测试端口连通性
nc -l 12345 # 监听端口(调试用)
nc -zv 10.20.0.10 20-30 # 端口扫描
ethtool — 网卡信息
ethtool eth0 # 网卡基本信息
ethtool -i eth0 # 网卡驱动
ethtool -g eth0 # Ring Buffer 大小
ethtool -S eth0 # 网卡统计(丢包等)
sar -n — 网络历史监控
sar -n DEV 1 # 网卡流量实时
sar -n TCP,ETCP 1 # TCP 连接/重传实时
网络排查可参考:server-performance-four-dimensions — 性能分析四维度方法论
六、磁盘命令
df — 磁盘空间
df -h # 人性化显示
df -i # 看 inode 使用
df -T # 看文件系统类型
du — 目录空间
du -sh /* # 各级目录大小
du -h --max-depth=1 /var/log # 限制深度
du -sh /* | sort -h | tail # 排序取最大
find / -type f -size +1G -exec du -sh {} \; 2>/dev/null # 大于 1G 的文件
lsblk — 块设备
lsblk # 块设备树状结构
lsblk -f # 看文件系统/UUID
iostat — 磁盘 IO
iostat -xz 1 # 扩展磁盘 IO 统计(r/s, w/s, await, %util)
%util接近 100% 说明磁盘饱和;await高说明 IO 延迟大。
iotop — 按进程看 IO
iotop # 按进程看 IO 使用
iotop -ao # 累计模式,只显示有 IO 的进程
fuser / lsof — 谁在使用
fuser -m /data # 看谁在使用挂载点
fuser -km /data # 杀掉占用进程(⚠️ 先确认)
lsof -p <pid> # 看进程开了哪些文件
lsof -i :80 # 看谁占用端口
lsof +D /data # 看谁在使用目录下所有文件
磁盘空间排查详见:linux-disk-space-troubleshooting
七、文件命令
find — 文件查找
find / -name "*.log" # 按名字
find / -type f -size +1G # 按大小
find / -type f -mtime +7 # 7 天前修改
find / -type f -perm 777 # 按权限
find / -name "*.log" -exec rm {} \; # 执行操作
find / -maxdepth 3 -name "*.log" # 限制深度
# 找大文件并排序
find / -type f -size +100M -exec du -h {} \; 2>/dev/null | sort -hr | head -20
locate — 快速定位
updatedb # 建索引(生产慎用,全盘扫描 IO 大)
locate nginx.conf # 比 find 快得多,但索引可能滞后
rsync — 同步工具
rsync -av /src/ /dst/ # 本地同步
rsync -av /src/ user@remote:/dst/ # 远程同步
rsync -av --delete /src/ /dst/ # 镜像(目标多余文件会删)
rsync -avz --bwlimit=10m /src/ user@remote:/dst/ # 压缩+限速
rsync -avn --delete /src/ /dst/ # dry-run,先看会删什么
⚠️
--delete会删目标端多出文件,先 dry-run。
tar — 打包压缩
tar -czvf archive.tar.gz /data # gzip 压缩
tar -cjvf archive.tar.bz2 /data # bzip2 压缩(压缩比更高)
tar -cJvf archive.tar.xz /data # xz 压缩(最高压缩比)
tar -xzvf archive.tar.gz -C /dst/ # 解压到指定目录
tar --exclude='*.log' -czvf archive.tar.gz /data # 排除
八、日志命令
tail — 实时跟踪
tail -n 100 file.log # 最后 100 行
tail -F file.log # 实时跟踪(文件被删重建也能继续追,推荐用 -F)
grep — 文本搜索
grep "error" file.log # 基础搜索
grep -r "error" /var/log/ # 递归搜索
grep -A 5 -B 5 "error" file.log # 上下文各 5 行
grep -E "ERROR|WARN" file.log # 正则(等价 egrep)
grep -c "error" /var/log/*.log # 按文件统计匹配数
grep -r --include="*.log" --exclude-dir=".git" "error" /var/log/
awk — 列处理
awk '{print $1}' file.log # 打印第一列
awk -F: '{print $1}' /etc/passwd # 自定义分隔符
awk '$3 > 100 {print $1}' file.log # 条件过滤
awk '{count[$1]++} END {for(k in count) print k, count[k]}' # 分组计数
# 访问 IP 排行
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head
sed — 流编辑器
sed 's/old/new/g' file.log # 替换
sed -i.bak 's/old/new/g' file.log # 直接改文件并备份
sed -n '5,10p' file.log # 打印 5-10 行
sed '/pattern/d' file.log # 删除匹配行
sed -n '/start/,/end/p' file.log # 提取 start 到 end 之间的行
⚠️
sed -i直接改文件不可逆,先sed 's///g' file > newfile确认再覆盖。
journalctl — systemd 日志
journalctl -u nginx # 查看 nginx 服务日志
journalctl -u nginx -f # 实时跟踪
journalctl --since "1 hour ago" # 时间范围
journalctl -p err # 只看 err 及以上级别
journalctl -k # 内核日志
journalctl -b # 本次启动日志(-b -1 上次启动)
journalctl --vacuum-size=500M # 清理日志(限制大小)
dmesg — 内核日志
dmesg -T # 内核日志(带时间戳)
dmesg -w # 实时跟踪
dmesg | grep -i "out of memory" # 查 OOM
九、用户与权限
useradd -m -s /bin/bash username # 创建用户
usermod -aG sudo username # 加 sudo 组(-a 不能漏)
userdel -r username # 删用户及 home
passwd username # 改密码
chage -M 90 username # 密码 90 天过期
chage -l username # 看密码策略
su - username # 切换用户(加载环境变量)
sudo -l # 查看 sudo 权限
十、包管理
yum/dnf(RHEL/CentOS)
yum install -y nginx # 安装
yum remove nginx # 卸载
yum update nginx # 升级
yum provides /usr/bin/htop # 查文件属于哪个包
yum versionlock nginx-1.20.1 # 锁定版本
apt(Ubuntu/Debian)
apt-get install -y nginx
apt-get purge nginx # 连配置一起删
apt-mark hold nginx # 锁定版本
十一、定时任务
crontab -e # 编辑用户级 crontab
crontab -l # 查看
crontab -r # ⚠️ 直接删除整张表
# 防重入
* * * * * flock -n /tmp/mytask.lock python3 /opt/mytask.py
# systemd-timer(更现代的定时方案)
cat > /etc/systemd/system/backup.timer << 'EOF'
[Unit]
Description=Daily Backup
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl enable --now backup.timer
systemctl list-timers
十二、性能分析工具
strace — 系统调用跟踪
strace -p <pid> -c # 统计系统调用
strace -p <pid> -e trace=network # 只看网络调用
strace -p <pid> -o /tmp/strace.log # 输出到文件
⚠️ 生产慎用,高并发下日志膨胀极快,且会让进程变慢。
bcc / bpftrace — 高级内核追踪
# bcc 工具
/usr/share/bcc/tools/biolatency 1 10 # IO 延迟分布
/usr/share/bcc/tools/tcpconnect # 实时 TCP 连接
/usr/share/bcc/tools/execsnoop # 跟踪新进程启动
# bpftrace one-liner
bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("%s %s\n", comm, str(args->filename)); }'
十三、文本三剑客与工具
xargs — 参数转换
find . -name "*.log" | xargs rm
find . -name "*.txt" | xargs -P 4 -I {} cp {} /dst/ # 4 并发
sort / uniq — 排序去重
sort -rn file | head # 数字倒序
sort file | uniq -c | sort -rn # 出现次数排行
sort file | uniq -d # 看重复的
cut / tr / column — 文本格式化
cut -d: -f1 /etc/passwd # 按冒号取第一列
tr 'a-z' 'A-Z' < file # 小写转大写
tr -d '0-9' < file # 删数字
mount | column -t # 对齐输出
watch — 定时执行
watch -n 1 "ls -lh /tmp" # 每秒执行一次(默认 2 秒)
watch -d -n 1 "free -h" # 高亮变化
tmux / screen — 终端复用
tmux new -s mysession # 新建 session
# Ctrl+b d 分离
tmux attach -t mysession # 重新连接
# Ctrl+b c 新建窗口,Ctrl+b " 水平分屏,Ctrl+b % 垂直分屏
十四、实战排障套路
排查慢请求
top -c # 1. 找高 CPU 进程
ps -p <pid> -o pid,ppid,user,stat,pcpu,pmem,vsz,rss,etime,cmd # 2. 进程详情
pidstat -d -p <pid> 1 # 3. 看进程 IO
lsof -p <pid> # 4. 看打开的文件
strace -p <pid> -c # 5. 统计系统调用
pmap -x <pid> # 6. 看内存映射
ss -tnp | grep <pid> # 7. 看网络连接
tail -F /var/log/app.log # 8. 看应用日志
找占用端口的进程
ss -tlnp | grep 80 # 看谁在监听 80 端口
lsof -i :80 # 或用 lsof
ps -p 1234 -o cmd # 找到 PID 后查进程名
ls -l /proc/1234/cwd # 进程工作目录
找吃 CPU 的进程
top -c # 看 %CPU 最高的
ps aux --sort=-%cpu | head # 或用 ps
pidstat -u 1 # 持续监控
perf top -p <pid> -g # 看调用栈热点
内存泄漏排查
free -h # 全局内存
ps aux --sort=-%mem | head # 按内存排序
# 连续监测 RSS
while true; do ps -p <pid> -o rss,vsz; sleep 5; done
pmap -x <pid> | sort -k2 -nr | head # 哪段内存大
网络抖动排查
ping -c 100 host # 看延迟/丢包
mtr -r -c 100 host # 路由追踪
sar -n TCP,ETCP 1 # 看 TCP 重传率
ethtool -S eth0 | grep -i drop # 网卡驱动丢包
十五、危险命令清单(生产绝对要小心)
以下每条都是真实生产事故的教训。
rm -rf — 删根
rm -rf / # 删根目录 — 真实事故:脚本里没传路径,系统全废
rm -rf $VAR/* # VAR 没定义 → rm -rf /*
# 安全做法
# 1. 用 trash-cli:trash-put file(软删除)
# 2. 删除前 ls 确认路径:ls $VAR/ 再看 rm -rf $VAR/*
# 3. 限制范围:先确认 /data/cache 存在且不是 /
dd — 磁盘写入
dd if=/dev/zero of=/dev/sda # 清空整盘 — 真实事故:想写分区写了整块盘
# 安全做法:确认盘符(lsblk)、写到具体分区(sdb1 不是 sdb)、加 count 限制
chmod -R 777
chmod -R 777 / # 全系统 777 — 等于给攻击者开后门
# 安全做法:文件 644,目录 755 分开;永远不要用 777
kill -9 数据库
kill -9 mysqld # 可能丢数据,redo log 没刷盘可能崩溃恢复失败
# 安全做法:先 kill <pid> 发 SIGTERM 等 30 秒,或用 mysql -e "SHUTDOWN"
> /etc/passwd — 清空关键文件
> /etc/passwd # 所有用户无法登录
# 安全做法:用 >> 追加替代 >;改前先 cp 备份
mkfs / fdisk 写错
mkfs.ext4 /dev/sda # 格式化整块盘 — 数据全废
# 安全做法:lsblk 确认盘,mkfs 写具体分区(sda1 不是 sda),改分区表前备份
# sfdisk -d /dev/sda > /tmp/sda-part.bak
十六、命令效率提升
Bash 快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl+A / Ctrl+E |
行首 / 行尾 |
Ctrl+U / Ctrl+K |
删到行首 / 删到行尾 |
Ctrl+W |
删一个词 |
Ctrl+R |
反向搜索历史 |
Ctrl+L |
清屏 |
!! |
执行上条命令 |
!$ |
上条最后一个参数 |
推荐 Alias
alias ll='ls -lh'
alias la='ls -lah'
alias rm='rm -i' # 覆盖前确认(⚠️ 脚本里会被卡)
alias ports='ss -tlnp'
alias myip='curl -s ifconfig.me'
alias reload='source ~/.bashrc'
实用函数
# 找大文件
bigfiles() { find / -type f -size +${1:-100M} 2>/dev/null | xargs du -h 2>/dev/null | sort -h | tail -${2:-20}; }
# 杀进程前确认
kp() {
ps -ef | grep "$1" | grep -v grep
echo -n "Kill? [y/N]: "; read answer
[ "$answer" = "y" ] && pkill "$1"
}
关联页面
| 页面 | 关联点 |
|---|---|
| linux-essential-commands-reference | 30 个高频命令精简版(与本文互为 companion) |
| linux-disk-space-troubleshooting | 磁盘空间排障 |
| server-performance-four-dimensions | 性能分析四维度 |
| linux-file-transfer-guide | 文件传输指南 |
| linux-kill-command-advanced-guide | Linux kill 命令高阶实战指南 — 5 个高频信号、kill -0 保活检测、kill -1 |
| cpu-spike-troubleshooting-guide | CPU 飙高排障 |