ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DBA常用的linux命令

DBA常用的linux命令

原创 Linux操作系统 作者:wwjfeng 时间:2020-11-01 10:33:44 0 删除 编辑

1.top

linux 常用的性能分析工具,能够实时显示系统各个进程的资源使用情况。


第一行

top - 系统时间

up - 系统运行时间

users - 目前登录用户

load average - 系统1,5,15 分钟的平均负载(该数值除以CPU逻辑core数如果>5 则表示系统负载过高)


第二行

总进程:159 total, 运行:1 running, 休眠:157 sleeping, 停止: 1 stopped, 僵尸进程: 0 zombie


第三行

cpu 状态信息

us - 用户占用cpu百分比

sy - 内核占用cpu百分比

ni - 改变过优先级的进程占用cpu百分比

id - 空闲cpu百分比

wa - io等待占用cpu百分比

hi - 硬中断占用cpu百分比

si - 软中断占用cpu百分比


第四行

memory状态信息


第五行

swap交换区信息


备注:

可用内存=free + buffer + cached

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,

第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。

纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。


第六行

各进程状态

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)


其他交互命令

- 按1键,显示每个逻辑CPU

- x 打开排序列加亮,shift + < or > 改变排序列

- h 显示帮助画面,给出一些简短的命令总结说明

- k 终止一个进程。

- i 忽略闲置和僵死进程。这是一个开关式命令。

- q 退出程序

- r 重新安排一个进程的优先级别

- S 切换到累计模式

- s 改变两次刷新之间的延迟时间(单位为s

- f或者F 从当前显示中添加或者删除项目

- o或者O 改变显示项目的顺序

- l 切换显示平均负载和启动时间信息

- m 切换显示内存信息

- t 切换显示进程和CPU状态信息

- c 切换显示命令名称和完整命令行

- M 根据驻留内存大小进行排序

- P 根据CPU使用百分比大小进行排序

- T 根据时间/累计时间进行排序

- W 将当前设置写入~/.toprc文件中



2.sar

系统性能分析工具,可以从多方面进行报告。

(1).CPU

输出项说明:

CPU:all 表示统计信息为所有 CPU 的平均值。

%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。

%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。


(2).MEM 和 SWAP

输出项说明:

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比


(3).IO

输出项说明:

tps:每秒钟物理设备的 I/O 传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s


(4).进程队列

输出项说明:

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(System load average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载


(5).系统交换活动

输出项说明:

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量


(6).设备使用


其中:

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.

rd_sec/s:每秒读扇区的次数.

wr_sec/s:每秒写扇区的次数.

avgrq-sz:平均每次设备I/O操作的数据大小(扇区).

avgqu-sz:磁盘请求队列的平均长度.

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.

%util:I/O请求占CPU的百分比,比率越大,说明越饱和.

1. avgqu-sz 的值较低时,设备的利用率较高。

2. 当%util的值接近 1% 时,表示设备带宽已经占满。


备注:

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看


3.netstat

在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

(1).显示网卡列表

# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eno16777  1500 11722397      0      1 0      16984562      0      0      0 BMRU
eno16777  1500      - no statistics available -                        BMRU
eno33554  1500 105293544      0      1 0      95628133      0      0      0 BMRU
eno33554  1500      - no statistics available -                        BMRU
lo       65536 18388496      0      0 0      18388496      0      0      0 LRU
virbr0    1500        0      0      0 0             0      0      0      0 BMU


(2). netstat -lntup

# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1669/master         
tcp        0      0 169.254.176.93:61020    0.0.0.0:*               LISTEN      3953/osysmond.bin   
tcp        0      0 169.254.176.93:61021    0.0.0.0:*               LISTEN      4162/ologgerd       
tcp        0      0 0.0.0.0:32159           0.0.0.0:*               LISTEN      3062/gpnpd.bin      
tcp        0      0 127.0.0.1:2016          0.0.0.0:*               LISTEN      3014/oraagent.bin   
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:27586           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:875             0.0.0.0:*               LISTEN      3418/rpc.rquotad    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1429/rpcbind        
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      3372/rpc.mountd     
tcp        0      0 109.115.12.36:1521      0.0.0.0:*               LISTEN      5574/tnslsnr        
tcp        0      0 109.115.12.34:1521      0.0.0.0:*               LISTEN      5574/tnslsnr        
tcp        0      0 127.0.0.1:6100          0.0.0.0:*               LISTEN      5313/ons            
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1828/dnsmasq        
tcp        0      0 192.168.11.11:1526      0.0.0.0:*               LISTEN      5369/tnslsnr        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1436/sshd           
tcp        0      0 169.254.176.93:41336    0.0.0.0:*               LISTEN      5574/tnslsnr        
tcp        0      0 0.0.0.0:43928           0.0.0.0:*               LISTEN      1458/rpc.statd      
tcp6       0      0 ::1:25                  :::*                    LISTEN      1669/master         
tcp6       0      0 ::1:2016                :::*                    LISTEN      3014/oraagent.bin   
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::61415                :::*                    LISTEN      -                   
tcp6       0      0 :::11215                :::*                    LISTEN      1458/rpc.statd      
tcp6       0      0 :::111                  :::*                    LISTEN      1429/rpcbind        
tcp6       0      0 :::20048                :::*                    LISTEN      3372/rpc.mountd     
tcp6       0      0 ::1:6100                :::*                    LISTEN      5313/ons            
tcp6       0      0 :::55829                :::*                    LISTEN      8876/ora_d000_racdb 
tcp6       0      0 :::21                   :::*                    LISTEN      1426/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1436/sshd           
tcp6       0      0 :::6200                 :::*                    LISTEN      5313/ons            
udp        0      0 169.254.176.93:55258    0.0.0.0:*                           9319/ora_q004_racdb 
udp        0      0 169.254.176.93:38891    0.0.0.0:*                           6449/asm_pxmn_+ASM1 
udp        0      0 192.168.11.11:59372     0.0.0.0:*                           3042/evmd.bin       
udp        0      0 169.254.176.93:22516    0.0.0.0:*                           8781/ora_lms0_racdb 
udp        0      0 169.254.176.93:22527    0.0.0.0:*                           6360/asm_mman_+ASM1

(3).找出程序运行端口

# netstat -anp | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1436/sshd           
tcp        0      0 109.115.12.34:22        109.115.16.186:51401    ESTABLISHED 119821/sshd: root@p 
tcp6       0      0 :::22                   :::*                    LISTEN      1436/sshd           
unix  3      [ ]         STREAM     CONNECTED     24153    1436/sshd            
unix  2      [ ]         DGRAM                    28257165 119821/sshd: root@p

(4).其他常用命令

按oracleSID来查询连接数据库的客户端IP
netstat -anpT | grep oracleSID | awk '{print $5}' | grep -o -E  '1.*:' | awk -F ':' '{print $1}' | sort
按监听端口1521来查询连接数据库的客户端IP
netstat -anpT | grep 1521 | awk '{print $5}' | grep -o -E  '1.*:' | awk -F ':' '{print $1}' | sort
查询连接1521端口的process进程数
netstat -pan |grep 1521 |wc -l
查询来自某台服务器192.168.21.15的连接的process进程数
netstat -pan |grep  192.168.21.15 |wc -l
汇总连接1521端口的每个客户端IP的连接数
netstat -apnT|grep 1521 |awk  '{print $5}'|sort -u |grep -v 1521 |grep -v '*' |awk -F ':'  '{print $4}'|uniq -c |sort -nr
netstat -anpT|grep 1521 |awk  '{print $5}'|grep -o -E  '1.*:' |awk -F ':' '{print $1}' | sort |uniq -c |sort -nr


4.ps

基本进程查看命令

CPU占用最多的前10个进程: 
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
内存消耗最多的前10个进程 
ps auxw|head -1;ps auxw|sort -rn -k4|head -10 
虚拟内存使用最多的前10个进程 
ps auxw|head -1;ps auxw|sort -rn -k5|head -10


5.vmstat

用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况.


Procs(进程):

  r: 运行队列中进程数量

  b: 等待IO的进程数量


Memory(内存):

  swpd: 使用虚拟内存大小

  free: 可用内存大小

  buff: 用作缓冲的内存大小

  cache: 用作缓存的内存大小


Swap:

  si: 每秒从交换区写到内存的大小

  so: 每秒写入交换区的内存大小


IO:(现在的Linux版本块的大小为1024bytes)

  bi: 每秒读取的块数

  bo: 每秒写入的块数


系统:

in: 每秒中断数,包括时钟中断。【interrupt】

cs: 每秒上下文切换数。        【count/second】


CPU(以百分比表示):

  us: 用户进程执行时间(user time)

  sy: 系统进程执行时间(system time)

  id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。

  wa: 等待IO时间


备注:

如果r经常大于4,id经常少于40,表示cpu的负荷很重。

如果bi,bo长期不等于0,表示内存不足。

如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。


未完待续...




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15412087/viewspace-2729320/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-27

  • 博文量
    57
  • 访问量
    199171