Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高
一、top命令的第一行“top - 19:56:47 up 39 min, 3 users, load average: 0.00, 0.00, 0.00”显示的内容依次为“系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值【这三个一般会小于1,如果持续高于5,请仔细查看那个程序影响系统的运行】”
二、top命令的第二行“Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie”显示的内容依次“所有启动的进程数”、“正在运行的进程数”、“挂起的进程数”、“停止的进程数”、“僵尸进程数”。在 linux 系统中,一般把进程和线程统称为任务 ;第二行信息是对当前系统中所有任务的统计
三、top命令的第三行“Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st”显示的内容依次为“用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”;
us:进程在用户地址空间中消耗 CPU 时间的百分比。像 shell程序、各种语言的编译器、数据库应用、web 服务器和各种桌面应用都算是运行在用户地址空间的进程。这些程序如果不是处于 idle 状态,那么绝大多数的 CPU 时间都是运行在用户态
ni:如果系统中没有进程被调整过 nice 值,那么 ni 就显示为 0;
sy:对于操作系统的设计来说,消耗在内核态的时间应该是越少越好。在实践中有一类典型的情况会使 sy 变大,那就是大量的 IO 操作,因此在调查 IO 相关的问题时需要着重关注它
id:CPU 处于 idle 状态的百分比。一般情况下, us + ni + id 应该接近 100%
wa:CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的。有很多这样的操作,比如:CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 wa 来判断系统的性能瓶颈是不是过多的 IO 操作造成的
hi&si:这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi 表示处理硬中断消耗的时间,si 表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)
st:只有 Linux 在作为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)
top 命令默认以 K 为单位显示内存大小
四、top命令第四行“Mem: k total, k used, 28648k free, 41944k buffers”显示内容依次为“物理内存总量”、“已使用的物理内存”、“空闲物理内存”、“内核缓存内存量”

五、top命令第5行“Swap: k total, 0k used, k free, k cached”显示内容依次为“交换区总量”、“已使用交互区总量”、“空闲交换区总量”、“缓冲的交换区总量”。

六、top命令第6行“PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ”显示内容依次为“进程ID”、“进程所有者”、“优先级”、“nice值,负值表示高优先级,正值表示低优先级”、“进程使用的虚拟内存总量”、“进程使用的、未被换出的物理内存大小”、“共享内存大小”、“进程状态”、“上次更新到现在的CPU时间占用百分比”、“进程使用的物理内存百分比”、“进程使用CPU总时间”、“命令名、命令行”
top查看线程/进程
1、查看某个进程的线程
ps -T -p <pid>
或
top -H -p <pid>
通过名字
top -H -p $(pidof name)
top -H -p $(pgrep -f name)
如果有多个同名进程,用:eval top -p $(echo $(pidof name)|tr ' ' ',')
eval top -H -p $(echo $(pidof name)|tr ' ' ',')
只查某几个进程的信息
top -p 21538,31117,31116,31115,31114
2、查看所有的线程
top -H
top翻页:Shift+< 上翻 Shift+> 下翻
根据进程名字进行查询:
# pstree -p `ps -e | grep server | awk '{print $1}'`
# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l
3.查找线程的父进程
借鉴:【调试】linux top查看线程/进程_linux查看线程_bandaoyu的博客-CSDN博客
4.查看多核CPU命令
5.监控java线程数

ps -eLf | grep java | wc -l
6.监控网络客户连接数
netstat -n | grep tcp | grep 侦听端口 | wc -l
上面两个命令,可改动grep的参数,来达到更细致的监控要求。
在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):
ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID
大家都熟悉Linux下可以通过top命令来查看所有进程的内存,CPU等信息。除此之外,还有其他一些命令,可以得到更详细的信息,例如进程相关
cat /proc/your_PID/status
通过top或ps -ef | grep '进程名' 得到进程的PID。该命令可以提供进程状态、文件句柄数、内存使用情况等信息。
内存相关
vmstat -s -S M
该可以查看包含内存每个项目的报告,通过-S M或-S k可以指定查看的单位,默认为kb。结合watch命令就可以看到动态变化的报告了。
也可用 cat /proc/meminfo
要看cpu的配置信息可用
cat /proc/cpuinfo
它能显示诸如CPU核心数,时钟频率、CPU型号等信息。
要查看cpu波动情况的,尤其是多核机器上,可使用
mpstat -P ALL 10
该命令可间隔10秒钟采样一次CPU的使用情况,每个核的情况都会显示出来,例如,每个核的idle情况等。
只需查看均值的,可用
iostat -c
IO相关
iostat -P ALL
该命令可查看所有设备使用率、读写字节数等信息
top命令的交互式操作
| h或? | 显示帮助信息,给出交互式命令的一些说明 |
| k | 终止一个进程,系统将提示用户输入一个需要终止进程的PID |
| i | 忽略闲置进程和僵死进程,这是一个开关式命令 |
| s | 改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是秒。如果输入小数,就换算成毫秒;如果输入0,系统输出将不断刷新,默认刷新时间是3秒;需要注意的是,如果设置太短的时间,可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大 |
| o或者O | 改变top输出信息中显示项的顺序。按小写的a-z键可以将相应的列向右移动,而按大写的A-Z键可以将相应的列向左移动。最后按enter确定 |
| f或者F | 从当前显示列表中添加或者删除项, 按f键之后会显示列的列表,按a-z键即可显示或隐藏对应的列。最后按enter确定 |
| m | 切换显示内存信息 |
| t | 切换显示进程和cpu状态信息 |
| r | 重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID以及需要设置的进程 优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认 值是10 |
| I | 切换显示平均负载和启动时间信息 |
| q | 退出top显示 |
| c | 切换显示完整命令行和命令名称信息 |
| M | 根据驻留内存大小进行排序输出 |
| N | 以PID来排序 |
| P | 根据CPU使用百分比大小进行排序输出 |
| T | 根据时间/累计时间进行排序输出 |
| S | 切换到累计模式 |
| W | 将当前top设置写入~/.toprc文件中 |

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55973.html