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系统的交互式访问.它是作为普通程 ...
随机推荐
- [转]latex输入数学符号速查
基本运算 乘法 x×y x \times y 乘方 23x 2^{3x} 平方根 x+y−−−−−√ \sqrt {x + y} 除法 x÷y x \div y 分数 xy \frac{x}{y} 异 ...
- 关于win10上安装.Net Framework3.5的解决办法
1.首先下载. NET Framework 3.5的安装包,格式为cba格式; 2.将下载下来的NetFx3.cab 放进 C:\Windows 目录下; 3.打开控制面板->程序->启动 ...
- uvm_tlm_if_base——TLM1事务级建模方法(三)
文件: src/tlm1/uvm_tlm_ifs.svh 类: uvm_tlm_if_base 这个类没有派生自任何类,在类的中,定义了三类接口:第一类是阻塞性质的普通方法(task),put, ge ...
- window.returnValue使用方法
returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模式窗口(模式窗口知道吧,就是打开后 ...
- redis在Windows下以后台服务一键搭建集群(多机器)
redis在Windows下以后台服务一键搭建集群(多机器) 一.概述 此教程介绍如何在windows系统中多台机器之间布置redis集群,同时要以后台服务的模式运行.布置以脚本的形式,一键完成.多台 ...
- Java反序列化漏洞详解
Java反序列化漏洞从爆出到现在快2个月了,已有白帽子实现了jenkins,weblogic,jboss等的代码执行利用工具.本文对于Java反序列化的漏洞简述后,并对于Java反序列化的Poc进 ...
- vue的MVVM模式和生命周期总结(一)
一.MVVM模式 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel ...
- gitlab用户添加ssh免密钥认证后clone还是要求输入密码
今天在centos 7公网服务器上安装gitlab在配置ssh免密钥时遇到一个奇怪的事,正确添加了本机的公钥到gitlab账户上,进行clone时死活都要你输入密码gitlab使用yum安装的,之前在 ...
- JavaScript getMonth() 方法
应该特别注意的是Js中getMonth()这个方法的返回值: 定义和用法: getMonth() 方法可返回表示月份的数字. 返回值: dateObject 的月份字段,使用本地时间.返回值是 0(一 ...
- Project Euler 第一题效率分析
Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...