第十一单元 系统监控

系统监视和进程控制工具—top和free
top命令的功能

TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.

top - 12:38:33 up 50 days, 23:15,  7 users,  load average: 60.58, 61.14, 61.22

Tasks: 203 total,  60 running, 139 sleeping,   4 stopped,   0 zombie

Cpu(s)  : 27.0%us, 73.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   1939780k total,  1375280k used,   564500k free,   109680k buffers

Swap:  4401800k total,   497456k used,  3904344k free,   848712k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

4338 oracle    25   0  627m 209m 207m R    0 11.0 297:14.76 oracle

4267 oracle    25   0  626m 144m 143m R    6  7.6  89:16.62 oracle

3458 oracle    25   0  672m 133m 124m R    0  7.1   1283:08 oracle

3478 oracle    25   0  672m 124m 115m R    0  6.6   1272:30 oracle

3395 oracle    25   0  672m 122m 113m R    0  6.5   1270:03 oracle

3480 oracle    25   0  672m 122m 109m R    8  6.4   1274:13 oracle

3399 oracle    25   0  672m 121m 110m R    0  6.4   1279:37 oracle

4261 oracle    25   0  634m 100m  99m R    0  5.3  86:13.90 oracle

25737 oracle    25   0  632m  81m  74m R    0  4.3 272:35.42 oracle

7072 oracle    25   0  626m  72m  71m R    0  3.8   6:35.68 oracle

16073 oracle    25   0  630m  68m  63m R    8  3.6 175:20.36 oracle

16140 oracle    25   0  630m  66m  60m R    0  3.5 175:13.42 oracle

16122 oracle    25   0  630m  66m  60m R    0  3.5 176:47.73 oracle

786 oracle    25   0  627m  63m  63m R    0  3.4   1:54.93 oracle

4271 oracle    25   0  627m  59m  58m R    8  3.1  86:09.64 oracle

4273 oracle    25   0  627m  57m  56m R    8  3.0  84:38.20 oracle

22670 oracle    25   0  626m  50m  49m R    0  2.7  84:55.82 oracle

一.  TOP前五行统计信息

统计信息区前五行是系统整体的统计信息。

1. 第一行是任务队列信息

同 uptime  命令的执行结果:

[root@localhost ~]# uptime

13:22:30 up 8 min,  4 users,  load average: 0.14, 0.38, 0.25

其内容如下:

12:38:33

当前时间

up 50days

系统运行时间,格式为时:分

1 user

当前登录用户数

load average: 0.06, 0.60, 0.48

系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

2. 第二、三行为进程和CPU的信息

当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total

进程总数

1 running

正在运行的进程数

28 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

僵尸进程数

Cpu(s): 0.3% us

用户空间占用CPU百分比

1.0% sy

内核空间占用CPU百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id

空闲CPU百分比

0.0% wa

等待输入输出的CPU时间百分比

0.0% hi

0.0% si

3. 第四五行为内存信息。

内容如下:

Mem: 191272k total

物理内存总量

173656k used

使用的物理内存总量

17616k free

空闲内存总量

22052k buffers

用作内核缓存的内存量

Swap: 192772k total

交换区总量

0k used

使用的交换区总量

192772k free

空闲交换区总量

123988k cached

缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

二.  进程信息

列名

含义

PID

进程id

PPID

父进程id

RUSER

Real user name

UID

进程所有者的用户id

USER

进程所有者的用户名

GROUP

进程所有者的组名

TTY

启动进程的终端名。不是从终端启动的进程则显示为 ?

PR

优先级

NI

nice值。负值表示高优先级,正值表示低优先级

P

最后使用的CPU,仅在多CPU环境下有意义

%CPU

上次更新到现在的CPU时间占用百分比

TIME

进程使用的CPU时间总计,单位秒

TIME+

进程使用的CPU时间总计,单位1/100秒

%MEM

进程使用的物理内存百分比

VIRT

进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

SWAP

进程使用的虚拟内存中,被换出的大小,单位kb。

RES

进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

CODE

可执行代码占用的物理内存大小,单位kb

DATA

可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

SHR

共享内存大小,单位kb

nFLT

页面错误次数

nDRT

最后一次写入到现在,被修改过的页面数。

S

进程状态。
            D=不可中断的睡眠状态
            R=运行
            S=睡眠
            T=跟踪/停止
            Z=僵尸进程

COMMAND

命令名/命令行

WCHAN

若该进程在睡眠,则显示睡眠中的系统函数名

Flags

任务标志,参考 sched.h

详细参考:

http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html

top命令显示结果中一些常用状态信息的具体含义

free命令的功能

参数讲解

bash-3.00$ free
total used free shared buffers cached
Mem: 1572988 1509260 63728 0 62800 277888
-/+ buffers/cache: 1168572 404416
Swap: 2096472 16628 2079844

 

Mem:表示物理内存统计

total:表示物理内存总量(total = used + free)
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。

计算已经使用的内存

-/+ buffers/cache:表示物理内存的缓存统计

used2:也就是第一行中的used – buffers-cached 也是实际使用的内存总量。 //used2为第二行
free2= buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行
free2:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。

Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。
系统的总物理内存:255268Kb(256M),但系统当前真正可用的内存b并不是第一行free 标记的 16936Kb,它仅代表未被分配的内存。 计算未使用的 buffers/cache

buffers与cached的区别

A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use

对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说 可用内存=系统free memory+buffers+cached.

buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。

系统中进程的监控—ps
什么是进程
什么是守护进程
什么是父进程、子进程

ps命令的功能

[root@study ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19232 1592 ? Ss 14:27 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 14:27 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 14:27 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 14:27 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 14:27 0:00 [stopper/0]
root 6 0.0 0.0 0 0 ? S 14:27 0:00 [watchdog/0]
root 7 0.0 0.0 0 0 ? S 14:27 0:08 [events/0]
root 8 0.0 0.0 0 0 ? S 14:27 0:00 [cgroup]
root 9 0.0 0.0 0 0 ? S 14:27 0:00 [khelper]
root 10 0.0 0.0 0 0 ? S 14:27 0:00 [netns]
root 11 0.0 0.0 0 0 ? S 14:27 0:00 [async/mgr]
root 12 0.0 0.0 0 0 ? S 14:27 0:00 [pm]
root 13 0.0 0.0 0 0 ? S 14:27 0:00 [sync_supers]
root 14 0.0 0.0 0 0 ? S 14:27 0:00 [bdi-default]
root 15 0.0 0.0 0 0 ? S 14:27 0:00 [kintegrityd/0]

#查看进程号
[root@study test1]# ps aux|grep 'init'
root 1 0.0 0.0 19232 1512 ? Ss 14:27 0:00 /sbin/init
root 1427 0.0 0.0 103264 844 pts/0 S+ 17:18 0:00 grep init

#过滤掉自己
[root@study test1]# ps aux|grep 'init'|grep -v 'grep'
root 1 0.0 0.0 19232 1512 ? Ss 14:27 0:00 /sbin/init

#运行程序
firefox

#把程序放在后台运行
firefox &

#查看后台运行的程序
jobs

#把程序调到前端运行 %工作号,后台程序调到前台运行。
fg %1

#过滤出firefox,再过滤掉自己
ps aux|grep 'firefox' |grep -v 'grep'

#直接在后台运行
bg %1

#查看程序的PID

[root@study ~]# ps aux |grep bash
root 0.0 0.0 108316 1812 pts/0 Ss 17:40 0:00 -bash
root 1586 0.0 0.0 103260 840 pts/0 S+ 18:01 0:00 grep bash

[root@study ~]# pgrep 'bash'
1512    #pid

系统中进程的监控—pstree、kill、pkill、pgrep

pstree命令的功能
pstree命令的用法举例
kill命令的功能
kill命令的用法举例
kill -9

pkill、pgrep命令的功能

ps:

[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17563 17534 0 17:37 pts/1 00:00:00 grep init

#强制杀死程序的进程号
[root@localhost ~]# kill -9 1

#以树状图显示进程间的关系

[root@study test1]# pstree
init─┬─crond
├─dhclient
├─login───bash
├─5*[mingetty]
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd───bash───pstree
└─udevd───2*[udevd]

查看bash进程树
[root@study ~]# pstree |grep bash
|-login---bash
|-sshd---sshd---bash-+-grep

课后作业
【本节内容】
1. 系统监视和进程控制工具—top和free(详见linux系统管理P357)
1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

2) 了解使用top命令列出系统状态时,系统默认每5秒刷新一下屏幕上的显示结果。
3) 掌握free命令的功能:显示内存的使用状态。

2. 系统中进程的监控—ps(详见linux系统管理P363)
1) 掌握进程的定义:进程是程序的一次动态执行。
2) 掌握守护进程的定义:守护进程是在后台运行并提供系统服务的一些进程。
3) 掌握父进程、子进程的定义:当一个进程创建另一个进程时,第1个进程被称为新进程的父进程,而新进程被称为子进程。
4) 掌握ps命令的功能:用来显示当前进程的状态。
Ps –aux 显示所有的与用户相关的完整信息
系统中进程的监控—pstree、kill(详见linux系统管理P366)
1) 掌握pstree命令的功能:以树状图显示程序。
2) 掌握pstree命令的用法举例:
例如:列出PID为4729的进程的进程状态树的命令:pstree 4729
3) 掌握kill命令的功能:把一个信号发送给一个或多个进程。默认发送终止信号。
4) 灵活应用kill命令终止进程
例如:终止PID为3852的进程的命令:kill 3852
5) 灵活应用kill -9命令杀死进程
例如:杀死PID为3906的进程的命令:kill -9 3906

3. 掌握pgrep命令的功能:通过名称或其他属性查找进程
例如:查找名为firefox的进程的命令为:pgrep firefox

4. 掌握pkill命令的功能:通过名称或其他属性发信号给进程
例如:杀死名为firefox的进程的命令为:pkill firefox

5. 课后作业(用时30分钟)

1) 实时动态监控系统状态

top

2) 退出上一步的操作

q

3) 开启top进程

[root@study ~]# top

top - 18:21:33 up 3:54, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 68 total, 1 running, 67 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1906492k total, 108428k used, 1798064k free, 9232k buffers
Swap: 2047996k total, 0k used, 2047996k free, 32136k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19232 1592 1300 S 0.0 0.1 0:00.62 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.02 watchdog/0
7 root 20 0 0 0 0 S 0.0 0.0 0:09.65 events/0

4) 使用ps命令查看top命令的pid并杀死

[root@study ~]# ps aux|grep 'top'|grep -v 'grep'
root 5 0.0 0.0 0 0 ? S 14:27 0:00 [stopper/0]

[root@study ~]# pkill -9 5

5) 查看pid为2的进程的进程树

[root@study ~]# pstree 2
kthreadd─┬─aio/0
├─async/mgr
├─ata_aux
├─ata_sff/0
├─bdi-default
├─cgroup
├─crypto/0
├─deferwq
├─events/0
├─2*[ext4-dio-unwrit]

后面部分省略

6) 打开火狐浏览器

firefox

7) 查找名为firefox的进程

[root@study ~]# ps aux|grep firefix
root 1630 0.0 0.0 103260 836 pts/0 S+ 18:18 0:00 grep firefix

8) 杀死名为firefox的进程

kill -9 1630

linux基础-第十一单元 系统监控的更多相关文章

  1. linux基础-第十单元 系统的初始化和服务

    第十单元 系统的初始化和服务 Linux系统引导的顺序 Linux系统引导的顺序 BOIS的初始化和引导加载程序 什么是BIOS GRUB程序和grub.conf文件 什么是grub grub配置文件 ...

  2. 【linux之进程管理,系统监控】

    一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...

  3. 【进程/作业管理】篇章一:Linux进程及其管理(系统监控类工具)----glances、dstat

    glances   dstat   glances命令详解 相对于htop工具的使用,这里介绍一下glances工具的使用,我个人是比较喜欢这款工具的,主要就是由于glances这款工具可以将系统状态 ...

  4. linux基础-第十三单元 硬盘分区、格式化及文件系统的管理二

    第十三单元 硬盘分区.格式化及文件系统的管理二 文件系统的挂载与卸载 什么是挂载 mount命令的功能 mount命令的用法举例 umount命令的功能 umount命令的用法举例 利用/etc/fs ...

  5. Zabbix3.0基础教程之一:系统监控,zabbix安装与基本配置

    一.安装环境: 系统环境: 系统版本:CentOS Linux release 7.4.1708 (Core) 内核版本:3.10.0-693.el7.x86_64 关闭Firewall与SELinu ...

  6. linux基础-第二十单元_计划任务crond服务

    第二十单元 计划任务crond服务 什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiW ...

  7. linux基础-第八单元 正文处理命令及tar命令

    第八单元 正文处理命令及tar命令 使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查 ...

  8. linux基础-第七单元 用户、群组及权限的深入讨论

    怎样查看文件的权限 ls命令详解 root用户及文件的安全控制 什么是root用户 用户分类 文件操作权限 文件操作权限的字符表示 chown chgrp 使用符号表示法设定文件或目录上的权限 chm ...

  9. linux基础-第六单元 用户、群组和权限

    用户及passwd文件 /etc/passwd文件的功能 /etc/passwd文件每个字段的具体含义 shadow文件 /etc/shadow文件的功能 /etc/shadow文件每个字段的具体含义 ...

随机推荐

  1. Linux 下从头再走 GTK+-3.0 (四)

    实际的应用中,往往有很多个控件, 同样GTK提供了很多种布局方案,Box, Fixed , Table , Grid 等. 接下来试试网格布局 Grid. 我们创建 example4.c ,内容如下: ...

  2. 二:shell之bash变量

    1.变量的分类: 用户自定义变量:   变量自定义 默认存储是字符串环境变量:              这种变量中主要保存的是和系统操作环境相关的数据.变量可以自定义,但是对系统生效的环境变量名和变 ...

  3. php实现SESSION跨域

    稍微大一点的网站,通常都会有不只一个服务器,每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二级域名,比如www.a.com.i.a.com.bbs.a.com.而一个整体性强的网站,用 ...

  4. Javascript笔记--Objects

     Javascript的简单数据类型包括: 数字,字符串,true/false,null 和undefined. 其他所有值都是对象. 数组是对象,方法也是对象.属性值是除开undefined值以外的 ...

  5. 阿里云 CentOS6.5 ssh连接慢的解决方案

    我租了一台阿里云深圳的服务器,用的是CentOS6.5的系统,最近要在服务器上小改点代码,但是不管用private shell 还是securecrt工具连接,连上去后,都特别慢,经常敲一段代码要过个 ...

  6. 第二章《深入C#数据类型》项目经理评分

    一:创建MyOffices项目,创建UserInfo类,用来存储员工 工号,姓名,年龄,评价,年度得分 二:创建查看评分窗体(frmShow),添加定义员工数组,将员工数据绑定到frmShow窗体的L ...

  7. [No000048]程序员的成长过程中,有哪些阶段?

    有人在 Quora 提问,并补充: 有木有朋友能根据你们自身经历,清晰地划分各个阶段?比如:学习第一门编程语言.第一份工作.职业决策.理解 IT 公司的目标,等等. Quincy Larson 的回复 ...

  8. luogu1328[NOIP2014 T1]生活大爆炸版石头剪刀布

    题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头剪刀布的升级版游戏. 升级版游戏在传统的 ...

  9. NOI 2002 营业额统计 (splay or fhq treap)

    Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每 ...

  10. Android M新的运行时权限开发者需要知道的一切

    android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...