top简单使用

进程简单使用

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
相关推荐
Felven4 小时前
stress-ng 与 fio 性能测试工具使用指南
linux·测试工具·fio·stress-ng
XiaoMaqqqq5 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
huainingning5 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘6 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项6 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
Lsetea6 小时前
OpenSSL verify报unhandled critical extension:error 34与关键扩展排查
运维·https·ssl证书·openssl·证书链
guo_wen_qiang7 小时前
docker的备份与迁移
运维·docker·容器
Ruiery8 小时前
Linux 6.6内核内存管理深度解析(一):物理内存初始化 — memblock 怎么把内存交给 buddy
linux·运维·服务器
天蓝蓝的本我8 小时前
conda日常用到的命令积累1-登录linux,安装pycharm
linux·pycharm·conda
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_max调用流程与实战(五十九)
linux·运维·服务器·gstreamer音视频·音视频进阶·gstreamer音视频进阶