现在的位置: 首页 > 综合 > 正文

查看系统资源的命令(汇总一)

2013年09月15日 ⁄ 综合 ⁄ 共 6882字 ⁄ 字号 评论关闭

下面我们来说一下查看系统资源的命令。

(一)命令 W 

用途打印当前系统活动摘要。

语法w [ -h ] [ -u ] [ -w ] [ -l | -s ] [ User
]

描述w 命令打印系统中当前活动的摘要。该摘要包含以下内容:

  用户  登录的用户。

  tty  用户使用的 tty 名称。

  注册@  用户登录的日期和时间。

  空闲 自一个程序上次试图从终端读取开始所持续的分钟数。

  JCPU  该终端上的所有进程及其子进程使用的系统部件时间

  PCPU
当前活动进程所使用的系统部件时间

  什么 当前进程的名称和参数

  摘要标题行显示当前日期和时间、系统已经启动的时间、登录到系统的用户数和平均负载。平均负载是指在先前 1、5、15 分钟时间间隔内可运行进程数

  下面的示例显示了登录时间字段所用的不同格式:

  10:25am 用户在最近 24 小时内登录。

  Tue10am 用户在 24 小时和 7 天之间登录。

  12Mar91 用户在 7 天以前登录。

  如果用 User 参数指定了用户名,则输出仅限于该用户。

标志

  -h 禁用标题。

  -l 用长格式打印摘要。这是缺省值

  -s 用短格式打印摘要。在短格式中,tty 是缩写,并且登录时间、系统部件时间和命令参数都被省略。

  -u 打印日期和时间、自上次系统启动以来的时间总计、登录的用户数和正在运行的进程数。这是缺省值。指定 -u 标志而不指定 -w 或 -h 标志等效于 uptime 命令。

  -w 等效于同时指定 -u 和 -l 标志,这是缺省值。

文件

  /etc/utmp 包含用户列表。

 

 

(二)uptime

用途 

显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载

uptime是指某时间段内计算机或通信系统正常工作的总时长。
与上线时间相反的是
宕机时间或下线时间(Downtime),宕机时间是指某时间段内计算机或通信系统不能正常工作宕机的总时长。上线时间是用来衡量计算机或通信系统稳定性的重要指标之一。

执行该命令将会显示出系统的当前时间上线时间当前的用户数量以及过去1、5、15分钟内的系统负荷。下面是一个在Unix系统上运行uptime命令的实例

=================================================================================================================

 思考:什么是程序及如何产生一个程序呢?

在 Linux 底下所有的命令与你能够进行的动作都与权限有关, 而系统如何判定你的权限呢?当然就是帐号管理当中提到的 UID/GID 的相关概念,以及文件的属性相关性罗!再进一步来解释,你现在大概知道,在 Linux 系统当中:触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个
ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限配置。
从此以后,这个 PID 能够在系统上面进行的动作,就与这个 PID 的权限有关了!

也就是说【运行一个程序或命令】就可以触发一个事件而取得一个 PID

程序一般是放置在实体磁碟中,然后透过使用者的运行来触发。触发后会加载到内存中成为一个个体,那就是程序。 为了操作系统可管理这个程序,因此程序有给予运行者的权限/属性等参数,并包括程序所需要的命令码与数据或文件数据等, 最后再给予一个 PID 。系统就是透过这个 PID 来判断该 process 是否具有权限进行工作的!

程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在

程序 (process):程序被触发后,运行者的权限与属性、程序的程序码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个识别码 (PID),可以说,程序就是一个正在运行中的程序。

 常驻在内存当中的程序通常都是负责一些系统所提供的功能以服务使用者各项任务,因此这些常驻程序就会被我们称为:服务 (daemon)

eg:(1)系统本身所需要的服务:crond 及 atd ,还有 syslog 等等(2)负责网络连线的服务:Apache, named,
postfix, vsftpd...

+++++++++++++++++++++++

既然程序这么重要,那么我们如何查阅系统上面正在运行当中的程序呢?很简单啊! 利用静态的 ps 或者是动态的 top,还能以pstree查阅程序树之间的关系喔!

========================================================================================================================

(三)ps:将某个时间点的程序运行情况撷取下来

[root@www ~]# ps aux  <==观察系统所有的程序数据
[root@www ~]# ps -lA  <==也是能够观察所有系统的数据
[root@www ~]# ps axjf <==连同部分程序树状态
选项与参数:
-A  :所有的 process 均显示出来,与 -e 具有同样的效用

-a  :不与 terminal 有关的所有 process ;

-u  :有效使用者 (effective user) 相关的 process ;

x   :列出所有tty的程序,通常与 a 这个参数一起使用,可列出较完整资讯。
 
输出格式规划:
l   :较长、较详细的将该 PID 的的资讯列出;

j   :工作的格式 (jobs format)

-f  :做一个更为完整的输出
仅观察自己的 bash 相关程序: ps -l
范例一:将目前属於您自己这次登陆的 PID 与相关资讯列示出来(只与自己的 bash 有关)
[root@www ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  3477  3475  0  75   0 - 16551 wait   pts/1    00:00:00 bash
4 R     0  3743  3477  0  78   0 - 15882 -      pts/1    00:00:00 ps
 
F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
若为 4 表示此程序的权限为 root ; 

若为 1 则表示此子程序仅进行复制(fork)而没有实际运行(exec)

S:代表这个程序的状态 (STAT),主要的状态有:

  • R (Running):该程序正在运行中;
  • S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
  • D 不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>列印)
  • T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
  • Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外

C:代表 CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所运行的优先顺序,数值越小代表该程序越快被 CPU 运行

 

ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示『 - 』

                                                                / SZ 代表此程序用掉多少内存

                                                              / WCHAN 表示目前程序是否运行中,同样的, 若为-
表示正在运行中

TTY:登陆者的终端机位置,若为远程登陆则使用动态终端介面 (pts/n);

TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时间

内存使用及其VSZ(虚拟内存大小)和RSS(常驻集大小);

VSZ表示一个程序完全驻留在内存的话需要占用多少内存空间;

RSS指明了当前实际用了多少内存;

STAT显示了进程当前的状态:

“S”进程处在睡眠状态,表明这些进程在等待某些事情发生---可能是用户输入或者系统资源的可用性(sleeping);

“D”不可中断Uninterruptible sleep(Usually IO)

”R“正在运行,或在队列中的进程runnable(on run queue)

“T”停止或被迫追踪(traced or stoped)

“Z”僵尸进程 a defunct (“zombie”process)

“W”进入内存交换(从内核2.6开始无效)

“X”死掉的进程

“L”内存锁页

< 高优先级

n低优先级

s包含了子进程

+位于后台的进程组

(四)top:动态观察程序的变化

[root@www ~]# top [-d 数字] | top [-bnp]
选项与参数:
-d  :后面可以接秒数,就是整个程序画面升级的秒数。默认是 5 秒;
-b  :以批量的方式运行 top ,还有更多的参数可以使用喔!
      通常会搭配数据流重导向来将批量的结果输出成为文件。
-n  :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p  :指定某些个 PID 来进行观察监测而已。
在 top 运行过程当中可以使用的按键命令:
	? :显示在 top 当中可以输入的按键命令;
	P :以 CPU 的使用资源排序显示;
	M :以 Memory 的使用资源排序显示;
	N :以 PID 来排序喔!
	T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
	k :给予某个 PID 一个讯号  (signal)
	r :给予某个 PID 重新制订一个 nice 值。
	q :离开 top 软件的按键。
范例一:每两秒钟升级一次 top ,观察整体资讯
[root@www ~]# top -d 2
top - 17:03:09 up 7 days, 16:16,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  80 total,   1 running,  79 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5%us,  0.5%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    742664k total,   681672k used,    60992k free,   125336k buffers
Swap:  1020088k total,       28k used,  1020060k free,   311156k cached
    <==如果加入 k 或 r 时,就会有相关的字样出现在这里喔!
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND     
14398 root      15   0  2188 1012  816 R  0.5  0.1   0:00.05 top
    1 root      15   0  2064  616  528 S  0.0  0.1   0:01.38 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0

top 主要分为两个画面,上面的画面为整个系统的资源使用状态,基本上总共有六行,显示的内容依序是:

第一行(top...):这一行显示的资讯分别为:

  • 目前的时间,亦即是 17:03:09 那个项目;
  • 启动到目前为止所经过的时间,亦即是 up 7days, 16:16 那个项目;
  • 已经登陆系统的使用者人数,亦即是 1 user项目;
  • 系统在 1, 5, 15 分钟的平均工作负载。我们在第十六章谈到的 batch 工作方式为负载小於 0.8 就是这个负载罗!代表的是 1, 5, 15 分钟,系统平均要负责运行几个程序(工作)的意思。 越小代表系统越闲置,若高於 1 得要注意你的系统程序是否太过繁复了!

第二行(Tasks...):显示的是目前程序的总量与个别程序在什么状态(running, sleeping, stopped, zombie)。 比较需要注意的是最后的 zombie 那个数值,如果不是 0 !好好看看到底是那个 process 变成僵尸了吧?

第三行(Cpus...):显示的是 CPU 的整体负载,每个项目可使用 ? 查阅。需要特别注意的是 %wa ,那个项目代表的是 I/O wait, 通常你的系统会变慢都是 I/O 产生的问题比较大!因此这里得要注意这个项目耗用 CPU 的资源喔! 另外,如果是多核心的设备,可以按下数字键『1』来切换成不同
CPU 的负载率

第四行与第五行:表示目前的实体内存与虚拟内存 (Mem/Swap) 的使用情况。 再次重申,要注意的是 swap 的使用量要尽量的少!如果 swap 被用的很大量,表示系统的实体内存实在不足!
第六行:这个是当在 top 程序当中输入命令时,显示状态的地方

至于 top 下半部分的画面,则是每个 process 使用的资源情况。比较需要注意的是:

  • PID :每个 process 的 ID 啦!
  • USER:该 process 所属的使用者;
  • PR :Priority 的简写,程序的优先运行顺序,越小越早被运行;
  • NI :Nice 的简写,与 Priority 有关,也是越小越早被运行;
  • %CPU:CPU 的使用率;
  • %MEM:内存的使用率;
  • TIME+:CPU 使用时间的累加;

top 默认使用 CPU 使用率 (%CPU) 作为排序的重点,如果你想要使用内存使用率排序,则可以按下『M』, 若要回复则按下『P』即可。如果想要离开 top 则按下『 q 』吧!如果你想要将 top
的结果输出成为文件时, 可以这样做:

范例二:将 top 的资讯进行 2 次,然后将结果输出到 /tmp/top.txt
[root@www ~]# top -b -n 2 > /tmp/top.txt
# 这样一来,嘿嘿!就可以将 top 的资讯存到 /tmp/top.txt 文件中了。

范例三:我们自己的 bash PID 可由$$ 变量取得,请使用 top 持续观察该PID

[root@www ~]#echo $$13639<==就是这个数字!他是我们 bash 的 PID

[root@www ~]# top -d 2 -p13639

top - 17:31:56 up 7 days, 16:45, 1 user, load average: 0.00, 0.00, 0.00

Tasks: 1 total, 0 running, 1 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: 742664k total, 682540k used, 60124k free, 126548k buffers

Swap: 1020088k total, 28k used, 1020060k free, 311276k cached

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

13639 root 15 0 5148 1508 1220 S 0.0 0.2 0:00.18 bash

范例四:承上题,上面的 NI 值是 0 ,想要改成 10 的话?
# 在范例三的 top 画面当中直接按下 r 之后,会出现如下的图样!
top - 17:34:24 up 7 days, 16:47,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:    742664k total,   682540k used,    60124k free,   126636k buffers
Swap:  1020088k total,       28k used,  1020060k free,   311276k cached
PID to renice: 13639  <==按下 r 然后输入这个 PID 号码
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13639 root      15   0  5148 1508 1220 S  0.0  0.2   0:00.18 bash

在你完成上面的动作后,在状态列会出现如下的资讯:

Renice PID 13639 to value: 10   <==这是 nice 值

接下来你会看到:

 

top - 17:38:58 up 7 days, 16:52,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:   1 total,   0 running,   1 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:    742664k total,   682540k used,    60124k free,   126648k buffers
Swap:  1020088k total,       28k used,  1020060k free,   311276k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13639 root      26  10  5148 1508 1220 S  0.0  0.2   0:00.18 bash

 

抱歉!评论已关闭.