top命令
top命令参数详解
功能说明:显示,管理执行中的程序
语法:top [bciasS] [d <间隔秒数>][n <执行次数>]
补充说明:执行top指令可显示当前正在系统中执行的程序,并通过它所提供的互动式界面,用热键加以管理。
参数:
b 使用批处理模式
c 列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等信息
d<间隔秒数> 设置top监控程序执行状况的间隔时间,单位以秒计算
i 执行top指令时,忽略闲置或已成为Z僵尸进程的程序
n<执行次数> 设置监控信息的更新次数
q 持续监控程序执行的状况
s 使用保密模式,消除互动模式下的潜在危机
S 使用累计模式,其效果类似ps指令的-S参数
第一行:任务队列信息
分别是:
top任务信息;up运行时间;user当前登录用户数;load average平均负载

平均负载(uptime):load average :0.00 ,0.01,0.05
分别表示在过去的1分钟,5分钟,15分钟系统是负载情况
工作机制为:
1. load average数据是每隔5秒钟检查一次活跃的进程数,然后按照特定算法计算出数值。如果这个数除以系统cpu核心数的结果高于5就表明系统在超负荷运转了
2. 平均负载中的负载表示的不是cpu的使用率状况,而是在一段时间内cpu正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列的长度的统计信息
3.系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数,而该进程需要满足以下三个条件就会被纳入计算范围:该进程没有在等待io操作的结果,该进程没有进入等待状态,该进程没有停止
4.一般来说只要每个cpu的当前活动进程数不大于3那么系统的性能就算良好,如果每个cpu的任务数大于5,就意味着该机器性能有严重问题。
5. 例如:load average: 8.13,5.19,4.94 ,假设当前系统是2核心,则每个核心需要处理的进程数为 8.13/2=4.065 ,处于单个核心的3-5之间,则表示当前负载状况还能接受
在/proc虚拟文件系统下,存放有平均负载的记录文件,w uptime top 命令中的load average 数据就取自该文件。这个文件中个数据表示的意思为
前3个数是1,5,15分钟的负载数;后面一个分数的分母是当前系统的总进程数,分子为正在运行的进程数;最后一个数是最近运行的进程ID号
第二行:tasks 任务(进程信息)
分别表示:
tasks(任务): total总进程数, running当前运行进程数,sleeping休眠状态进程数,stopped停止进程数,zombie僵尸进程数
Z 僵尸 。 S 休眠 。 D 不可中断的休眠 。 R 运行 。 T 停止时跟踪
僵尸进程:是当前子进程比父进程先结束,而父进程又没有回收子进程和释放子进程所占用的资源,此时的子进程就成为了一个僵尸进程。如果父进程先结束,则子进程就会被init接管,子进程结束后init会回收其占用的资源;
怎么产生僵尸进程:
1.当子进程已经结束,而父进程还在执行,由于没有结束并且调用函数去结束子进程,这时的子进程就会成为一个僵尸进程
2.当子进程退出时,父进程没有调用wait函数或者waitpid()函数等待子进程结束,父进程又没有显示忽略子进程结束发来的SIGCHLD信号,那么它将一直保持在僵尸状态,如果这时父进程结束了init进程会接收这个进程来收尸,但如果父进程是一个循环,不会结束,那么子进程就会一直保持僵死状态 Z
怎么清理僵尸进程:
1. 把父进程杀掉,kill -9 ,父进程死后,僵尸进程会成为“孤儿进程”,过继给1号进程init,init始终会负责清理僵尸进程
2. 关机或重启后所有僵尸进程都会消失
3. 将僵尸子进程挂起,挂起后相当于什么都不做 kill -HUP 进程pid
4. 改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸。而基于这样的原理,就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,尽管对默认处理是忽略,如果想响应这个消息,可以设置一个处理函数
第三行:cpu状态信息, 按1会显示所有cpu(默认显示1个)
依次表示:
us 用户空间占用cpu百分比
sy 内核空间占用cpu的百分比
ni 改变过优先级的进程占用cou的百分比
id 空闲cpu百分比
wa io等待占用CPU百分比
hi 硬中断占用CPU的百分比
si 软中断占用CPU的百分比

第四行:内存状态
依次表示:
total 总内存空间
free 空闲内存
used 指现在系统内核控制的内存数
buff/cache 缓存区占用内存大小

第五行:swap交换分区信息

第六行:空行
第七行:各进程的状态监控
依次表示:
PID 进程id
USER 进程所有者
PR 进程优先级
NI nice值,负值表示优先级高,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb VIRT=SWAP+RES
RES 进程使用的,未被换出的物理内存大小,单位kb RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态 D=不可中断睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 进程名称(命令名/命令行)

使用技巧
1. top -c 运行,显示命令详情,进入后键盘按b,打开/关闭加亮效果显示当前运行的进程

2.进程字段排序
shift+m (MEM排序)

shift+p (CPU排序)
