news 2026/10/20 19:52:27

linux系统编程(十六):常用Linux命令实用速查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux系统编程(十六):常用Linux命令实用速查

常用 Linux 命令实用速查 —— 系列收尾的一张大表

系列前 14 篇都是 C 函数级的系统编程,最后一篇换个角度:日常运维 / 调试要用到的 shell 命令速查。按 “文件 / 文本 / 进程 / 网络 / 系统 / 调试 / 性能” 七大类汇总,每条带最常用 flag 和典型用法。新手当入门,老手当备忘。


0. 引言:服务挂了,三十秒查到原因

命令查什么
topCPU 谁占满了?
free -h内存够吗?
df -h磁盘满了吗?
ss -tnlp端口监听情况?
journalctl -xe系统日志有错吗?
dmesg | tail内核有没有 OOM?

六行命令搞定第一轮排查。下面把每条都拆开讲。


1. 文件操作

命令用途常用例子
ls列文件ls -lah详细 + 人类大小 + 隐藏
cd切目录cd -回到上一个
pwd显示当前路径—
cp复制cp -a src dst保留属性
mv移动 / 改名—
rm删除rm -rf dir递归强制(慎用)
mkdir建目录mkdir -p a/b/c递归建
rmdir删空目录—
ln链接ln -s target name软链接
find递归查找见 §1.1
locate查文件(数据库)updatedb后才有数据
which找命令路径which gcc
file看文件类型file binary
stat看 inode / 时间戳stat foo.c
du目录大小du -sh *当前目录每项大小
df磁盘空间df -h人类可读
tar归档tar -czf x.tgz dir/
zip/unzipzip 格式—

1.1 find 进阶

命令含义
find . -name "*.c"按名字查
find . -type f -mtime -11 天内修改的文件
find . -type f -size +100M大于 100MB的文件
find . -name "*.log" -delete找到就删
find . -name "*.c" -exec grep TODO {} +找文件再grep
find . -name "*.tmp" | xargs rm找到管道删

1.2 chmod / chown

命令含义
chmod 755 script.shrwxr-xr-x
chmod +x script.sh加可执行位
chmod -R u+w dir/递归给 owner 加写权限
chown user:group file改属主
chown -R user:group dir/递归改属主

2. 文本处理

命令用途常用例子
cat全部输出cat file
less分页less file,/keyword搜,q退
more老式分页—
head头部head -n 20 file
tail尾部tail -f log实时跟踪 ⭐
wc计数wc -l file行数
grep模式查找见 §2.1
sed流编辑见 §2.2
awk强大文本处理见 §2.3
sort排序sort -n -k 2按第 2 列数值
uniq去重(要先 sort)sort | uniq -c计数
cut切列cut -d: -f1 /etc/passwd
paste拼列paste a.txt b.txt
tr字符替换tr 'a-z' 'A-Z'大小写转换
xargs把输入变参数find ... | xargs grep
tee复制 stdout 到文件cmd | tee log

2.1 grep 进阶

命令含义
grep -r "pattern" dir/递归
grep -i "pattern" file忽略大小写
grep -v "pattern" file反向(不匹配)
grep -E "a|b" file扩展正则
grep -P "\d+" filePerl 正则
grep -n "pattern" file显示行号
grep -A 5 "err" file匹配后5 行
grep -B 5 "err" file匹配前5 行
grep -C 5 "err" file匹配前后5 行 ⭐
grep -l "err" *.c只显示文件名
grep --include="*.c" -r foo .只在.c文件里搜

2.2 sed 进阶

命令含义
sed 's/old/new/' file替换每行第一个
sed 's/old/new/g' file全部替换
sed -i 's/old/new/g' file直接改文件⭐
sed -i.bak 's/old/new/g' file改前备份为.bak
sed -n '5,10p' file只显示 5-10 行
sed '/pattern/d' file删除匹配行

2.3 awk 速查

命令含义
awk '{print $1}' file打印第 1 列
awk -F: '{print $1}' /etc/passwd用:分隔
awk '$3 > 100 {print $1}' file第 3 列 > 100 时打印第 1 列
awk '{sum += $1} END {print sum}'求和
awk 'NR==5' file第 5 行
awk '/pattern/ {print}' file匹配行

3. 进程相关

命令用途常用例子
ps列进程ps aux/ps -ef
top实时进程按M按内存排,P按 CPU
htop增强版 top颜色 + 树形
kill发信号kill -9 PID强杀
pkill按名字发信号pkill -9 firefox
killall同上—
pgrep按名字找 PIDpgrep nginx
pidof按名字找 PIDpidof systemd
nohup无视 SIGHUPnohup ./srv &
nice调优先级nice -n 10 cmd
time计时time make
jobs看 shell 后台任务fg %1调到前台
nprocCPU 数make -j$(nproc)

3.1 ps 常见组合

命令含义
ps aux全部进程,BSD 格式⭐
ps -ef全部进程,UNIX 格式
ps aux --sort=-%cpu | head按 CPU 排前 10
ps aux --sort=-%mem | head按内存排前 10
ps -p PID -o pid,ppid,cmd看特定 PID 的指定字段
ps -L -p PID看进程的所有线程

3.2 信号速查

命令含义
kill -l列出所有信号
kill -SIGTERM PID礼貌停(默认)
kill -SIGKILL PID强杀(kill -9)
kill -SIGSTOP PID暂停进程
kill -SIGCONT PID继续运行
kill -SIGHUP PID重读配置(守护进程惯例)

4. 网络

命令用途常用例子
ip现代网络配置ip a看接口
ifconfig老接口(deprecated)
sssocket 信息 ⭐ss -tnlp监听 TCP
netstat老的网络统计(deprecated)
pingICMP echoping baidu.com
traceroute路径跟踪—
mtr实时路径—
nslookup/digDNSdig +short baidu.com
curlHTTP 客户端见 §4.2
wget下载文件wget -c url续传
ncnetcat 万能nc -lvp 8080监听
tcpdump抓包tcpdump -i any port 80
iptables防火墙(root 用)
iperf带宽测试—
route/ip route路由表—

4.1 ss 常用

命令含义
ss -tnlpTCP + 数字端口 + 监听 + 进程 ⭐
ss -tnapTCP + 全部 + 进程
ss -unlpUDP 监听
ss -s摘要统计
ss -tiTCP 详细信息(rtt 等)

4.2 curl 进阶

命令含义
curl http://x.comGET
curl -i http://x.com显示响应头 + body
curl -I http://x.com只看响应头(HEAD)
curl -X POST -d 'a=1&b=2' urlPOST 表单
curl -X POST -H "Content-Type: application/json" -d '{"a":1}' urlPOST JSON
curl -o file url保存到文件
curl -L url跟随 301 / 302 重定向
curl -u user:pass urlBasic auth
curl --resolve x.com:80:1.2.3.4 http://x.com强制 DNS

4.3 tcpdump 抓包

命令含义
tcpdump -i any port 80抓 80 端口
tcpdump -i eth0 host 192.168.1.1抓特定主机
tcpdump -A -i any port 8080ASCII 显示载荷
tcpdump -w cap.pcap port 80写文件,wireshark 看
tcpdump -r cap.pcap读 pcap 文件

5. 系统信息

命令用途
uname -a内核版本 / 主机名 / 架构
hostname主机名
whoami当前用户
iduid / gid
who/w谁登录了
last登录历史
uptime开机时长 + 负载
date当前时间
cal日历
env环境变量
lsb_release -a发行版信息
cat /etc/os-release同上(更通用)
dmidecode硬件信息
lspciPCI 设备
lsusbUSB 设备
lsblk块设备(盘)
lscpuCPU 信息
lsmod已加载内核模块

5.1 内存 / 磁盘 / IO

命令含义
free -h内存使用(人类可读)
free -m内存使用(MB)
vmstat 1 5每秒一次,共 5 次
iostat -xz 1每秒磁盘 IO
df -h磁盘空间
df -iinode 使用率
du -sh *当前目录每项大小
du -ah | sort -h | tail找最大的文件⭐

6. 调试 / 跟踪

命令用途
strace跟踪系统调用
ltrace跟踪库调用
gdb调试器
lsof列出打开的文件 / fd
fuser谁在用这个文件
pmap进程内存映射
pstack/eu-stack进程调用栈
objdump反汇编
nm符号表
ldd看动态库依赖
readelfELF 文件信息
addr2line地址转源代码行号

6.1 strace 进阶 ⭐

命令含义
strace -p PID跟踪运行中的进程
strace -e trace=open,read,write cmd只跟踪这几个 syscall
strace -f cmd跟踪 fork 出的子进程
strace -c cmd统计 syscall 调用次数
strace -o trace.log cmd输出到文件
strace -tt cmd加时间戳
strace -T cmd加每次调用耗时

6.2 lsof 常用

命令含义
lsof -i :80谁在用 80 端口⭐
lsof -i tcp所有 TCP 连接
lsof -p PIDPID 打开了什么
lsof -u user用户打开的 fd
lsof file谁在用这个文件
lsof | grep deleted已删除但仍打开(磁盘满的元凶)

6.3 gdb 极简速查

启动方式:

命令含义
gdb ./prog启动
gdb -p PIDattach 到运行中的进程
gdb ./prog core看 core dump

gdb 内部命令:

命令含义
b main在main设断点
r [args]运行
c继续
n下一步(不进函数)
s进函数
bt调用栈 ⭐
info threads看线程列表
thread N切到线程 N
p var打印变量
q退出

7. 性能分析

命令用途
top/htop实时进程 CPU / 内存
vmstat系统层面 CPU / 内存 / IO
iostat磁盘 IO
mpstat每个 CPU 核
pidstat每个进程的资源使用
sar历史性能
perf内核 + 用户态 profiler ⭐
perf top实时热点函数
perf record / report离线 profile

7.1 perf 速用

命令含义
perf top实时热点
perf record -g ./progprofile,带调用栈
perf report查看 profile 结果
perf stat ./prog看 cache miss / IPC 等
perf stat -e cycles,instructions ./prog指定事件计数

7.2 vmstat 关键列

vmstat1
列含义
r/b运行队列 / 阻塞队列长度
us/sy/id/wa用户 / 内核 / 空闲 /等 IOCPU%
si/soswap in / out(> 0 表示在用 swap,性能差)

8. 实用组合

场景命令
找最大的 10 个文件du -ah / 2>/dev/null | sort -h | tail -10
看哪个进程在用某个文件fuser file或lsof file
找占用磁盘的"已删除但仍打开"文件lsof | grep deleted | sort -k 7 -n -r | head(解决:重启对应进程)
跟踪一个进程的全部 fdls -l /proc/PID/fd/
看进程的内存映射cat /proc/PID/maps或pmap -x PID
看进程当前在干嘛(卡住了)strace -p PID/cat /proc/PID/wchan/cat /proc/PID/stack/gdb -p PID -batch -ex bt
实时跟踪日志 + 过滤tail -f /var/log/syslog | grep -i error
systemd 服务日志journalctl -fu nginx/journalctl --since "1 hour ago" -p err
临时压测一个端口服务端nc -lvp 8080,客户端echo "hello" | nc localhost 8080
找占用某端口的进程ss -tnlp | grep :80/lsof -i :80/fuser 80/tcp
后台执行 + 完整日志nohup ./longrun > out.log 2>&1 &+disown

9. 一页式速查(最常用 30 条)

类最常用命令
文件ls -lah/cd -/cp -a/rm -rf(慎) /find . -name "*.x"
文本grep -rn/tail -f/head -20/sed -i 's/old/new/g'/awk '{print $1}'
进程ps aux/top/kill -9 PID/pgrep/pkill
网络ss -tnlp/curl -i/tcpdump -i any port 80/ping/dig
系统uname -a/uptime/free -h/df -h/du -sh *
调试strace -p PID/lsof -i :80/gdb -p PID/pmap PID/cat /proc/PID/maps
性能htop/iostat -xz 1/vmstat 1/perf top/perf record -g

10. 收尾

到这里,Linux基础工具命令层就讲完了。下面进入C 库基础篇——写好的代码到底跑在什么内存上?标准库到底有多少坑?文件系统怎么操作?这些是 Linux 下 C 开发的命脉。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 19:51:02

从清单到体系:如何构建可评估、可维护的结构化技能管理框架

1. 从“skills”这个词说起:它到底指什么“skills”这个词看起来简单,但放在不同语境里,指向的东西差别很大。我在多个项目里反复接触过这个词,有时候它指的是一个人的能力清单,有时候是一个团队的能力矩阵&#xff0c…

作者头像 李华
网站建设 2026/10/20 19:42:32

Flink面试追问高频考点:底层原理与实战避坑指南

最近总有人问我同一个问题:网上Flink面试题一搜一大把,为什么真到了面试现场,还是被问得接不上话?我的回答通常是,因为你背的是"答案",面试官问的是"为什么"。实时计算这几年几乎是所有…

作者头像 李华
网站建设 2026/10/20 19:41:22

Trimmomatic参数详解与实战指南:NGS数据清洗核心工具

Trimmomatic 这东西,做二代测序数据分析的人大概率都用过或者迟早会用上。刚拿到手的原始下机数据(fastq)远没有想象中那么清爽,接头残留、末端低质量碱基、异常短片段,这些垃圾不清理掉,后续比对和组装轻则…

作者头像 李华
网站建设 2026/10/20 19:39:20

SAR极坐标格式算法PFA原理与Python实操:正视/斜视双模成像

简介:本资源是一套基于MATLAB实现的合成孔径雷达(SAR)成像算法代码包,面向信号处理、雷达系统与遥感图像处理方向的本科生、研究生及工程实践者,聚焦于极坐标格式算法(PFA)在正视与斜视两种典型…

作者头像 李华
网站建设 2026/10/20 19:37:33

从rea项目名到响应式系统:信号、副作用与批处理实战

1. 从“rea”这个标题说起:一个极简命名背后的完整项目思维第一次看到“rea”这个标题,很多人会愣一下——三个字母,没有上下文,没有说明,甚至不知道它属于哪个领域。但恰恰是这种极简命名,在真实的项目开发…

作者头像 李华