bash shell命令与监测的那点事之top

  上次我们说到了ps命令,ps命令虽然在收集运行在系统上的进程信息很有用,但是也有不足之处,ps命令只能显示某个特定时间点的信息,如果你想观察频繁换进换出内存的进程的趋势,用ps的命令就不方便了。

  而top命令刚好适用于这种场景。top命令跟ps命令相似,能够显示进程的信息,但它是实时显示的。下图是top命令输出截图:

 top - :: up  days, :,   users,  load average: 0.00, 0.00, 0.00
Tasks: total, running, sleeping, stopped, zombie
Cpu(s): 1.4%us, 0.5%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 3924432k total, 3744996k used, 179436k free, 144112k buffers
Swap: 2097144k total, 1834356k used, 262788k free, 396948k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                        
11629 root      20   0 15304 1484  952 R  1.6  0.0   0:04.29 top   

  输出的第一部分显示了系统的概况:第一行显示了当前的时间、系统的运行时间、登入的用户数以及系统的平均负载。

  平均负载有三个值:最近1分钟的、最近5分钟的以及最近15分钟的平均负载。值越大说明平均负载越高,最近1分钟的负载值很高这很正常,因为有时候会有进程突然开始活动,但是如果最近15分钟的平均负载都很高,就说明系统可能有问题了。

  第二行显示了概要的进程信息——top命令的输出中的进程叫任务(task):多少进程处于运行、休眠、停止或是僵化状态。

  下一行显示了CPu信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲、还是等待)将CPU利用率分成几类输出。

  紧跟其后的两行说明了系统内存的状态。前行说的是系统的物理内存:总共多少内存,当前用了多少内存,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间的状态来说的。

  最后一部分是运行中的进程的详细列表——有些列和ps命令输出类似。

  • PID:进程的进程号。
  • USER:进程的属主名字。
  • PR:进程的优先级。
  • NI:进程的谦让度值。
  • VIRT:进程占用的虚拟内存总值。
  • RES:进程占用的物理内存总值。
  • SHR:进程和其它进程共享的内存总量。
  • S:进程的状态(D代表可中断的休眠状态,R代表在运行的状态,S代表休眠状态,T代表跟踪状态或者停止状态,Z代表僵化状态)。
  • %CPU:进程使用的CPU时间比例。
  • %MEM:进程使用的内存占可用内存的比例。
  • TIME+:自进程启动到目前为止的CPU时间总量。
  • COMMAND:进程的命令名称,也就是启动的程序名。

  默认情况下,top命令在启动时会按照%CPU值来排序,你可以在top运行时用下面的交互式命令之一来重新排序。每个交互式命令都是单字符,在top命令运行时键入可以改变top的行为。命令如下表所示:

1   切换单CPU状态模式和对称处理器模式
B 打开/关闭表中重要数字的加粗显示
I 切换Irix/Solaris模式
Z 设置表的颜色
l 显示/关闭平均负载信息行
t   显示/关闭CPU信息行
m 显示/关闭MEM和SWAP行
f 添加/移除输出中的不同信息列
o 更改信息行的显示顺序
F或O 选择一列来将进程排序
<或> 将排序的行左移或右移一列
R 切换正常排序还是倒序排序
H 显示/关闭显示线程的情况
C 切换显示进程的命令,还是完整的命令行输入
i 切换是否显示空闲进程
S 切换显示累计CPU时间还是相对CPU时间
x 打开/关闭高亮显示排序列
y 打开/关闭高亮显示运行中的任务
z 切换彩色模式还是单色模式
b 打开/关闭x和y的高亮模式
u 显示某个用户的进程
n或# 设置要显示的进程数
k 结束指定的进程(必须是进程属主或是root用户)
r 改变指定进程的优先级(必须是进程属主或是root用户)
d或s 改变更新的间隔(默认值是3s)
W 把当前设置写到一个配置文件中
q 退出top命令

结束进程

  系统管理员很重要的一个技能就是知道何时以及如何结束一个进程。有时进程挂起了,只要有办法对付一下让进程重新运行或结束就行了。但有时,进程会耗尽CPU而且不释放资源,此时就要kill掉进程了。

  Linux沿用了Unix进行进程间通信的方法,在LInux上,进程间通过信号通信,下表列出了信号代表的含义以及名称:

信号 名称 描述
1 HUP 挂起
2 INT 中断
3 QUIT 结束运行
9 KILL 无条件终止
11 SEGV 段错误
15 TERM 尽可能终止
17 STOP 无条件停止运行,但不终止
18 TSTP 停止或暂停,但继续在后台运行
19 CONT 在STOP或TSTP之后恢复运行

kill命令

  kill命令可以通过PID给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号,遗憾的是只能用进程号而不能用命令名,所以有时候并不好用。

  -s参数支持指定其他信号(用信号名或者信号值)。kill命令不会有任何输出。下面举个栗子:

 [root@controller ~]# kill -s HUP 

  它与下面的栗子等价:

 kill -s  

 killall命令

  killall命令非常强大,它支持通过进程名而不是进程号来结束进程。killall命令也支持通配符,这在系统因负载过大而变得很慢时很有用:  

killall http*

 上面的栗子命令结束了所有以http开头的进程,比如Apache Web服务器的httpd服务。

bash shell命令与监测的那点事(二)的更多相关文章

  1. bash shell命令与监测的那点事(三)

    bash shell命令与监测的那点事之df与du 前两篇介绍了bash shell的进程监控指令,但是有时候你需要知道在某个设备上还有多少磁盘空间.首先介绍df命令: df命令 df命令就是用来轻松 ...

  2. bash shell命令与监测的那点事(一)

    bash shell命令与监测的那点事之ps 学习LInux,不得不谈谈bash shell命令,介绍Linux命令行与Shell脚本的书有很多很多,bash shell命令也有很多,此次我们只谈谈有 ...

  3. bash shell命令(2)

    在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...

  4. 第四章:更多的bash shell命令

    第四章:更多的bash shell命令 监测程序 ps (其他ps内容见#1 ) Unix风格的ps命令参数 参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程( ...

  5. ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数

    一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...

  6. 《Linux命令行与shell脚本编程大全》- 读书笔记2 - 更多的bash shell命令

    更多的bash shell命令 想检测进程,需要熟悉ps命令的用法.ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息.默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户 ...

  7. 基本bash shell命令

    以下列举一些常用的bash shell命令,在使用时方便查找. 访问Linux系统上的手册:man 命令.例:man ps      手册是由分页程序来显示的,可以通过点击 空格,回车,向上和向下箭头 ...

  8. 一、基本的bash shell命令(基于Ubuntu实现)

    一.基本的bash shell命令(基于Ubuntu实现) /etc/passwd文件包含了所有系统用户账户列表以及每个用户的基本配置信息. man命令 在想要查找的工具的名称前输入man命令,就可以 ...

  9. 基本的bash shell命令

    目录 基本的bash shell命令 启动shell shell提示符 基本的bash shell命令 启动shell GNU bash shell 能提供对Linux系统的交互式访问.它是作为普通程 ...

随机推荐

  1. [转]latex符号

    常用数学符号的 LaTeX 表示方法 (以下内容主要摘自“一份不太简短的 LATEX2e 介绍”) 1.指数和下标可以用^和_后加相应字符来实现.比如: 2.平方根(square root)的输入命令 ...

  2. 【MFC】将当前的日期转化为1970年开始的秒计数

    CTime time1 = CTime::GetCurrentTime(); int nTSeconds = time1.GetTime(); CTime time2(,,,,,); nTSecond ...

  3. 美国L1签证申请的常见问题解析

    美国L1是一种允许在美国和中国都有机构的跨国公司从国外的母公司派遣一定层次的经理或专业技术人员去美国分支机构工作的非移民签证.L1签证分两类:美国L1A是跨国公司经理及主管人员签证,L1B是专门技术人 ...

  4. Shell脚本 - 用来检查memcache并自动重启生效脚本

    #!/bin/sh#check memcache process and restart if downmm_bin="/usr/local/bin/memcached"mm_lo ...

  5. git记录

    2017-3-30:git常用命令:1.$ git init:初始化git仓库2.$ git add *.c:跟踪文件3.$ git commit -m 'initial project versio ...

  6. 交互ajax

    原生的js封装ajax1.创建ajax对象var oAjax=new XMLHttpRequest();//不兼容IE6var oAjax=new ActiveXobject('Microsoft.X ...

  7. 打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)

    前文描述: 随着.net  推出 MVC框架以来,webform 与 mvc 的争论一直没有停止过,一直以来 mvc 的 拥护者远远高于 webform,但是webfrom的有些优势又是mvc而无法替 ...

  8. 【BZOJ4300】绝世好题(位运算水题)

    点此看题面 大致题意: 给你一个序列\(a\),让你求出最长的一个子序列\(b\)满足\(b_i\&b_{i-1}!=0\). 位运算+\(DP\) 考虑设\(f_i\)表示以第\(i\)个数 ...

  9. vuejs计算属性和侦听器

    <div id='root'> 姓:<input v-model='firstName'/> 名:<input v-model='secondName'/> < ...

  10. 为项目创建podfile

    由于写项目 不常用到,容易忘记,记录一下 第一步:新建一个项目: 第二步:打开终端,输入 cd 第三步:把项目拖入终端,(获取项目路径) 第四步:回车,输入 pod init (生成podfile 文 ...