在Linux服务器上进行常规巡检是确保服务器稳定性和安全性的重要举措之一。以下是一些常用的巡检命令和方法:
1.查看系统信息1.1系统信息显示
命令:uname-a
[root@linux100 ~]# uname -a
Linux linux100 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 12 10:36:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
复印下来的信息说明:
数组
对应复印的值
说明
操作系统类型-OperatingSystemType
Linux
显示操作系统类型,如Linux、Unix等。
主机名-Hostname
linux100
显示当前主机的名称
内核版本-KernelVersion
4.15.0-70-generic
显示当前系统正在使用的内核版本号
操作系统发行版版本号-OSDistributionVersion
#79
显示操作系统发行版的版本号。
操作系统发行版-OSDistribution
Ubuntu
显示操作系统的发行版信息,如Ubuntu、CentOS等。
操作系统构架-Architecture
x86_64
显示操作系统的构架,如x86_64、i386等
1.2显示操作系统发行版信息
命令:cat/etc/*release*
1.3通过LSB工具查询Linux发行版信息
lsb_release是一个LinuxStandardBase(LSB)的工具,用于显示Linux发行版的信息。它一般用于查询和显示Linux发行版的版本号、发行代号、描述等信息。
# CentOS安装lsb_release包
[root@linux100 ~]# sudo yum install redhat-lsb
# 查看Linux版本
[root@linux100 ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
1.4通过hostnamectl来查询Linux系统信息
hostnamectl是一个用于管理系统主机名(hostname)的命令行工具,它一般在Linux系统中提供。它可以拿来查询、设置和管理系统的主机名及其相关的信息。
[root@linux100 ~]# hostnamectl
Static hostname: linux100
Icon name: computer-vm
Chassis: vm
Machine ID: fb9d8715fff144aca93accad42cec460
Boot ID: 49ec505cca3d4052a6115b36a670e7e6
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.25.1.el7.x86_64
Architecture: x86-64
1.5显示系统运行时间、负载情况
命令:uptime
复印下来的信息说明:
数组对应复印的值说明当前时间10:52:57显示当前系统时间。系统运行时间up7min显示系统自下次启动以来的运行时间。一般以天、小时、分钟的格式显示。up7min表示运行了7分钟。当前登入用户数1user当前登入系统的用户个数,1user表示1人平均负载loadaverage:0.05,0.07,0.05显示系统在过去1分钟、5分钟、15分钟内的平均负载。负载是指系统处于运行和等待状态的进程数量的平均值。值显示该系统处于轻负载状态。
1.6列举已加载的内核模块
命令:lsmod
2.资源利用情况2.1实时查看系统资源使用情况
命令:top
复印下来的信息说明:
数组对应复印的值说明第一行:
总体信息
top当前时间top-11:56:43显示当前系统时间。系统运行时间up1:10显示系统自下次启动以来的运行时间。一般以天、小时、分钟的格式显示。up1:10表示运行了1小时10分钟。当前登入用户数1user当前登入系统的用户个数,1user表示1人平均负载loadaverage:0.00,0.01,0.05显示系统在过去1分钟、5分钟、15分钟内的平均负载。负载值反映了系统在单位时间内处于可运行状态的平均进程数。第二行:
任务统计
Tasks系统中各种任务数目的统计信息Tasks:108total,1running,107sleeping,0stopped,0zombie该系统总共有108个任务,其中有1个运行中的任务,107个睡眠中的任务,0个已停止的任务,0个僵尸进程。第三行:
CPU使用情况
%Cpu(s)us0.3us用户空间占用CPU的比率sy0.3sy内核空间占用CPU的比率ni0.0ni优先级较低的进程用户态占用CPU的比率id99.3idCPU空闲的比率wa0.0waCPU等待I/O完成的比率hi0.0hi硬中断占用CPU的比率si0.0si软中断占用CPU的比率st0.0st被虚拟机偷取的时间的比率第四行:
显存使用情况
KiBMem总显存995664total系统总可用的化学显存量空闲显存491532free当前早已被使用的显存量已用显存175596used当前可用但未被使用的显存量缓存/缓冲区328536buff/cache被系统用作文件缓存和缓冲区的显存量第五行:
系统交换空间使用情况
KiBSwap总交换空间2097148total系统总可用的交换空间大小空闲交换空间2097148free当前可用但未被使用的交换空间大小已用交换空间0used当前早已被使用的交换空间大小列表数组说明PID668进程IDUSERroot用户PR20优先级(Priority),表示进程的静态优先级。Linux进程的优先级范围是-20到19,数值越小红旗linux,优先级越高。NI0优先级值(NiceValue)linux 安装,表示进程的动态优先级。通过renice命令可以调整进程的优先级值,数值越小,优先级越高。VIRT273192虚拟显存(VirtualMemory),表示进程当前使用的虚拟显存大小,以千字节(KB)为单位。虚拟显存包括进程使用的数学显存(RES)和交换空间。RES4868化学显存(ResidentMemory)linux加载服务命令,表示进程当前使用的数学显存大小,以千字节(KB)为单位。化学显存是指进程实际占用的显存空间。SHR3736共享显存(SharedMemory),表示进程使用的共享显存的大小,以千字节(KB)为单位。共享显存是多个进程之间共享的显存区域,一般用于进程之间的通讯。SS当前进程状态(State),常见的状态包括:R(运行)、S(睡眠)、D(不可中断睡眠)、Z(僵尸)、T(停止)、20%则表示CPU运行流畅,。还有us过低就是用户进出优化,sy过低则须要提升服务器性能,wa过低就要关注c盘io了。
按shift+p或则小写的P可以将cpu占用情况由大到小排列下来,找到占用cpu最大的那种线程,即可导致CPU过大的线程。
2.2查看运行显存使用情况
命令:
free-g(单位GB)
free-m(单位MB)
复印下来的信息说明:
数组说明total显存总大小used使用的显存free不仅buff/cache剩余的显存Shared共享显存Buff/cact缓冲、缓存区显存数available真实剩余的可用显存数
2.3查看c盘空间使用情况
命令:df-h
查看发觉根挂载点使用率100%,明明清除了大文件,但还是使用率100%,这就有可能是大量进程在占用显存使用率。
解决办法:
通过执行命令lsof-n|grepdeleted,查看早已删掉的文件,空间没有释放,kill掉pid。
扩充:
检测当前目录下,目录层级深度为1,空间占用情况:
du-h-x--max-depth=1
2.4查看c盘IO
常用命令格式:iostat[参数][时间][次数]
比如:iostat-d-k-x110
命令参数说明如下:
命令中间的参数参数说明-c显示CPU使用情况-d显示c盘使用情况-k以K为单位显示-m以M为单位显示-N显示c盘阵列(LVM)信息-n显示NFS使用情况-p可以报告出每块c盘的每位分区的使用情况-t显示终端和CPU的信息-x显示详尽信息
[user1@Test_Server ~]$ iostat -x
Linux 3.10.0-693.2.2.el7.x86_64 (jellythink) 01/05/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.83 0.00 0.31 0.09 0.00 97.77
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.03 0.78 0.24 1.38 12.64 20.67 41.01 0.02 10.98 55.50 3.17 0.71 0.12
复印下来的信息说明:
数组对应的值说明avg-cpu显示CPU的平均使用情况%user1.83用户进程占用CPU的比率。这包括用户应用程序和用户级别的进程。%nice0.00优先级较高的用户进程占用CPU的比率。这种进程的优先级被提高了。%system0.31系统进程占用CPU的比率。这包括内核级别的进程。%iowait0.09等待I/O操作完成占用CPU的比率。假如CPU大部分时间都在等待I/O操作完成,这个值会比较高。%steal0.00被虚拟化环境中其他虚拟机“偷走”的CPU时间的比率。这个值主要用于虚拟化环境。%idle97.77CPU空闲时间的比率。这是CPU未被使用的时间某个设备在系统的IO性能和负载情况Devicevda设备名称,表示正在监视的c盘或则其他IO设备的名称。rrqm/s0.03每秒向该设备发出的读恳求并在恳求队列中排队的恳求数(合并恳求)wrqm/s0.78每秒向该设备发出的写恳求并在恳求队列中排队的恳求数(合并恳求)r/s0.24每秒从设备读取的块数(读取速度)w/s1.38每秒向设备写入的块数(写入速度)rkB/s12.64每秒从设备读取的数据量(以MB为单位)wkB/s20.67每秒向设备写入的数据量(以MB为单位)avgrq-sz41.01平均每位IO恳求的大小(块大小)avgqu-sz0.02平均IO恳求在设备队列中的宽度await10.98平均IO恳求的等待时间,包括排队时间和服务时间r_await55.50平均读取IO恳求的等待时间w_await3.17平均写入IO恳求的等待时间svctm0.71平均IO恳求的服务时间%util0.12设备的借助率,即设备处于活动状态的时间占总时间的比率
可通过观察一下数组的数值来了解系统的CPU负载情况:
假如%user和%system的值比较高,说明系统主要深受用户进程和系统进程的影响;
假如%iowait的值较高,说明系统大部分时间都在等待I/O操作完成;
假如%idle的值接近零,说明系统的CPU资源被充分借助,而假如%idle的值较高,则说明系统CPU有较多空闲时间。
从%util可知,该设备在1秒中有百分之几的时间用于IO操作。
2.5显示当前系统网路联接和网路窃听情况
命令:netstat-tulnp
复印下来的信息说明:
数组说明Proto显示合同类型,如TCP或UDPRecv-Q表示接收队列中的未读取字节数Send-Q表示发送队列中的未发送字节数。LocalAddress表示本地地址和端标语,即服务器正在窃听的地址和端口。ForeignAddress表示远程地址和端标语,即与本地地址构建的联接的远程主机地址和端口。State表示联接状态,如ESTABLISHED(已构建)、LISTEN(窃听)、TIME_WAIT(等待关掉)等。PID/Programname表示与联接或窃听端口相关联的进程的PID和程序名称
由前面信息可知:
是否构建联接:通过State可知服务器是否与顾客端构建了联接;
窃听端口:通过LocalAddress列中,可以找到正在窃听的端标语以及关联的IP地址,这种是服务器正在窃听的端口
进程关联:通过PID/Programname列,可以查看与网路联接或窃听端口相关联的进程的PID和程序名称,因而找到什么进程在使用这种网路资源。
2.6显示当前系统上运行的进程
命令:psaux
复印下来的信息说明:
数组说明USER进程的用户名,表示该进程是由那个用户启动的PID进程ID,惟一标示系统中的每位进程%CPUCPU使用率,表示进程占用CPU的比率%MEM显存使用率,表示进程占用显存的比率VSZ虚拟显存大小(VirtualSize),表示进程虚拟显存的大小,以KB为单位RSS常驻显存集(ResidentSetSize),表示进程实际使用的化学显存大小,以KB为单位TTY控制终端,表示进程关联的控制终端STAT进程状态linux加载服务命令,包括运行状态(R)、睡眠状态(S)、僵尸状态(Z)等START进程启动时间,表示进程启动的时间点TIMECPU时间,表示进程累计占用CPU的时间COMMAND进程的命令行,表示启动进程时使用的命令和参数
扩充:
1)只显示包含指定进程名的行:psaux|grep
2)ps-ef和psaux三者都可用于列举系统的所有进程信息,但psaux更适宜快速查看当前系统中的进程情况。
3.查看日志3.1通过journalctl命令查看系统日志
命令:journalctl
3.2通过tail查看系统日志
查看日志文件多少行代码:tail-n[行数][日志文件]
4.服务状态4.1查看指定服务的状态
命令:systemctlstatus
例如查看防火墙的状态:
4.2查看已启用的服务
命令:systemctllist-unit-files--state=enabled
5.网路状态5.1显示网路插口信息
命令:ifconfig或ipaddr
5.2测试网路连通性
命令格式:ping
假如有类似以上的输出,则网路通畅了。
数组说明icmp_seq数据包的序列号,每位数据包都有一个惟一的序列号,以易于辨识ttl数据包的生存时间(TimetoLive),亦称为跳数。它指示了数据包在网路中可以传递的最山路由器跳数。假如ttl值超过0而数据包还未抵达目标,这么数据包会被遗弃time往返时间(Round-TripTime,RTT),表示从发送数据包到收到回应数据包所耗费的时间,单位是微秒(ms)
5.3跟踪数据包的路由路径
命令格式:traceroute
里面示例中,显示了从本地主机到目标主机(192.168.243.102)经过的1个路由器或中间节点的信息,包括它们的IP地址(192.168.243.102)、主机名(linux102)、以及数据包往返时间RTT(0.161ms0.132ms0.097ms)。
5.4查看网路IO
命令:nload
nload默认分为上下两块:
上半部份:Incoming,是步入网卡的流量;
下半部份:Outgoing,是从这块网卡出去的流量。
参数详情表:
参数描述Curr当前流量Avg平均流量Min最小流量Max最大流量Ttl总和流量
Curr当前网速,MAX最大网速。当curr接近Max时为负荷比较高的状态
6.检测安全性6.1查看当前开放的网路联接,检测是否有异常联接
命令:ss-tulwn
复印下来的信息说明:
数组说明Netid显示网路标示符,表示套接字类型。常见的Netid值有:*tcp:表示TCP合同,用于传输可靠的、面向联接的数据流。*udp:表示UDP合同,用于传输不可靠的、面向数据报的数据。*raw:表示原始套接字(RawSocket),容许应用程序直接访问网路层的数据包。*icmp:表示ICMP合同,用于在IP网路上发送控制消息。*udplite:表示UDPLite合同,类似于UDP,但提供了部份数据包校准和的功能。State显示套接字的状态。常见的状态包括LISTEN(正在窃听传入联接)、ESTAB(套接字已构建联接)、CLOSED(套接字已关掉)、TIME-WAIT(等待关掉的联接的套接字)等Recv-Q接收队列中的字节数Send-Q发送队列中的字节数LocalAddress:Port本地地址和端标语PeerAddress远程地址和端标语
7.其他7.1查看Oracle数据库资源使用情况
按照以下sql来查询表空间使用情况:
SELECT a.tablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
(total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (
SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name
) a,(
SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name
) b
WHERE a.tablespace_name = b.tablespace_name;
假如表空间的使用率超过了80%(自定义预警值)的时侯,则须要通过清除个别表数据来释放空间,或进行表空间扩充。