本文为总结性内容,方便快速查找适用命令。
关于详细内容,请见:# Linux进阶Day01:程序与进程、进程前后台调度、进程查杀、日志管理、systemd服务管理
命令速查表
| 命令 | 用途 | 常用选项 | 示例 |
|---|---|---|---|
top |
动态查看系统负载和进程 | P(按CPU排序),M(按内存排序),1(看每核CPU) |
top |
uptime |
查看系统平均负载(1/5/15分钟) | 无 | uptime |
free |
查看内存使用 | -m(MB),-h(人类可读) |
free -h |
df |
查看磁盘剩余空间 | -h(人类可读),-T(显示文件系统类型) |
df -hT |
du |
查看目录/文件磁盘占用大小 | -sh(汇总人类可读),`-sh * |
sort -hr`(排序) |
ps |
静态查看进程快照 | -ef,aux |
`ps -ef |
systemctl |
管理系统服务(启动/停止/状态) | status(查看状态),stop(停止),start(启动),restart(重启) |
systemctl status nginx |
ss |
查看网络连接/端口(更快) | -naltp(数字+所有+监听+TCP+进程) |
`ss -naltp |
netstat |
查看网络连接/端口 | -tnlp(TCP+数字+监听+进程),-s(统计) |
`netstat -tnlp |
ping |
测试网络连通性 | -c N(发包次数) |
ping -c 4 192.168.1.12 |
iptables |
防火墙规则管理(查看/添加/删除) | -L -n(查看规则),-I(插入规则),-D(删除规则) |
iptables -L -n |
firewall-cmd |
firewalld 防火墙管理 | --list-all(查看所有规则),--add-service=http(放行http) |
firewall-cmd --list-all |
ip |
查看/配置网卡IP和路由 | a(查看IP),link set down/up(启用/禁用网卡) |
ip a |
ifconfig |
查看/配置网卡IP(传统工具) | 无 | ifconfig |
curl |
测试 HTTP 服务连通性/接口 | -v(详细输出),-I(只查看响应头),-o /dev/null -s -w(测试耗时) |
curl -v http://192.168.1.12:80 |
lscpu |
查看 CPU 核数、架构信息 | grep ^CPU\(s\)(只看总核数) |
`lscpu |
lsblk |
查看磁盘分区和挂载情况 | 无 | lsblk |
iotop |
查看磁盘 I/O 占用最高的进程 | -o(只显示有IO活动的进程) |
iotop -o |
nload |
实时查看网络带宽使用情况 | 指定网卡名 | nload eth0 |
sar |
查看网络流量统计(系统活动报告) | -n DEV 1(每秒刷新网络流量) |
sar -n DEV 1 5 |
nethogs |
按进程查看网络带宽占用 | 指定网卡名 | nethogs eth0 |
iftop |
按连接查看网络流量 | -i(指定网卡) |
iftop -i eth0 |
journalctl |
查看 systemd 管理的服务日志 | -u 服务名 -f(实时查看) |
journalctl -u nginx -f |
tail |
查看文件末尾内容(实时日志) | -f(实时跟踪),-n N(显示N行) |
tail -f /var/log/nginx/error.log |
kill |
按 PID 终止进程 | -15(正常终止),-9(强制杀死) |
kill -9 1234 |
killall |
按进程名终止进程 | -9(强制杀死) |
killall -9 httpd |
nginx -t |
测试 Nginx 配置文件语法 | -t(测试),-T(测试并输出完整配置) |
/usr/local/nginx/sbin/nginx -t |
head |
查看文件开头(前几行) | -n N(指定行数) |
head -20 /var/log/nginx/error.log |
grep |
过滤文本内容 | -v(反向过滤),-i(忽略大小写) |
`ps -ef |
场景速查(快速对应命令)
| 场景 | 用什么查 |
|---|---|
| CPU 谁占最多 | top → 按 P |
| 内存谁占最多 | top → 按 M |
| 磁盘谁在疯狂读写 | iotop |
| 带宽谁在占用 | nethogs / nload |
| 端口是否正常监听 | `ss -naltp |
| 服务有没有运行 | systemctl status 服务名 |
| Nginx 配置有没有错 | nginx -t |
| Nginx 为什么报错 | tail -f /var/log/nginx/error.log |
| 网能不能通 | ping IP |
| 防火墙开没开 | firewall-cmd --list-all / iptables -L -n |
| 磁盘还剩多少 | df -h |
| 内存还剩多少 | free -h |
| 平均负载多少 | uptime |
一、进程与程序的关系
程序 是用户使用计算机语言编写的、可以实现特定目标或解决特定问题的代码集合。
进程 是正在执行的一个程序或命令,每个进程都是一个运行的实体,并占用一定的系统资源。
简单理解: 程序是人写的代码,进程是正在运行的程序。当程序被执行时,程序的代码会被加载入内存,操作系统给这个进程分配一个 ID,称为 PID(Process ID,进程编号)。打开多个程序实例(如多个浏览器窗口),会产生多个进程,但它们使用的是同一个程序文件。
PID = Process ID = 进程编号
二、top:动态查看系统负载与进程信息
基本语法
bash
top
top 命令属于动态命令,默认每 3 秒刷新一次,动态显示系统整体负载和各个进程的资源占用情况。

第一行:系统负载信息
top - 10:12:28 up 13:05, 3 users, load average: 0.00, 0.01, 0.05
| 内容 | 说明 |
|---|---|
10:12:28 |
系统当前时间 |
up 13:05 |
系统已运行时间(13小时5分钟) |
3 users |
当前登录用户数 |
load average: 0.00, 0.01, 0.05 |
系统在 1分钟、5分钟、15分钟 的平均负载。核心判断标准: 如果负载值超过 CPU 总核心数,说明系统处于高负载状态 |
第二行:进程总数统计
Tasks: 230 total, 1 running, 229 sleeping, 0 stopped, 0 zombie
| 内容 | 说明 |
|---|---|
total |
进程总数 |
running |
正在运行的进程数 |
sleeping |
睡眠进程数 |
stopped |
停止的进程数 |
zombie |
僵尸进程数。如果不是 0,需要手工检查并清理僵尸进程 |
第三行:CPU 使用情况
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
| 字段 | 说明 |
|---|---|
%us |
用户态 CPU 占用(User space) |
%sy |
内核态 CPU 占用(System space) |
%ni |
改变过优先级的进程占用的 CPU 百分比 |
%id |
空闲 CPU 百分比(idle) |
%wa |
I/O 等待占用的 CPU 百分比(磁盘 I/O、网络 I/O 等待) |
%hi |
硬中断占用的 CPU 百分比 |
%si |
软中断占用的 CPU 百分比 |
%st |
虚拟化中虚拟 CPU 等待实际 CPU 的时间百分比(Steal Time) |
判断 CPU 压力的方法:
%id持续过低(< 20%)→ CPU 繁忙%wa持续过高 → 磁盘或网络 I/O 存在瓶颈%us+%sy持续 > 80% → CPU 资源紧张
问题:多核 CPU 如何查看每一核的负载?
在 top 界面按快捷键
1,可展开显示每个 CPU 核心的单独负载。
第四行:物理内存使用情况
Mem: 1863252 total, 829960 used, 68352 free, 96490 buff/cache
| 字段 | 说明 |
|---|---|
total |
物理内存总量(KB) |
used |
已使用的物理内存 |
free |
空闲物理内存 |
buff/cache |
用于缓冲和缓存的内存 |
真正剩余内存 = free + buff/cache (因为 buff/cache 在需要时可被回收)
真正使用内存 = used - buff/cache
第五行:交换分区(Swap)信息
Swap: 2097148 total, 3336 used, 2093812 free, 622420 avail Mem
| 字段 | 说明 |
|---|---|
total |
交换分区总大小 |
used |
已使用的交换分区 |
free |
空闲交换分区 |
avail Mem |
可用内存(推荐关注此值,无需计算 buff/cache) |
Swap 分区说明: 当物理内存不足时,系统自动从硬盘划出一块区域充当内存使用。Swap 使用率过高说明物理内存严重不足,需要扩容或优化应用。
进程列表字段说明
| 字段 | 说明 |
|---|---|
| PID | 进程 ID |
| USER | 进程所属用户 |
| PR | 优先级,数值越小优先级越高 |
| NI | NICE 优先级,取值范围 -20 到 19,默认 0 |
| VIRT | 虚拟内存大小(KB) |
| RES | 物理内存大小(KB) |
| SHR | 共享内存大小(KB)。进程实际内存 = RES - SHR |
| S | 进程状态:S=睡眠,R=运行,Z=僵尸 |
| %CPU | CPU 占用百分比 |
| %MEM | 内存占用百分比 |
| TIME+ | 累计占用 CPU 时间 |
| COMMAND | 进程名 |
top 交互快捷键
| 快捷键 | 作用 |
|---|---|
P(大写) |
按 CPU 使用率从高到低排序 |
M(大写) |
按内存使用率从高到低排序 |
1 |
展开/合并多核 CPU 的负载显示 |
q 或 Ctrl + C |
退出 top |
CPU 负载压测命令
bash
# 利用 /dev/urandom 生成随机数据并用 md5sum 计算,消耗 CPU 资源
cat /dev/urandom | md5sum
三、free:查看内存使用情况
基本语法
bash
free [选项]
| 选项 | 说明 |
|---|---|
-m |
以 MB 为单位显示内存大小 |
-h |
以人类可读格式显示(GB/MB/KB) |
1GB = 1024MB 1MB = 1024KB
示例

available 列 是系统真正可用的内存,用户无需手动计算 buffer/cache,直接查看此列即可。
四、df:查看磁盘剩余空间
本命令既能查看磁盘剩余空间,又能查看挂载情况和文件系统
基本语法
bash
df [选项]
| 选项 | 说明 |
|---|---|
-h |
以人类可读格式显示(GB/MB) |
-T |
显示文件系统类型(如 xfs、ext4) |
df = Disk Free,即磁盘剩余空间
示例

| 字段 | 说明 |
|---|---|
Filesystem |
文件系统名称/磁盘分区 |
Size |
总大小 |
Used |
已使用大小 |
Avail |
剩余可用大小 |
Use% |
使用百分比 |
Mounted on |
挂载路径(相当于 Windows 的盘符) |
关注点:
Use%超过 85%-90% 时,需要清理磁盘或扩容。
五、ps:静态查看系统进程信息
top 是动态查看(每 3 秒刷新),ps 是静态查看(仅查询执行瞬间的快照)。
基本语法
bash
ps [选项]
| 选项 | 说明 |
|---|---|
-e 或 -A |
列出全部进程 |
-f |
显示完整字段(full) |
-l |
长格式输出 |
aux |
以 BSD 格式显示所有进程(无 - 前缀) |
示例 1:ps -ef(System V 风格)

| 字段 | 说明 |
|---|---|
UID |
进程所属用户 ID |
PID |
进程 ID |
PPID |
父进程 ID。如果父进程已终止,子进程找不到父进程,则成为僵尸进程 |
C |
CPU 占用率(百分比形式) |
STIME |
进程启动时间 |
TTY |
终端设备。? 表示非终端发起的后台进程 |
TIME |
进程实际使用的 CPU 时间 |
CMD |
进程名或路径 |
示例 2:ps aux(BSD 风格)

| 字段 | 说明 |
|---|---|
USER |
进程所属用户 |
PID |
进程 ID |
%CPU |
CPU 占用百分比 |
%MEM |
内存占用百分比 |
VSZ |
虚拟内存大小(KB) |
RSS |
固定物理内存大小(KB) |
TTY |
终端:tty1-tty6 为本地终端,pts/0 为远程连接 |
STAT |
进程状态:R=运行,S=睡眠,T=停止,Z=僵尸 |
START |
启动时间 |
TIME |
累计 CPU 时间 |
COMMAND |
实际执行指令 |
实际工作场景:过滤指定进程
bash
# 基本过滤
ps -ef | grep crond
# 去掉 grep 自身的匹配行
ps -ef | grep crond | grep -v "grep"
# 只显示需要的进程信息
root 7102 1 0 Mar23 ? 00:00:04 /usr/sbin/crond -n
grep -v用于去除包含指定关键词的那一行。
六、netstat / ss:查询网络端口与连接信息
netstat 基本语法
bash
netstat [选项] | grep 进程名
| 选项 | 说明 |
|---|---|
-t |
只列出 TCP 协议的连接 |
-u |
只列出 UDP 协议的连接 |
-n |
将地址和端口以数字形式显示(不解析域名) |
-l |
只过滤出状态为 LISTEN(监听中)的连接 |
-p |
显示发起连接的进程 PID 和进程名称 |
-s |
统计各类连接信息 |
常用组合: -ntulp = tcp + 数字 + 监听 + 进程
只需记住常用一个组合即可
示例
bash
# 查询 httpd 服务的端口信息
netstat -ntulp | grep httpd
# 查询 22 号端口(SSH)的连接情况
netstat -napt | grep :22
# 查看网络连接统计
netstat -s
ss 基本语法
bash
ss -naltp | grep 进程名
参数说明:
-n:数字显示-a:显示所有 socket-l:只显示监听中的端口-t:只显示 TCP-p:显示进程信息
示例
bash
# 查询 sshd 服务的端口信息
ss -naltp | grep sshd
netstat 与 ss 的区别:
① netstat 信息简洁,ss 信息更丰富;② ss 执行效率比 netstat 高(ss 直接读取内核数据,netstat 遍历 /proc 文件系统)
七、kill / killall:终止进程
kill:根据 PID 终止进程
bash
kill [信号] PID
原理: kill 命令向进程发送信号,系统内核根据信号类型对进程进行相应操作。
| 信号 | 说明 |
|---|---|
-15(默认) |
正常终止进程(SIGTERM),给进程清理资源的机会 |
-9 |
强制杀死进程(SIGKILL),立即结束,不进行清理 |
kill -9是互联网中最常用的强制杀进程方式,但应优先使用kill -15,给进程正常退出的机会。
示例
bash
# 查找 crond 进程的 PID
ps -ef | grep crond | grep -v grep
# 输出:root 7102 1 0 Mar23 ? 00:00:04 /usr/sbin/crond -n
# 正常终止进程
kill 7102
# 强制杀死进程
kill -9 7102
killall:根据进程名批量终止
bash
killall [信号] 进程名
示例
bash
# 杀死所有 crond 进程
killall crond
# 强制杀死所有 httpd 进程
killall -9 httpd
八、查看硬件资源信息
查看 CPU 信息
bash
cat /proc/cpuinfo
包含 CPU 型号、物理核心数、逻辑核心数、频率等。
查看内存信息
bash
cat /proc/meminfo
包含物理内存总量、空闲内存、缓存、交换分区等详细信息。
九、总结
top:动态监控,适合实时查看系统负载和找出高 CPU/内存的进程free:快速查看内存剩余,关注available列df:快速查看磁盘空间,关注Use%列ps:静态快照,适合结合grep精确查找某个进程的 PID/PPIDnetstat/ss:查看端口监听和网络连接状态,ss效率更高kill/killall:终止异常进程,优先使用kill -15,无效时再使用kill -9