一、实时监测进程

[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进程信号

如何干掉一个进程

kill ID(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命令要特别小心,因为很容易就会误用通配符而结束了重要的系统进程。这可能会破坏文件系统。

最新文章

  1. Linux系统中的Device Mapper学习
  2. 利用yeoman快速搭建React+webpack+es6脚手架
  3. poi 导出 excel
  4. 牛客网 --java问答题
  5. git 使用事项
  6. iOS添加自定义字体方法
  7. iOS 数组越界 Crash加工经验
  8. [转] socket异步编程--libevent的使用
  9. UESTC_导弹拦截 2015 UESTC Training for Dynamic Programming<Problem N>
  10. android studio 工程设置项
  11. php 执行效率
  12. 01-Redhat/Centos7网卡命名介绍及修改方式
  13. GCC的__attribute__ ((constructor))和__attribute__ ((destructor))
  14. Mac下显示网页全屏快捷键
  15. MyBatis-进阶2
  16. Unity3D修改LWRP,HDRP的几项小问题及解决
  17. GitLab 修改主机名,更换 IP 配置,配置 SMTP
  18. Linux命令(八)过滤文本 grep
  19. day25 python学习 继承,钻石继承
  20. mac自动生成路径问题

热门文章

  1. 设置电脑(windows)自动关机的方法
  2. eclipse CreateProcess error=87
  3. SPRING CLOUD服务网关之ZUUL
  4. HttpRunner 接口自动化测试进阶
  5. 「kuangbin带你飞」专题十八 后缀数组
  6. hdu3001(状态压缩DP)
  7. 网络协议图形化分析工具EtherApe
  8. PHP 让__get方法重新执行
  9. VUE的进阶 标签属性数据绑定和拼接
  10. 微博(MicroBlog)