前言

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善这个操作系统,使其最大化地适应用户的需要。那么,Linux服务器基本信息查看你又了解多少?

Linux服务器基本信息通常包括如下几方面:

  • CPU信息
  • 内存使用信息
  • 硬盘使用情况
  • 服务器负载状况
  • 其它

服务器基本信息详解

话不多说,直接开始介绍吧。

获取CPU信息

1、获取CPU的详细信息

执行命令行如下:

# cat /proc/cpuinfo

结果:

 

具有相同core id的CPU是同一个core的超线程

具有相同"physical id"的CPU是同一个CPU封装的线程或核心

  1. 显示物理CPU个数

执行命令行如下:

# cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l

结果:

 

  1. 显示物理CPU

执行命令行如下:

# cat /proc/cpuinfo |grep "cpu cores"|uniq

结果:

  1. 显示逻辑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,这个数字不是特别精确

  1. 查看文件系统的磁盘空间占用情况

执行命令行如下:

# df -h

结果:

  1. 查看文件系统的磁盘空间占用情况

执行命令行如下:

# 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

                            (完)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐