系统资源查看

明月清风 2016-11-12 332浏览 0条评论
首页/正文
分享到: / / / /

free:内存使用情况

free 选项

常用选项:

  • -b:以字节为单位 显示 内存总和。
  • -k:缺省的) 以 KB 为单位 显示。
  • -m:以 MB 为单位。
  • -t :显示 一个 总计行。
  • -h:易读模式显示单位。
  • -o: 禁止 "buffer adjusted" 行的显示. 除非 指定 free 从 (相应的) 已用/未用的 内存 减去/加上 缓 冲区内存。
[root@ZhangSir ~]#free -m
     total used free shared buffers cached
Mem:  1861  475 1386      0      56    241
-/+ buffers/cache: 176 1685
Swap: 2047    0 2047
  • Mem:显示的是实体内存的量。
  • Swap:是虚拟内存的量。
  • total :总量。
  • used:已被使用的量。
  • free:则是剩余可用的量。
  • shared/buffers/cached 则是在已被使用的量当中,用来作为缓冲及缓存的量。

Swap 的效能跟实体内存实在差很多,而系统会使用到 swap , 是因为能加速系统的存取效率,而非实体内存不足了才会使用!

uname:查阅系统与核心相关信息

uname 选项

显示相应的系统信息. 没有指定选项时,同 -s.

  • -a:显示所有的信息
  • -m:显示机器(硬件)类型
  • -n:显示机器的网络节点主机名
  • -r:显示操作系统发行版本
  • -s:显示操作系统名
  • -p:显示主机处理器(CPU)类型
[root@ZhangSir ~]#uname -a
Linux ZhangSir 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

uptime:观察系统启动时间与负载

这个命令很简单,只是显示出目前系统已经启动多久的时间,以及 1, 5, 15 分钟的平均负载。还记得 top 吧?等同于 top 画面的最上面一行!

[root@ZhangSir ~]#uptime
 01:20:34 up 5:46, 1 user, load average: 0.00, 0.01, 0.05

netstat:追踪网络或套接字

这个命令比较常被用在网络的监控方面,不过,在程序管理方面也是需要了解的! 这个命令的运行如下所示:基本上, netstat 的输出分为两大部分,分别是网络与系统自己的程序相关性部分:

netstat 选项

常用参数: 无参数时, netstat 显示打开的套接字. 如果不指定任何地址族,那么打印出所有已配置地址族的有效套接字。

  • -r:显示内核路由表。
  • -g:显示IPv4 和 IPv6的IGMP组播组成员关系信息。
  • -i:显示所有网络接口列表或者是指定的 iface 。
  • -M:显示一份所有经伪装的会话列表。
  • -s:显示每种协议的统计信息。 常用选项:
  • -v:详细模式运行。特别是打印一些关于未配置地址族的有用信息。 -n:显示数字形式地址而不是去解析主机、端口或用户名。
  • --numeric-hosts:显示数字形式的主机但是不影响端口或用户名的解析。
  • --numeric-ports:显示数字端口号,但是不影响主机或用户名的解析。
  • --numeric-users:显示数字的用户ID,但是不影响主机和端口名的解析。
  • --protocol=family , -A:指定要显示哪些连接的地址族(也许在底层协议中可以更好地描述)。 family 以逗号分隔的地址族列表,比 如inet, unix, ipx, ax25, netrom, 和 ddp。这样和使用 --inet, --unix (-x), --ipx, --ax25, --netrom,和 --ddp 选项效果相同。地址族 inet 包括raw, udp 和tcp 协议套接字。
  • -c:将使 netstat 不断地每秒输出所选的信息。
  • -e:显示附加信息。使用这个选项两次来获得所有细节。
  • -o:包含与网络定时器有关的信息。
  • -p:显示套接字所属进程的PID和名称。
  • -l:只显示正在侦听的套接字(这是默认的选项)。
  • -a:显示所有正在或不在侦听的套接字。加上 --interfaces 选项将显示没有标记的接口。
  • -F:显示FIB中的路由信息。(这是默认的选项)
  • -C:显示路由缓冲中的路由信息。 delay:netstat将循环输出统计信息,每隔 delay 秒。
[root@ZhangSir ~]#netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q      Local Address        Foreign Address   State 
tcp        0     52  172.16.250.56:ssh   172.16.252.246:52874   ESTABLISHED 
Active UNIX domain sockets (w/o servers)
Proto  RefCnt Flags  Type    State   I-Node  Path
unix        2   [ ] DGRAM             15234  @/org/freedesktop/hal/udev_event
unix        2   [ ] DGRAM             11520  @/org/kernel/udev/udevd
unix       11   [ ] DGRAM             14552  /dev/log
unix        2   [ ] DGRAM             19349 
unix        2   [ ] DGRAM             17119 
unix        3   [ ] STREAM CONNECTED  16450  /var/run/dbus/system_bus_socket
unix        3   [ ] STREAM CONNECTED  16449 
unix        2   [ ] DGRAM             16171

在上面的结果当中,显示了两个部分,分别是网络的连线以及 linux 上面的 socket 程序相关性部分。 我们先来看看网际网络连线情况的部分:

活动的Internet网络连接 (TCP, UDP, raw)

  • 1.Proto:套接字使用的协议。
  • 2.Recv-Q:连接此套接字的用户程序未拷贝的字节数。
  • 3.Send-Q:远程主机未确认的字节数。
  • 4.Local Address:套接字的本地地址(本地主机名)和端口号。除非给定-n --numeric (-n) 选项,否则套接字地址按标 准 主 机 名(FQDN)进行解析,而端口号则转换到相应的服务名。
  • 5.Foreign Address:套接字的远程地址(远程主机名)和端口号。 Analogous to "Local Address."
  • 6.State:套接字的状态。因为在RAW协议中没有状态,而且UDP也不用状态信息,所以此行留空。主要有创建(ESTABLISED)及监听(LISTEN)。 除了网络上的连线之外,其实 Linux 系统上面的程序是可以接收不同程序所发送来的信息,那就是 Linux 上头的套接字文件 (socket file)。socket file 可以沟通两个程序之间的信息,因此程序可以取得对方传送过来的数据。 由于有 socket file,因此类似 X Window 这种需要通过网络连接的软件,目前新版的 distributions 就以 socket 来进行窗口介面的连线沟通了。

上表中 socket file 的输出栏位有:

活动的UNIX域套接字

  • 1.Proto:套接字所用的协议(通常是unix)。
  • 2.RefCnt:使用数量(也就是通过此套接字连接的进程数)。
  • 3.Flags:显示的标志为SO_ACCEPTON(显示为 ACC), SO_WAITDATA (W) 或 SO_NOSPACE (N)。如果相应的进程等待一个连接请求,那么SO_ACCECPTON用于未连接的套接字。其它标志通常并不重要。
  • 4.Type:套接字使用的一些类型,主要有确认连线的 STREAM 与不需确认的 DGRAM 两种。
    • SOCK_DGRAM:此套接字用于数据报(无连接)模式。
    • SOCK_STREAM:流模式(连接)套接字
    • SOCK_RAW:此套接字用于RAW模式。
    • SOCK_RDM:一种服务可靠性传递信息。
    • SOCK_SEQPACKET:连续分组套接字。
    • SOCK_PACKET:RAW接口使用套接字。
    • UNKNOWN:未知。
  • 5.State:此字段包含以下关键字之一:
    • FREE:套接字未分配。
    • LISTENING:套接字正在监听一个连接请求。除非设置 --listening (-l) 或者 --all (-a) 选项,否则不显示。
    • CONNECTING:套接字正要建立连接。
    • CONNECTED:套接字已连接。
    • DISCONNECTING:套接字已断开。
  • (empty):套接字未连。
    • UNKNOWN:未知!不应当出现这种状态的。
  • 6.PID/Program name:理此套接字的程序进程名和PID。上面关于活动的Internet连接的部分有更详细的信息。
  • 7.Path:相应进程连入套接字时显示路径名。

范例:找出目前系统上已在监听的网络连线及其 PID

[root@ZhangSir ~]# netstat -tlnp
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:34092 0.0.0.0:*       LISTEN 1720/rpc.statd 
tcp        0      0 0.0.0.0:111   0.0.0.0:*       LISTEN 1698/rpcbind 
tcp        0      0 0.0.0.0:22    0.0.0.0:*       LISTEN 2031/sshd 
tcp        0      0 127.0.0.1:631 0.0.0.0:*       LISTEN 1776/cupsd 
tcp        0      0 127.0.0.1:25  0.0.0.0:*       LISTEN 2110/master 
tcp        0      0 :::111             :::*       LISTEN 1698/rpcbind 
tcp        0      0 :::58771           :::*       LISTEN 1720/rpc.statd 
tcp        0      0 :::22              :::*       LISTEN 2031/sshd 
tcp        0      0 ::1:631            :::*       LISTEN 1776/cupsd 
tcp        0      0 ::1:25             :::*       LISTEN 2110/master

dmesg:分析核心产生的信息

系统在启动的时候,核心会去侦测系统的硬件,你的某些硬件到底有没有被捉到,那就与这个时候的侦测有关。 但是这些侦测的过程要不是没有显示在萤幕上,就是很飞快的在萤幕上一闪而逝!而 dmesg 能把核心侦测的信息捉出来。 所有核心侦测的信息,不管是启动时候还是系统运行过程中,反正只要是核心产生的信息,都会被记录到内存中的某个保护区段。

dmesg 这个命令就能够将该区段的信息读出来的!

[root@ZhangSir ~]#dmesg |less
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016
Command line: ro root=/dev/mapper/vg_zhangsir-lv_root nomodeset rd_NO_LUKS LANG=zh_CN.UTF-8 rd_LVM_LV=vg_zhangsir/lv_root rd_NO_MD crashkernel=auto rd_LVM_LV=vg_zhangsir/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
KERNEL supported cpus:
 Intel GenuineIntel
 AMD AuthenticAMD
 Centaur CentaurHauls
Disabled fast string operations
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009ec00 (usable)
 BIOS-e820: 000000000009ec00 - 00000000000a0000 (reserved)
......

vmstat :侦测系统资源变化

vmstat 可以动态的显示系统资源的运行情况,可以侦测『 CPU / 内存 / 磁盘输入输出状态 』等等,如果你想查看系统处于繁忙状态,那你可以使用 vmstat 分析看看。

vmstat 选项

常用选项:

  • -a :使用 inactive/active(活跃与否) 取代 buffer/cache 的内存输出信息;
  • -f :启动到目前为止,系统复制 (fork) 的程序数;
  • -s :将一些事件 (启动至目前为止) 导致的内存变化情况列表说明;
  • -S :后面可以接单位,让显示的数据有单位。例如 K/M 取代 bytes 的容量;
  • -d :列出磁盘的读写总量统计表
  • -p :后面列出分割槽,可显示该分割槽的读写总量统计表 利用 vmstat 甚至可以进行追踪!你可以使用类似『 vmstat 5 』代表每五秒钟刷新一次,且无穷的刷新!直到你按下 [ctrl]-c 为止。如果你想要即时的知道系统资源的运行状态,这个命令就不能不知道! 上面的表格各项栏位的意义基本说明如下:
    • 内存栏位 (procs) 的项目分别为: r :等待运行中的程序数量;b:不可被唤醒的程序数量。这两个项目越多,代表系统越忙碌 (因为系统太忙,所以很多程序就无法被运行或一直在等待而无法被唤醒之故)。
    • 内存栏位 (memory) 项目分别为: swpd:虚拟内存被使用的容量; free:未被使用的内存容量; buff:用于缓冲内存; cache:用于高速缓存。 这部份则与 free 是相同的。
    • 内存置换空间 (swap) 的项目分别为: si:由磁盘中将程序取出的量; so:由于内存不足而将没用到的程序写入到磁盘的 swap 的容量。 如果 si/so 的数值太大,表示内存内的数据常常得在磁盘与主内存之间传来传去,系统效能会很差!
    • 磁盘读写 (io) 的项目分别为: bi:由磁盘写入的区块数量; bo:写入到磁盘去的区块数量。如果这部份的值越高,代表系统的 I/O 非常忙碌!
    • 系统 (system) 的项目分别为: in:每秒被中断的程序次数; cs:每秒钟进行的事件切换次数;这两个数值越大,代表系统与周边设备的沟通非常频繁! 这些周边设备当然包括磁盘、网络卡、时间钟等。
    • CPU 的项目分别为: us:非核心层的 CPU 使用状态; sy:核心层所使用的 CPU 状态; id:闲置的状态; wa:等待 I/O 所耗费的 CPU 状态; st:被虚拟机器 (virtual machine) 所盗用的 CPU 使用状态 (2.6.11 以后才支持)。
最后修改:2016-11-12 21:29:39 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇
登录即可评论哦~

评论列表

还没有人评论哦~赶快抢占沙发吧~