进程简单使用
-
-
- top命令介绍
- 常用交互命令(在`top`运行时按键)
- ps命令介绍
-
- [ps -aux](#ps -aux)
- [ps -ef](#ps -ef)
- 常用命令
- 创建一个僵尸进程
-
top命令介绍
实时系统性能监控工具
top - 14:30:00 up 30 days, 3:15, 2 users, load average: 0.05, 0.10, 0.15
Tasks: 250 total, 1 running, 249 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 1.2 sy, 0.0 ni, 96.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15982.2 total, 1024.5 free, 8192.1 used, 6765.6 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 7500.1 avail Mem
| 第一行 | 系统时间 运行时间 登录用户数 系统负载 | 负载平均:最重要的指标之一,显示过去1分钟、5分钟、15分钟的平均负载。 |
|---|---|---|
| 第二行 | 进程总数 运行中 休眠中 已停止 僵尸进程 | 僵尸进程:已完成但未被父进程清理的进程 |
| 第三行 | us:用户空间进程占用CPU百分比。 sy:内核空间进程占用CPU百分比。 id:CPU空闲百分比。越高越好。 wa:等待I/O(如磁盘、网络)的CPU时间百分比。过高(如>20%)通常表示I/O瓶颈。 ni:被调整过优先级的进程占用百分比。 hi/si:处理硬件/软件中断的CPU时间。 st:被虚拟机管理程序"偷走"的时间(对于虚拟机)。 | |
| 第四、五行 | 物理内存和交换空间使用情况 | used(已用),free(空闲),buff/cache(缓存)。Linux会利用空闲内存做缓存,所以free很少是正常的,avail Mem(可用内存)更能反映真实情况 |
常用交互命令(在top运行时按键)
| 排序 | P(默认):按 CPU使用率 排序。 M:按 内存使用率(%MEM) 排序 T:按 CPU时间(TIME+) 排序 N:按 PID 排序 |
|
|---|---|---|
| 进程管理 | k:杀死进程 。输入PID和信号(默认15,强制为9) r:调整进程优先级。输入PID和新的NI值。 |
|
| 显示控制 | 1:切换显示所有CPU核心的单独使用情况 。 u:只显示指定用户的进程 。 c:切换显示完整的命令行 。非常有用,可以看到进程的详细启动参数。 f:进入字段管理界面 ,可以自定义显示哪些列。 Shift + > 或 <:左右滚动字段。 |
|
| 刷新与退出 | Space:立即刷新。 s:改变刷新间隔(默认3秒)。输入秒数,如2或0.5。 q:退出 top。 |
ps命令介绍
ps -aux
a:显示所有用户的进程(包括其他用户)。u:以用户为主的格式显示,即显示进程的详细信息,如用户名、CPU、内存等。x:显示没有控制终端的进程(通常是一些后台进程、守护进程)。
查看进程信息的核心工具
查看所有进程(最常用)
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 169284 12804 ? Ss 08:30 0:01 /sbin/init
alice 1234 1.2 0.5 1023456 51234 pts/0 Sl+ 09:15 2:30 /usr/bin/python3
| USER | 进程所有者 |
|---|---|
| PID | 进程ID |
| %CPU | CPU使用率百分比 |
| %MEM | 内存使用率百分比 |
| VSZ | 虚拟内存大小(KB) |
| RSS | 常驻内存大小(实际物理内存,KB) |
| TTY | ?:没有控制终端(通常是守护进程) pts/0、tty1:有控制终端 |
| STAT | 进程状态 |
| START | 进程启动时间 |
| TIME | 进程占用CPU的总时间 |
| COMMAND | 启动进程的命令 |
进程状态(STAT)详解
| R | 运行中(Running)或可运行(在运行队列中) |
|---|---|
| S | 休眠中(Sleeping),可中断的休眠 |
| D | 不可中断的休眠(Uninterruptible sleep),通常是在等待I/O |
| T | 已停止(Stopped),通常是由作业控制信号停止 |
| Z | 僵尸进程(Zombie),已终止但未被父进程回收 |
| X | 已死亡(Dead,很少见) |
ps -ef
-
-e:显示所有进程(等同于-A)。 -
-f:全格式,显示更多详细信息。ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:30 ? 00:00:01 /sbin/init
alice 1234 1001 1 09:15 pts/0 00:02:30 /usr/bin/python3
| PPID | 父进程ID |
|---|---|
| C | CPU利用率 |
| STIME | 进程启动日期或时间 |
| CMD | 完整的命令行(包括参数) |
常用命令
ps aux --sort=-%cpu # 按CPU使用率降序
ps aux --sort=-%mem # 按内存使用率降序
ps aux --sort=-rss # 按实际内存降序
ps aux --sort=+pid # 按PID升序
# 只显示需要的列
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
# 自定义列标题
ps -o pid=进程ID,user=用户名,cmd=命令
# 查看nginx的所有进程
ps -ef | grep nginx
# 查找消耗CPU最高的进程
ps aux --sort=-%cpu | head -10
创建一个僵尸进程
(sleep 1 & exec /bin/sleep 10000) &
[1] 6931
top 查看有没有 zombie
Tasks: 102 total, 1 running, 100 sleeping, 0 stopped, 1 zombie
方法一:
用用户定义格式展示每个进程
进程 父进程 状态 命令
ps -eo pid,ppid,stat,cmd | grep '^.*Z'
pid ppid stat cmd
6932 6931 Z [sleep] <defunct>
杀掉父进程
kill -9 6931
方法二:
ps aux | grep -E 'Z|defunct'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 6932 0.0 0.0 0 0 pts/0 Z 19:55 0:00 [sleep] <defunct>
查看父进程
ps -o ppid= -p 6932
6931
杀掉父进程
Kill -9 6931