bash shell命令与监测的那点事(二)
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命令与监测的那点事(二)的更多相关文章
- bash shell命令与监测的那点事(三)
bash shell命令与监测的那点事之df与du 前两篇介绍了bash shell的进程监控指令,但是有时候你需要知道在某个设备上还有多少磁盘空间.首先介绍df命令: df命令 df命令就是用来轻松 ...
- bash shell命令与监测的那点事(一)
bash shell命令与监测的那点事之ps 学习LInux,不得不谈谈bash shell命令,介绍Linux命令行与Shell脚本的书有很多很多,bash shell命令也有很多,此次我们只谈谈有 ...
- bash shell命令(2)
在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...
- 第四章:更多的bash shell命令
第四章:更多的bash shell命令 监测程序 ps (其他ps内容见#1 ) Unix风格的ps命令参数 参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程( ...
- ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数
一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记2 - 更多的bash shell命令
更多的bash shell命令 想检测进程,需要熟悉ps命令的用法.ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息.默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户 ...
- 基本bash shell命令
以下列举一些常用的bash shell命令,在使用时方便查找. 访问Linux系统上的手册:man 命令.例:man ps 手册是由分页程序来显示的,可以通过点击 空格,回车,向上和向下箭头 ...
- 一、基本的bash shell命令(基于Ubuntu实现)
一.基本的bash shell命令(基于Ubuntu实现) /etc/passwd文件包含了所有系统用户账户列表以及每个用户的基本配置信息. man命令 在想要查找的工具的名称前输入man命令,就可以 ...
- 基本的bash shell命令
目录 基本的bash shell命令 启动shell shell提示符 基本的bash shell命令 启动shell GNU bash shell 能提供对Linux系统的交互式访问.它是作为普通程 ...
随机推荐
- Jquery里面的$(this)和this, 有什么区别
当你用的是jquery时,就用$(this),如果是JS,就用this $(this).html( $(this).html() + " BAM! "); 这个里的html()是J ...
- SqlServer查询文件组被占用情况
在SqlServer中,删除一个文件组 alter database [xxxxx] remove filegroup FGMonthTurnIntroduceByMonth13 有时候会遇到如下报错 ...
- 签证-L1/L2
http://blog.sina.com.cn/s/blog_7664b7f70102uweb.html 14年4月我接到公司通知,要从MICROSTRATEGY中国研发中心内部transfer到美国 ...
- jQuery-动画animate() 方法操作 CSS 属性
语法: $(selector).animate({params},speed,callback); 多个params 之间用逗号(,)隔开. 必须使用 Camel 标记法书写所有的属性名,比如,必须使 ...
- php之header的不同用法
1.header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端. header(string,replace,http_response_code) /*string ...
- js 对象字面量
对象字面量的输出方式以及定义好处 1.对象字面量的输出方式有两种:传统的'.' 例如:box.name 以及数组方式,只不过用数组方式输出时,方括号里面要用引号括起来 例如:box['name'] v ...
- 【转载】2018 hosts 持续更新访问 gu歌【更新于:2018-05-03】
修改HOSTS实现免费,简单访问谷歌的目的 也是比较稳定的方法.修改hosts.修改hosts的方法,原理在于直接存储谷歌网站的IP地址.这样就不用DNS来解析网址了.也就是说,当我们输入谷歌 ...
- js 数组方法大集合,各方法是否改变原有的数组详解
不会改变原来数组的有: concat()---连接两个或更多的数组,并返回结果. every()---检测数组元素的每个元素是否都符合条件. some()---检测数组元素中是否有元素符合指定条件. ...
- AFN post的数据编码格式问题
想到写任何关于AFN的东西其实我是拒绝的,因为自己这也是第一次用,毕竟AFN现在是最为流行的网络框架了,害怕自己理解的有误,所以不敢造次! 先在这里大致讲解一下过程吧,后期发现了再更正(主要是想让看官 ...
- 第四篇、Swift_Podfile文件配置格式
# Uncomment this line to define a global platform for your project platform :ios, '9.0' # Comment th ...