一、实时监测进程
[root@instance-3lm099to ~]# top
top - :: up days, min, users, load average: 0.01, 0.05, 0.05
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
KiB Mem : total, free, used, buff/cache
KiB Swap: total, free, used. avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root S 0.3 6.8 :45.12 java
mongod S 0.3 3.4 :06.16 mongod
root S 0.3 9.7 :24.02 java
root S 0.3 5.4 :29.78 java
root S 0.0 0.3 :04.40 systemd
root S 0.0 0.0 :00.00 kthreadd
root S 0.0 0.0 :08.48 ksoftirqd/
root - S 0.0 0.0 :00.00 kworker/:+
root S 0.0 0.0 :04.04 kworker/u2+
root rt S 0.0 0.0 :00.00 migration/
root S 0.0 0.0 :00.00 rcu_bh
root S 0.0 0.0 :27.72 rcu_sched
root - S 0.0 0.0 :00.00 lru-add-dr+
root rt S 0.0 0.0 :01.90 watchdog/
root S 0.0 0.0 :00.00 kdevtmpfs
root - S 0.0 0.0 :00.00 netns
root S 0.0 0.0 :00.14 khungtaskd
输出的第一部分显示的是系统的概况:
第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。
平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。
由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近15分钟内的平均负载都很高,就说明系统可能有问题。
第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。
第三行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。
第四第五两行说明了系统内存的状态。第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间(如果分配了的话)的状态而言的。
最后一部分显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似。
PID:进程的ID。
USER:进程属主的名字。
PR:进程的优先级。
NI:进程的谦让度值。
VIRT:进程占用的虚拟内存总量。
RES:进程占用的物理内存总量。
SHR:进程和其他进程共享的内存总量。
S:进程的状态(D代表可中断的休眠状态,R代表在运行状态,S代表休眠状态,T代表
跟踪状态或停止状态,Z代表僵化状态)。
%CPU:进程使用的CPU时间比例。
%MEM:进程使用的内存占可用内存的比例。
TIME+:自进程启动到目前为止的CPU时间总量。
COMMAND:进程所对应的命令行名称,也就是启动的程序名。
默认情况下,top命令在启动时会按照%CPU值对进程排序。可以在top运行时使用多种交互命令重新排序。每个交互式命令都是单字符,在top命令运行时键入可改变top的行为。键入f允许你选择对输出进行排序的字段,键入d允许你修改轮询间隔。键入q可以退出top。用户在top命令的输出上有很大的控制权。用这个工具就能经常找出占用系统大部分资源的罪魁祸首。当然了,一旦找到,下一步就是结束这些进程。这也正是接下来的话题。
二、结束进程
Linux进程信号
如何干掉一个进程
killID(PID)
$ kill
-bash: kill: () - Operation not permitted
上面的命令可能不能适应所有的进程。
强制干掉一个进程
# kill -s HUP
#
-s参数支持指定其他信号(用信号名或信号值),kill命令不会有任何输出,要检查kill命令是否有效,可再运行ps或top命令,看看问题进程是否已停止。
killall命令
killall命令非常强大,它支持通过进程名而不是PID来结束进程。killall命令也支持通配符,这在系统因负载过大而变得很慢时很有用。
# killall http*
#
上例中的命令结束了所有以http开头的进程,比如Apache Web服务器的httpd服务。
注意:以root用户身份登录系统时,使用killall命令要特别小心,因为很容易就会误用通配符而结束了重要的系统进程。这可能会破坏文件系统。
Linux系统下实时监控网口速率的shell脚本
修改后的脚本文件 #!/bin/bash #Modified by lifei4@ echo ===DTmobile NetSpeedMonitor=== sleep 1 ...
操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?
1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...
Linux系统下如何优雅地关闭Java进程?
资料出处:/a/329564560_700886 /nuccch/p/10903162.html 前言 Linux ...
【转载】Linux系统与性能监控