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系统的交互式访问.它是作为普通程 ...
随机推荐
- 使用JS实现图片轮播(前后首尾相接)
最近各种跑面试,终于还是被问到这个,一脑子浆糊,当时没想出来首尾相接怎么搞,回来之后研究了一波,终于搞出来了,不多说,直接看代码 代码参考了一位已经写好了图片轮播功能的(在此表示感谢),但是没有首尾相 ...
- 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的 ...
- Nginx+Keepalived双主轮询负载均衡
双主模式使用两个VIP,前段有2台服务器,互为主从,两台服务器同时工作,不存在资源浪费情况.同时在前端的DNS服务器对网站做多条A记录,实现了Nginx的负载均衡,当一台服务器故障时候,资源会转移到另 ...
- GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除)
GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除) 之前有一个范例,相同的结果可以用两种作法来实践 [GridView] 资料系结表达 ...
- 平时对ES6的一些总结
1.Genertor中yield和Interator中的next方法 Genertor的yield是把这个函数变成分段的:Interator中的next也是一个一个执行的: function* f() ...
- hiho一下 第三十七周 二分查找之k小数
题目链接:http://hihocoder.com/contest/hiho37/problem/1 , 简单二分. 算法: 题目即为求一个无序数组数组中第k小的数,由于数据量太大,排序是会超时的. ...
- WPF 修改数据后更新UI
ObservableCollection<T> 只有项添加或删除才会更新UI 要想属性发生变动后立刻更新到UI,必须继承 INotifyPropertyChanged 接口,示例如下 pu ...
- 一些常用的集合工具的代码块(缓慢更新XD,更新了多属性过滤:) )
更新记录 虽然经常放鸽子,但是还是要记录一下更新 2017.8.30 更新了listToMap的方法,现在可以指定多个属性进行分组了,例如你要指定一个学生集合,按照名字和年龄相同的放在一组,现在只要调 ...
- Activiti学习记录(三)
1.流程变量 1.1 流程图 流程变量在整个工作流中扮演很重要的作用.例如:请假流程中有请假天数.请假原因等一些参数都为流程变量的范围.流程变量的作用域范围是只对应一个流程实例.也就是说各个流程实例的 ...
- C# FileInfo 类
FileInfo类不像File类,它没有静态方法,仅可用于实例化的对像.FileInfo对像表示在磁盘或网络位置的文件,注意它不是流,为了读写文件,必须创建Stream对像. fileInfo类提供了 ...