32
1.free查看内存的使用情况
[root@study ~]# free [-b|-k|-m|-g|-h] [-t] [-s N -c N]
选项与参数:
-b :直接输入 free 时,显示的单位是 KBytes,我们可以使用 b(
Bytes), m(MBytes) k(KBytes), 及 g(GBytes) 来显示单位喔!也可以直接让系统自己指定单位 (
-h)
-t :在输出的最终结果,显示实体内存与 swap 的总量。
-s :可以让系统每几秒钟输出一次,不间断的一直输出的意思!对于系统观察挺有效!
-c :与 -s 同时处理~让 free 列出几次的意思~
范例一:显示目前系统的内存容量
[root@study ~]# free -m
total used free shared buff/cache available
Mem: 2848 346 1794 8 706 2263
Swap: 1023 0 1023
就会出现上面的信息。Mem 那一行显示的是实体
内存的量, Swap 则是内存交换空间的量。 total 是总量, used 是已被使用的量, free 则 是剩余可用的量。 后面的 shared/buffers/cached 是在已被使用的量当中,用来作为缓冲 及高速缓存的量,这些 shared/buffers/cached 的用量中,在系统比较忙碌时, 可以被释出
而继续利用!因此后面就有一个 available (可用的) 数值!
我们可以发现这部测试机根本没有什么特别的服务,但
是竟然有 706MB 左右的 cache 耶!
因为鸟哥在测试过程中还是有读/写/执行很多的文件
嘛!这些文件就会被系统暂时高速缓存下来,等待下次运行时可以更快速的取出意!
也就是说,系统是“很有效率的将所有的内存用光光”,目的是为了让系统的存取性能加速 啦!
2. uname:查阅系统与核心相关信息
[root@study ~]# uname [-asrmpi]
选项与参数:
-a :所有系统相关的信息,包括下面的数据都会被列出来;
-s :系统核心名称
-r :核心的版本
-m :本系统的硬件名称,例如 i686 或 x86_64 等;
-p :CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型!
-i :硬件的平台 (
ix86)
范例一:输出系统的基本信息
[root@study ~]# uname -a
Linux study.centos.vbird 3.10.0-2
3.uptime:观察系统启动时间与工作负载
这个指令很单纯呢!就是显示出目前系统已经开机多久的时间,以及 1, 5, 15 分钟
的平均负载就是了。还记得 top 吧?没错啦!这个 uptime 可以显示出 top 画面的最上面一
行!
[root@study ~]# uptime
02:35:27 up 7:48, 3 users, load average: 0.00, 0.01, 0.05
# top 这个指令已经谈过相关信息,不再聊!
这个 netstat 也是挺好玩的,其实这个指令比较常被用在网络的监控方面
在程序管理方面也是需要了解的啦! netstat 的输出
分为两大部分,分别是网络与系统自己的程序相关性部分:
[root@study ~]# netstat -[atunlp]
选项与参数:
-a :将目前系统上所有的连线、监听、Socket 数据都列出来
-t :列出 tcp 网络封包的数据
-u :列出 udp 网络封包的数据
-n :不以程序的服务名称,以埠号 (
port number) 来显示;
-l :列出目前正在网络监听 (
listen) 的服务;-p :列出该网络服务的程序 PID
范例一:列出目前系统已经创建的网络连线与 unix socket 状态
[root@study ~]# netstat
Active Internet connections (
w/o servers) <==与网络较相关的部分
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 172.16.15.100:ssh 172.16.220.234:48300 ESTABLISHED
Active UNIX domain sockets (
w/o servers) <==与本机的程序自己的相关性(非网络)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1902 @/org/freedesktop/systemd1/notify
unix 2 [ ] DGRAM 1944 /run/systemd/shutdownd
....(中间省略)....
unix 3 [ ] STREAM CONNECTED 25425 @/tmp/.X11-unix/X0
unix 3 [ ] STREAM CONNECTED 28893
unix 3 [ ] STREAM CONNECTED 21262
显示了两个部分,分别是网络的连线以及 linux 上面的 socket
程序相关性部分。 我们先来看看网际网络连线情况的部分:
Proto :网络的封包协定,主要分为 TCP 与 UDP 封包
Recv-Q:非由使用者程序链接到此 socket 的复制的总 Bytes 数;
Send-Q:非由远端主机传送过来的 acknowledged 总 Bytes 数;
Local Address :本地端的 IP:port 情况
Foreign Address:远端主机的 IP:port 情况
State :连线状态,主要有创建(ESTABLISED)及监听(LISTEN)
我们看上面仅有一条连线的数据,他的意义是:“通过 TCP 封包的连线远端的 172.16.220.234:48300 连线到本地端的 172.16.15.100:ssh ,这条连线状态是创建 (ESTABLISHED) 的状态!
socket file 可以沟通两个程序之间的信息,因此程序可以取得对方传送过来的数据。
上表中 socket file 的输出字段有:
Proto :一般就是 unix 啦;
RefCnt:连接到此 socket 的程序数量;
Flags :连线的旗标;
Type :socket 存取的类型。主要有确认连线的 STREAM 与不需确认的 DGRAM 两 种;
State :若为 CONNECTED 表示多个程序之间已经连线创建。
Path :连接到此 socket 的相关程序的路径!或者是相关数据输出的路径
范例二:找出目前系统上已在监听的网络连线及其 PID
[root@study ~]# 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:22 0.0.0.0:* LISTEN 1326/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2349/master
tcp6 0 0 :::22 :::* LISTEN 1326/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2349/master
udp 0 0 0.0.0.0:123 0.0.0.0:* 751/chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 751/chronyd
udp 0 0 0.0.0.0:57808 0.0.0.0:* 743/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 743/avahi-daemon: r
udp6 0 0 :::123 :::* 751/chronyd
udp6 0 0 ::1:323 :::* 751/chronyd
# 除了可以列出监听网络的接口与状态之外,最后一个字段还能够显示此服务的
# PID 号码以及程序的指令名称喔!例如上头的 1326 就是该 PID
范例三:将上述的 0.0.0.0:57808 那个网络服务关闭的话?
[root@study ~]# kill -9 743
[root@study ~]# killall -9 avahi-daemon
5.dmesg :分析核心产生的讯息
范例一:输出所有的核心开机时的信息
[root@study ~]# dmesg | more
范例二:搜寻开机的时候,硬盘的相关信息为何?[root@study ~]# dmesg | grep -i vda
[ 0.758551] vda: vda1 vda2 vda3 vda4 vda5 vda6 vda7 vda8 vda9
[ 3.964134] XFS (vda2): Mounting V4 Filesystem
....(下面省略)....
6.vmstat :侦测系统资源变化
[root@study ~]# vmstat [-a] [延迟 [总计侦测次数]] <==CPU/内存等信息
[root@study ~]# vmstat [-fs] <==内存相关
[root@study ~]# vmstat [-S 单位] <==设置显示数据的单位
[root@study ~]# vmstat [-d] <==与磁盘有关
[root@study ~]# vmstat [-p 分区] <==与磁盘有关
选项与参数:
-a :使用 inactive/active(活跃与否) 取代 buffer/cache 的内存输出信息;
-f :开机到目前为止,系统复制 (
fork) 的程序数;
-s :将一些事件 (开机至目前为止) 导致的内存变化情况列表说明;
-S :后面可以接单位,让显示的数据有单位。例如 K/M 取代 Bytes 的容量;
-d :列出磁盘的读写总量统计表
-p :后面列出分区,可显示该分区的读写总量统计表
范例一:统计目前主机 CPU 状态,每秒一次,共计三次!
[root@study ~]# vmstat 1 3
procs ------------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1838092 1504 722216 0 0 4 1 6 9 0 0 100 0 0
0 0 0 1838092 1504 722200 0 0 0 0 13 23 0 0 100 0 0
0 0 0 1838092 1504 722200 0 0 0 0 25 46 0 0 100 0 0
利用 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 以后才支持)。
范例二:系统上面所有的磁盘的读写状态
[root@study ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
vda 21928 0 992587 47490 7239 2225 258449 13331 0 26
sda 395 1 3168 213 0 0 0 0 0 0
sr0 0 0 0 0 0 0 0 0 0 0
dm-0 19139 0 949575 44608 7672 0 202251 16264 0 25
dm-1 336 0 2688 327 0 0 0 0 0 0
md0 212 0 1221 0 14 0 4306 0 0 0
dm-2 218 0 9922 565 54 0 4672 128 0 0
dm-3 179 0 957 182 11 0 4306 68 0 0