【Linux命令与工具】系统资源查看——free、uname、dmesg以及netstat
free:查看内存的使用情况
用法:
free [-b|-k|-m|-g] [-t]
参数:
-b: 直接输入free时,显示的单位是KB我们可以使用b(bytes), m(MB), k(KB), g(GB) 来显示单位。
-t: 在输出的最终结果中显示物理内存与swap的总量。
常见用法:
Mem: 物理内存(1983MB);
Swap: 虚拟内存(1021MB);
total:总量;
used:已被使用的量;
free:剩余可用的量;
uname: 查看与内核相关的信息
参数:
-a, --all: 所有系统相关的信息,包括下面的数据都会被列出来
-s, --kernel-name: 系统内核名称
-n, --nodename: 打印网络节点主机名
-r, --kernel-release: 内核的版本
-m: 本系统的硬件名称,例如i686或x86_64等;
-p: CPU的类型,与-m类似,只是显示的是CPU的类型
-i: 硬件的平台(ix86)
-o, --operating-system: 打印操作系统
dmesg:显示内核开机的信息
dmesg命令用于打印Linux系统开机启动信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看(print or control the kernel ring buffer)。开机信息亦保存在/var/log/dmesg的文件里。某些硬件设备(比如七号信令卡、语音卡之类)在安装的时候,通常会安装驱动程序(内核模块),会打印一些信息,就可以通过dmesg命令来查看。
因为dmesg命令输出的东西有点多,通常与less/more/tail/grep等命令配合使用。
#输出所有的内核开机时的信息
dmesg | more
#查找开机时候硬盘相关的信息
dmesg | grep -i hd
#查看开始时网卡的信息
dmesg | grep -i eth
netstat:跟踪网络
netstat的输出分为两大部分,分别是网络与系统自己的进程相关性部分。
用法:
netstat -[atunlp]
参数:
-a: 将目前系统上所有的链接、监听、Socket数据都列出来;
-t:列出tcp网络数据包的数据;
-u:列出udp网络数据包的数据;
-n:不列出进程的服务名称,以端口号(port number)来显示;
-l:列出目前正在网络监听(listen)的服务;
-p:列出该网络服务的进程PID。
在上面的结果中,显示了两个部分:
(1)Active Internet connections(w/o servers) :表示网络的连接
Proto:网络的数据包协议,主要分为TCP与UDP数据包。
Recv-Q:非由用户进程连接到此socket的复制的总字节数;
Send-Q:非由远程主机传送过来的acknowledeged总字节数;
LocalAddress:本地的IP端口情况;
ForeignAddress:远程主机的IP端口情况
State:连接状态,主要有建立(ESTABLISED)及监听(LISTEN).
(2)Active UNIX domain sockets(w/o servers): 表示本机上进程间通信的相关的部分
除了网络上的连接之外,其实Linux系统上面的进程是可以接受不同进程所发送来的信息,那就是Linux上面的(socket file)。socket file可以沟通两个进程之间的信息,因此进程可以取得对方传送过来的数据。由于有socket file,因此类似X Window这种需要网络连接的软件,目前新版的distribution就以socket来进行窗口界面的联机通信了。上面的socket file输出文件字段有:
Proto:一般就是unix;
RefCnt:连接到此socket的进程数量
Flags:连接的标识;
Type:socket访问的类型。主要有确认连接的STREAM与不需确认的DGARM两种;
State:若为CONNECTED表示多个进程之间已经建立连接;
Path:连接到此socket的相关程序的路径,或者是相关数据输出的路径。
参考文献:
1. 《鸟哥的Linux私房菜》基础学习篇(第三版) 人民邮电出版社 17.3.4