百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

【收藏】Linux服务器常用巡检命令

ahcoder 2025-02-13 10:56 12 浏览

在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


打印出来的信息说明:

字段

对应打印的值

说明

操作系统类型 - Operating System Type

Linux

显示操作系统类型,如Linux、Unix等。

主机名 - Hostname

linux100

显示当前主机的名称

内核版本 - Kernel Version

4.15.0-70-generic

显示当前系统正在使用的内核版本号

操作系统发行版版本号 - OS Distribution Version

#79

显示操作系统发行版的版本号。

操作系统发行版 - OS Distribution

Ubuntu

显示操作系统的发行版信息,如Ubuntu、CentOS等。

操作系统架构 - Architecture

x86_64

显示操作系统的架构,如x86_64、i386等

1.2 显示操作系统发行版信息

命令:cat /etc/*release*

1.3 通过LSB工具查询Linux发行版信息

lsb_release是一个Linux Standard Base(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显示当前系统时间。系统运行时间up 7 min显示系统自上次启动以来的运行时间。通常以天、小时、分钟的格式显示。up 7 min表示运行了7分钟。当前登录用户数1 user当前登录系统的用户个数,1user表示1人平均负载load average: 0.05, 0.07, 0.05显示系统在过去1分钟、5分钟、15分钟内的平均负载。负载是指系统处于运行和等待状态的进程数目的平均值。值显示该系统处于轻负载状态。

1.6 列出已加载的内核模块

命令:lsmod

2.资源利用情况

2.1 实时查看系统资源使用情况

命令:top

打印出来的信息说明:


字段对应打印的值说明第一行:
总体信息
top当前时间top - 11:56:43显示当前系统时间。系统运行时间up 1:10显示系统自上次启动以来的运行时间。通常以天、小时、分钟的格式显示。up 1:10表示运行了1小时10分钟。当前登录用户数1 user当前登录系统的用户个数,1user表示1人平均负载load average: 0.00, 0.01, 0.05显示系统在过去1分钟、5分钟、15分钟内的平均负载。负载值反映了系统在单位时间内处于可运行状态的平均进程数。第二行:
任务统计
Tasks系统中各类任务数量的统计信息Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie该系统总共有108个任务,其中有1个运行中的任务,107个睡眠中的任务,0个已停止的任务,0个僵尸进程。第三行:
CPU使用情况
%Cpu(s)us0.3 us用户空间占用CPU的百分比sy0.3 sy内核空间占用CPU的百分比ni0.0 ni优先级较低的进程用户态占用CPU的百分比id99.3 idCPU空闲的百分比wa0.0 waCPU等待I/O完成的百分比hi0.0 hi硬中断占用CPU的百分比si0.0 si软中断占用CPU的百分比st0.0 st被虚拟机偷取的时间的百分比第四行:
内存使用情况
KiB Mem总内存995664 total系统总可用的物理内存量空闲内存491532 free当前已经被使用的内存量已用内存175596 used当前可用但未被使用的内存量缓存/缓冲区328536 buff/cache被系统用作文件缓存和缓冲区的内存量第五行:
系统交换空间使用情况
KiB Swap总交换空间2097148 total系统总可用的交换空间大小空闲交换空间2097148 free当前可用但未被使用的交换空间大小已用交换空间0 used当前已经被使用的交换空间大小列表字段说明PID668进程IDUSERroot用户PR20优先级(Priority),表示进程的静态优先级。Linux进程的优先级范围是-20到19,数值越小,优先级越高。NI0优先级值(Nice Value),表示进程的动态优先级。通过renice命令可以调整进程的优先级值,数值越小,优先级越高。VIRT273192虚拟内存(Virtual Memory),表示进程当前使用的虚拟内存大小,以千字节(KB)为单位。虚拟内存包括进程使用的物理内存(RES)和交换空间。RES4868物理内存(Resident Memory),表示进程当前使用的物理内存大小,以千字节(KB)为单位。物理内存是指进程实际占用的内存空间。SHR3736共享内存(Shared Memory),表示进程使用的共享内存的大小,以千字节(KB)为单位。共享内存是多个进程之间共享的内存区域,通常用于进程之间的通信。SS当前进程状态(State),常见的状态包括:R(运行)、S(睡眠)、D(不可中断睡眠)、Z(僵尸)、T(停止)、<(高优先级)、N(低优先级)、+(位于前台)、L(锁住页)、s(会话领导者)、l(多线程)。%CPU0.3CPU使用率%MEM0.5内存使用率TIME+0:06.98运行时间COMMANDvmtoolsd进程名称

具体查看参数:

第一行load average(CPU负载):三个参数分别指前1分钟、前5分钟、前15分钟的负载,数值越高负载越高,对比数值在增加的话则表明CPU负载越来越高。

第三行%Cpu(s):看id的数值>20%则表示CPU运行流畅,<20%则表示CPU负载过重。还有us过高就是用户进出优化,sy过高则需要提高服务器性能,wa过高就要关注磁盘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 查看磁盘空间使用情况

命令:df -h

查看发现根挂载点使用率100%,明明清理了大文件,但还是使用率100%,这就有可能是大量进程在占用内存使用率。

解决办法:

通过执行命令 lsof -n |grep deleted ,查看已经删除的文件,空间没有释放,kill掉pid。

扩展:

检查当前目录下,目录层级深度为1,空间占用情况:

du -h -x --max-depth=1

2.4 查看磁盘IO

常用命令格式:iostat [参数] [时间] [次数]

例如:iostat -d -k -x 1 10

命令参数说明如下:

命令中间的参数参数说明-c显示CPU使用情况-d显示磁盘使用情况-k以K为单位显示-m以M为单位显示-N显示磁盘阵列(LVM) 信息-n显示NFS使用情况-p可以报告出每块磁盘的每个分区的使用情况-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设备名称,表示正在监视的磁盘或者其他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可知,该设备在一秒中有百分之几的时间用于IO操作。

2.5 显示当前系统网络连接和网络监听情况

命令:netstat -tulnp

打印出来的信息说明:

字段说明Proto显示协议类型,如TCP或UDPRecv-Q表示接收队列中的未读取字节数Send-Q表示发送队列中的未发送字节数。Local Address表示本地地址和端口号,即服务器正在监听的地址和端口。Foreign Address表示远程地址和端口号,即与本地地址建立的连接的远程主机地址和端口。State表示连接状态,如ESTABLISHED(已建立)、LISTEN(监听)、TIME_WAIT(等待关闭)等。PID/Program name表示与连接或监听端口相关联的进程的PID和程序名称

由上面信息可知:

是否建立连接 :通过State可知服务器是否与客户端建立了连接;

监听端口 :通过Local Address列中,可以找到正在监听的端口号以及关联的IP地址,这些是服务器正在监听的端口

进程关联 :通过PID/Program name列,可以查看与网络连接或监听端口相关联的进程的PID和程序名称,从而找到哪些进程在使用这些网络资源。

2.6 显示当前系统上运行的进程

命令:ps aux

打印出来的信息说明:

字段说明USER进程的用户名,表示该进程是由哪个用户启动的PID进程ID,唯一标识系统中的每个进程%CPUCPU使用率,表示进程占用CPU的百分比%MEM内存使用率,表示进程占用内存的百分比VSZ虚拟内存大小(Virtual Size),表示进程虚拟内存的大小,以KB为单位RSS常驻内存集(Resident Set Size),表示进程实际使用的物理内存大小,以KB为单位TTY控制终端,表示进程关联的控制终端STAT进程状态,包括运行状态(R)、睡眠状态(S)、僵尸状态(Z)等START进程启动时间,表示进程启动的时间点TIMECPU时间,表示进程累计占用CPU的时间COMMAND进程的命令行,表示启动进程时使用的命令和参数

扩展:

1)只显示包含指定进程名的行:ps aux | grep <进程名>

2)ps -ef 和 ps aux 两者都可用于列出系统的所有进程信息,但ps aux更适合快速查看当前系统中的进程情况。

3. 查看日志

3.1 通过journalctl命令查看系统日志

命令:journalctl

3.2 通过tail查看系统日志

查看日志文件多少行代码:tail -n [行数] [日志文件]

4. 服务状态

4.1 查看指定服务的状态

命令:systemctl status

比如查看防火墙的状态:

4.2 查看已启用的服务

命令:systemctl list-unit-files --state=enabled

5. 网络状态

5.1 显示网络接口信息

命令:ifconfigip addr

5.2 测试网络连通性

命令格式:ping

如果有类似以上的输出,则网络通畅了。

字段说明icmp_seq数据包的序列号,每个数据包都有一个唯一的序列号,以便于识别ttl数据包的生存时间(Time to Live),也称为跳数。它指示了数据包在网络中可以传递的最大路由器跳数。如果ttl值超过0而数据包还未到达目标,那么数据包会被丢弃time往返时间(Round-Trip Time,RTT),表示从发送数据包到收到回应数据包所花费的时间,单位是毫秒(ms)

5.3 跟踪数据包的路由路径

命令格式:traceroute

上面示例中,显示了从本地主机到目标主机(192.168.243.102)经过的1个路由器或中间节点的信息,包括它们的IP地址(192.168.243.102)、主机名(linux102)、以及数据包往返时间RTT(0.161 ms 0.132 ms 0.097 ms)。

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 :表示原始套接字(Raw Socket),允许应用程序直接访问网络层的数据包。* icmp :表示ICMP协议,用于在IP网络上发送控制消息。* udplite :表示UDP Lite协议,类似于UDP,但提供了部分数据包校验和的功能。State显示套接字的状态。常见的状态包括 LISTEN(正在监听传入连接)、 ESTAB(套接字已建立连接)、 CLOSED(套接字已关闭)、 TIME-WAIT(等待关闭的连接的套接字)等Recv-Q接收队列中的字节数Send-Q发送队列中的字节数Local Address:Port本地地址和端口号Peer Address远程地址和端口号

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%(自定义预警值)的时候,则需要通过清理某些表数据来释放空间,或进行表空间扩展。

相关推荐

PC也能装MAX OS X

MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...

一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?

前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...

首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境

德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...

System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器

IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...

Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统

IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...

这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起

Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...

戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux

IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...

TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U

IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...

登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?

这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...

DNS分离解析实验

如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...

一个小实验巩固下进程管理

先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...

VMware Kali无线WIFI密码破解

WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...

python多进程编程

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞

2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...

深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验

一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...