返回首页

Linux 高频运维命令全梳理 — 生产级命令参考手册

📅 创建于 2026-06-15 🔄 更新于 2026-06-15 📝 2624 字

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-reference30 个高频命令精简版(与本文互为 companion)
linux-disk-space-troubleshooting磁盘空间排障
server-performance-four-dimensions性能分析四维度
linux-file-transfer-guide文件传输指南
linux-kill-command-advanced-guideLinux kill 命令高阶实战指南 — 5 个高频信号、kill -0 保活检测、kill -1
cpu-spike-troubleshooting-guideCPU 飙高排障