- 论坛徽章:
- 0
|
系统资源的观察
除了系统的程序之外,我们还必须就系统的一些资源进行检查啊! 举例来说,我们使用 top 可以看到很多系统的资源对吧!那么,还有没有其他的工具可以查阅的? 当然有啊!底下这些工具指令可以玩一玩!
# free
[root@linux ~]# free [-b|-k|-m|-g] [-t]
参数:
-b :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes), m(Mbytes)
k(Kbytes), 及 g(Gbytes) 来显示单位喔!
-t :在输出的最终结果,显示实体记忆体与 swap 的总量。
范例:
范例一:显示目前系统的记忆体容量
[root@linux ~]# free -m
total used free shared buffers cached
Mem: 376 366 10 0 129 94
-/+ buffers/cache: 141 235
Swap: 996 0 995
仔细看看,我的系统当中有 384 MB 左右的实体记忆体,我的 swap 有 1GB 左右, 那我使用 free -m 以 MBytes 来显示时,就会出现上面的资讯。Mem 那一行显示的是实体记忆体的量, Swap 则是虚拟记忆体的量。 total 是总量, used 是已被使用的量, free 则是剩余可用的量。 后面的 shared/buffers/cached 则是在已被使用的量当中,用来作为缓冲及快取的量。
仔细的看到范例一的输出喔,我的 Linux 主机是很平凡的,根本没有什么工作, 但是,我的实体记忆体是几乎被用光光的情况呢!不过,至少有 129 MB 用在缓冲记忆工作, 94 MB 则用在快取工作,也就是说,系统是‘很有效率的将所有的记忆体用光光’, 目的是为了让系统的存取效能加速啦!
很多朋友都会问到这个问题‘我的系统明明很轻松,为何记忆体会被用光光?’ 现在瞭了吧?没有错!被用光是正常的!而需要注意的反而是 swap 的量。一般来说, swap 最好不要被使用,尤其 swap 最好不要被使用超过 20% 以上, 如果您发现 swap 的用量超过 20% ,那么,最好还是买实体记忆体来插吧! 因为, Swap 的效能跟实体记忆体实在差很多,而系统会使用到 swap , 绝对是因为实体记忆体不足了才会这样做的!如此,瞭解吧!
# uname
[root@linux ~]# uname [-asrmpi]
参数:
-a :所有系统相关的资讯;
-s :系统核心名称
-r :核心的版本
-m :本系统的硬体名称
-p :CPU 的类型
-i :硬体的平台 (ix86)
范例:
范例一:输出系统的基本资讯
[root@linux ~]# uname -a
Linux linux.site 2.6.12-1.1398_FC4 #1 Fri Jul 15 00:52:32 EDT 2005
i686 i686 i386 GNU/Linux
这个咚咚我们前面使用过很多次了喔!uname 可以列出目前系统的核心版本、 主要硬体平台以及 CPU 类型等等的资讯。以上面范例一的状态来说,我的 Linux 主机使用的核心名称为 Linux,而主机名称为 linux.site,核心的版本为 2.6.12-1.1398_FC4,该核心版本建立的日期为 2005/07/15, 适用的硬体平台为 i386 以上等级的硬体平台喔。
# uptime
这个指令很单纯呢!就是显示出目前系统已经开机多久的时间,以及 1, 5, 15 分钟的平均负载就是了。还记得 top 吧?没错啦! 这个 uptime 可以显示出 top 画面的最上面一行!
[root@linux ~]# uptime
18:06:30 up 52 days, 6:40, 1 user, load average: 0.00, 0.00, 0.00
# 上面表示,目前是 18:06 ,本系统已经开机 52 天又 6:40 ,有 1 个使用者在线上,
# 平均负载很低,所以都是 0 啊!
# netstat
这个 netstat 也是挺好玩的,其实,这个指令比较常被用在网路的监控方面, 不过,在程序管理方面也是需要瞭解的啦!这个指令的执行如下所示:基本上, netstat 的输出分为两大部分,上面是网路介面相关的连线,下方则是与 unix 程序有关的项目。
[root@linux ~]# netstat -[atunlp]
参数:
-a :将目前系统上所有的连线、监听、Socket 资料都列出来
-t :列出 tcp 网路封包的资料
-u :列出 udp 网路封包的资料
-n :不已程序的服务名称,以埠号 (port number) 来显示;
-l :列出目前正在网路监听 (listen) 的服务;
-p :列出该网路服务的程序 PID
范例:
范例一:列出目前系统已经建立的网路连线与 unix socket 状态
[root@linux ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 256 59-125-83-224.ad:ssh linux.test.s:52679 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 16 [ ] DGRAM 4870 /dev/log
unix 2 [ ] DGRAM 3561 @udevd
unix 3 [ ] STREAM CONNECTED 509237
# 在上面的结果当中,显示了两个部分,分别是网路的连线以及 linux 上面的 socket
# 连线状态。在网路连线的部分主要内容为:
# Proto :网路的封包协定,主要分为 TCP 与 UDP 封包,相关资料请参考伺服器篇;
# Recv-Q:非由使用者程式连结到此 socket 的复制的总 bytes 数;
# Send-Q:非由远端主机传送过来的 acknowledged 总 bytes 数;
# Local Address :本地端的 IP
# Foreign Address:远端主机的 IP;
# State :连线状态,主要有建立(ESTABLISED)及监听(LISTEN);
# 至于 unix 传统的 socket 连接状态则是:
# Proto :一般就是 unix 啦;
# RefCnt:连接到此 socket 的程序数量;
# Flags :连线的旗标;
# Type :socket 存取的类型。主要有确认连线的 STREAM 与不需确认的 DGRAM 两种;
# State :CONNECTED 表示已经连线建立。
# Path :连接到此 socket 的相关程式的路径!或者是相关资料输出的路径。
范例二:找出目前系统上已在监听的网路连线及其 PID
[root@linux ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1598/vsftpd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1666/master
tcp 0 0 :::22 :::* LISTEN 5281/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 21339/dhclient
# 看到了吗?最后面一个栏位就是该埠号被该 PID 或程式所启动的!
范例三:将上述的本地端 0.0.0.0:21 那个网路服务关闭的话?
[root@linux ~]# kill 1598
[root@linux ~]# killall vsftpd
很多朋友常常有疑问,那就是,我的主机目前到底开了几个门(ports), 呵呵!其实,不论主机提供什么样的服务,一定必须要有相对应的 program 在主机上面执行才行啊! 举例来说,我们鸟园的 Linux 主机提供的就是 WWW 服务,那么我的主机当然有一个程式在提供 WWW 的服务啊!呵呵!那就是 Apache 这个套件所提供的啦! ^_^。 所以,当我执行了这个程式之后,我的系统自然就可以提供 WWW 的服务了。那如何关闭啊? 就关掉该程式所触发的那个程序就好了!例如上面的范例三所提供的例子啊! ^_^
# dmesg
在开机的时候你会发现有很多的讯息出现吧,例如 CPU 的形式、硬碟、 光碟型号及硬碟分割表等等,这些资讯的产生都是核心 (kernel) 在进行硬体的测试与驱动啦。 但是讯息都是‘刷’的一声就跑过去了!完全来不及看!伤脑筋~
这些讯息有时候对于系统管理员是很重要的,因为他提供了系统的资讯呀! 要看这些讯息你可以用 dmesg 这个指令来观看! 因为讯息实在太多了,所以可以加入这个管线指令‘ | more ’来使画面暂停!
范例一:输出所有的核心开机时的资讯
[root@linux ~]# dmesg | more
范例二:搜寻开机的时候,硬碟的相关资讯为何?
[root@linux ~]# dmesg | grep -i hd
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:pio
hda: ST320430A, ATA DISK drive
hdb: Maxtor 5T030H3, ATA DISK drive
hdc: CD-540E, ATAPI CD/DVD-ROM drive
.....底下省略.....
由范例二就知道我这部主机的硬碟是怎样了吧?!没错啦! 还可以查阅能不能找到网路卡喔!网路卡的代号是 eth ,所以,直接输入 dmesg | grep -i eth 试看看呢!
# sar
这个 sar 并不是系统预设的安装套件,如果您不是选择全部安装的话,这个套件预设是不装的。 不过,如果您是选择全部安装,嘿嘿!那就可以玩这个 sar 了。 这个 sar 的功能倒是可以玩一玩的,因为他可以在您想要主动侦测主机的资源状态, 然后绘制成为图表时,相当好用的一个工具喔!
[root@linux ~]# sar [-ru] [秒数] [次数]
参数:
-u :进行 CPU 资源的统计;
-r :进行主记忆体目前状态的分析
范例:
范例一:统计目前主机 CPU 状态,每秒一次,共计三次!
[root@linux ~]# sar -u 1 3
Linux 2.6.12-1.1398_FC4 (vbird.vbird.idv.tw) 09/16/05
14:16:17 CPU %user %nice %system %iowait %idle
14:16:18 all 0.00 0.00 0.00 0.00 100.00
14:16:19 all 0.00 0.00 0.00 0.00 100.00
14:16:20 all 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 100.00
# 我这部主机单纯用在家里测试的,所以没有什么网路服务,看的出来,嘿嘿!很安静!
范例二:统计目前主机记忆体的使用情况
[root@linux ~]# sar -r 1 3
Linux 2.6.12-1.1398_FC4 (vbird.vbird.idv.tw) 09/16/05
14:17:40 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree
14:17:41 26004 359672 93.26 127528 83996 1019236
14:17:42 26004 359672 93.26 127528 83996 1019236
14:17:43 26004 359672 93.26 127528 83996 1019236
Average: 26004 359672 93.26 127528 83996 1019236
# 其实这个与 free 的输出结果也差不了太多啦!
鸟哥倒是很喜欢使用 sar 来做背景主动侦测系统 CPU 的动作!参考看看先!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/68904/showart_1805400.html |
|