前言
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善这个操作系统,使其最大化地适应用户的需要。那么,Linux服务器基本信息查看你又了解多少?
Linux服务器基本信息通常包括如下几方面:
- CPU信息
- 内存使用信息
- 硬盘使用情况
- 服务器负载状况
- 其它
服务器基本信息详解
话不多说,直接开始介绍吧。
获取CPU信息
1、获取CPU的详细信息
执行命令行如下:
# cat /proc/cpuinfo
结果:
具有相同core id的CPU是同一个core的超线程。
具有相同"physical id"的CPU是同一个CPU封装的线程或核心。
- 显示物理CPU个数
执行命令行如下:
# cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
结果:
- 显示物理CPU核数
执行命令行如下:
# cat /proc/cpuinfo |grep "cpu cores"|uniq
结果:
- 显示逻辑CPU个数
执行命令行如下:
# cat /proc/cpuinfo|grep "processor"|wc -l
结果:
理论上不使用超线程技术的前提下有如下结论:
物理CPU个数*物理CPU核数=逻辑CPU个数
配置服务器的应用时,以逻辑CPU个数为准
内存使用信息
1、获取服务器内存使用的详细信息
执行命令行如下:
# free -h
结果:
total: 内存总量
used: 已使用
free: 未使用
shared: 多进程共享的内存总量
buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)
cached: 用于文件内容的缓冲
available: 可用内存
硬盘使用情况
1、查看硬盘以及分区信息
执行命令行如下:
# fdisk -l
结果:
块设备名称为:/dev/sda
设备的大小为:107.4GB,这个数字不是特别精确
- 查看文件系统的磁盘空间占用情况
执行命令行如下:
# df -h
结果:
- 查看文件系统的磁盘空间占用情况
执行命令行如下:
# iostat -d -x -k 10 2
d显示磁盘状态,-x显示跟io相关的扩张数据,-k以KB为单位,10表示每隔10秒刷新一次,2表示刷新2次,默认一直刷新
结果:
参数说明:
rrqm/s: 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)
wrqm/s: 每秒进行merge的写操作数
r/s: 每秒完成的读I/O设备的次数
w/s: 每秒完成的写I/O设备的次数
rkB/s: 每秒读取多少KB
wkB/s: 每秒写多上KB
avgrq-sz: 平均每次设备I/O操作的数据大小(扇区)
avgqu-sz: 平均I/O队列长度
await: 平均每次设备I/O操作的等待时间ms
svctm: 平均每次设备I/O操作时间ms
%util: 一秒钟有百分之多上时间用于I/O操作
平时只要关注%util,await两个参数即可
%util越接近100%,说明产生的I/O请求越多,越容易满负荷
await 取决于svctm,最好低于5ms,如果大于5ms说明I/O压力大,可以考虑更换响应速度更快的硬盘.
服务器负载状况
1、查看服务器平均负载
执行命令行如下:
# uptime
结果:
当前时间 17:23:11
系统已运行的时间 up 5:25
当前在线用户 1 user
平均负载:0.01, 0.03, 0.05,最近1分钟、5分钟、15分钟系统的负载
一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
2、查看登录者的信息及他们的行为
执行命令行如下:
# w
结果:
当前时间 17:23:11
系统已运行的时间 up 5:25
当前在线用户 1 user
平均负载:0.01, 0.03, 0.05,最近1分钟、5分钟、15分钟系统的负载
USER:登录用户名
TTY:登录后系统分配的终端号
FROM:远程主机名,从哪登录的
LOGIN@:何时登录
IDLE:用户空闲时间
JCPU:和该终端连接的所有进程占用时间(包括正在运行的后台作业占用的时间)
PCPU:当前进程所占用时间
WHAT:当前正在运行进程的命令行
3、查看linux的系统状况
执行命令行如下:
# top
结果:
一、top前5行统计信息
第1行:top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30
第1行是任务队列信息,其参数如下:
内容 含义
05:43:27 表示当前时间
up 4:52 系统运行时间 格式为时:分
2 users 当前登录用户数
load average: 0.58, 0.41, 0.30 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第2行:Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie
第3行:%Cpu(s): 37.0 us, 3.7 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第2、3行为进程和CPU的信息
当有多个CPU时,这些内容可能会超过两行,其参数如下:
内容 含义
159 total 进程总数
1 running 正在运行的进程数
158 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
37.0 us 用户空间占用CPU百分比
3.7 sy 内核空间占用CPU百分比
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
59.3 id 空闲CPU百分比
0.0 wa 等待输入输出的CPU时间百分比
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
0.0 si 软中断(Software Interrupts)占用CPU的百分比
0.0 st
第4行:KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers
第5行:KiB Swap: 3905532 total, 267544 used, 3637988 free. 617312 cached Mem
第4、5行为内存信息
其参数如下:
内容 含义
KiB Mem: 1530752 total 物理内存总量
1481968 used 使用的物理内存总量
48784 free 空闲内存总量
70988 buffers(buff/cache) 用作内核缓存的内存量
KiB Swap: 3905532 total 交换区总量
267544 used 使用的交换区总量
3637988 free 空闲交换区总量
617312 cached Mem 缓冲的交换区总量。
3156100 avail Mem 代表可用于进程下一次分配的物理内存数量
上述最后提到的缓冲的交换区总量,这里解释一下,所谓缓冲的交换区总量,即内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
计算可用内存数有一个近似的公式:
第四行的free + 第四行的buffers + 第五行的cached
二、进程信息
列名 含义
PID 进程id
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志
逻辑四核CPU,所以这里如果超过了100%,即4个cpu累加,就会影响性能!!!
4、监控Linux系统的整体性能
执行命令行如下:
# vmstat 1 8
(#每秒1次,共八次)
结果:
参数介绍:
procs
r: 等待运行的进程数
b: 处于非中断睡眠状态的进程数
memory
swpd: 虚拟内存使用情况(KB)
free: 空闲内存(KB)
swap
si: 从磁盘交换到内存的交换页数量
so: 从内存交换到磁盘的交换页数量
io
bi: 发送到设备的块数(块/s)
bo: 从块设备接收到的块数(块/s)
system
in: 每秒中断数
cs: 每秒的环境上下文切换数
cpu:(cpu总使用的百分比)
us: cpu使用时间
sy: cpu系统使用时间
id: 闲置时间
注意:
标准情况下r和b的值应为:r<5,b约为0.
如果us+sy<70%,系统性能较好
如果us+sy>85,系统性能糟糕.
5、查看系统平均负载
执行命令行如下:
# cat /proc/loadavg
结果:
除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID
其它
1、查看所连接的设备或终端
执行命令行如下:
# tty
结果:
2、查看最近一个月用户登录服务器的情况
执行命令行如下:
# last
结果:
3、显示自己初次登录到系统中的用户名
执行命令行如下:
# logname
结果:
4、查看所连接的设备或终端
执行命令行如下:
# who am i
结果:
root: 系统中的用户名
pts/1: 登录终端
2022-03-30 14:28 (172.16.1.13): 登录时间
5、显示所有用户的所有信息
执行命令行如下:
# who -aH
结果:
USER 用户登录
LINE 用户登录使用终端
TIME 用户登录时间
LDIE 用户空闲时间
PID 用户登录shell的进程ID
(完)