Linux 运维命令

本章主要整理 Linux 命令中关于查看系统性能,定位问题的的相命令,包括 top、ps、pidstat、mpstat、iostat、vmstat、netstat、lsof、du、df 和 free 等命令。这些命令涵盖了对进程和系统的CPU、IO、网络等监控,希望对读者有所帮助。

注:本章内容来源网络各种博客

top 

        用于实时显示 process 的动态

命令参数:

参数

说明

q

退出

c

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

M

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

-p

 指定进程号

常用命令:

top

top -p 指定进程

top -d n    #每 N 秒刷新

头部字段意义说明:

USER

进程的属主

PID

进程的 ID

%us

表示用户空间程序的 cpu 使用率(没有通过 nice 调度)

%sy

表示系统空间的 cpu 使用率,主要是内核程序。

%ni

表示用户空间且通过 nice 调度过的程序的 cpu 使用率

%id

空闲 cp

%wa

cpu 运行时在等待 io 的时间

%hi

cpu 处理硬中断的数量

%si

cpu 处理软中断的数量

%st

被虚拟机偷走的 cpu

Majflt/s

任务每秒发生的主要错误,需要从磁盘中加载页

Command

当前进程对应的命令

列表字段意义说明:

USER

进程的属主

PID

进程的 ID

PR

进程的调度优先级

NI

进程的 nice 值 (优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

%CPU

进程占用的 CPU 百分比

%MEM

进程使用的可用物理内存百分比

RES

驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位 kb。RES=CODE+DATA

VIRT

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

SHR

SHR 是进程使用的共享内存。共享内存大小,单位 kb

S

进程的状态

TIME+

任务启动后到现在所使用的全部 CPU 时间,精确到百分之一秒

Command

当前进程对应的命令

注:可以去了解一下htop

ps 

        process status 命令用于显示当前进程的状态,类似于 windows 的任务管理器。

命令参数:

参数

说明

-f

用 ASCII 字符显示树状结构,表达程序间的相互关系

-u

以用户为主的进程状态

-x

显示所有程序,不以终端机来区分

-p

查看某个进程号

-a/-e

 显示现行终端机下的所有程序,包括其他用户的程序

常用命令:

ps -ef

ps aux

ps -up 进程号

列表字段意义说明:

USER

进程的属主

PID

进程的 ID

PPID

父进程

%CPU

进程占用的 CPU 百分比

%MEM

占用内存的百分比

VSZ

进程使用的虚拟內存量(KB)

RSS

该进程占用的固定內存量(KB)(驻留中页的数量)

START

进程启动时间

STAT

进程状态

TIME

进程运行时间

TTY

运行中断

pidstat 

        用于监控全部或指定进程的 cpu、内存、线程、设备IO 等系统资源的占用情况

命令参数:

参数

说明

-r

显示各个进程的内存使用统计

-u

默认的参数,显示各个进程的 cpu 使用统计

-d

显示各个进程的 IO 使用情况

-w

显示每个进程的上下文切换情况

-p

 指定进程号

-t

显示选择任务的线程的统计信息外的额外信息

常用命令:

pidstat 1 -r/d/u -p 进程号

pidstat 1 -r/d/u

列表字段意义说明:

USER

进程的属主

PID

进程的 ID

%usr

进程在用户空间占用 cpu 的百分比

%system

进程在内核空间占用 cpu 的百分比

%guest

进程在虚拟机占用 cpu 的百分比

%CPU

进程占用的 cpu 百分比

CPU

处理进程的 cpu 编号

RSS

该进程占用的固定內存量(KB)(驻留中页的数量)

VSZ

虚拟地址大小,虚拟内存的使用 KB

Minflt/s:

任务每秒发生的次要错误,不需要从磁盘中加载页

Majflt/s

任务每秒发生的主要错误,需要从磁盘中加载页

Command

当前进程对应的命令

kB_rd/s

每秒从磁盘读取的 KB

kB_wr/s

每秒写入磁盘 KB

kB_ccwr/s

任务取消的写入磁盘的 KB,当任务截断脏的pagecache 的时候会发生

Cswch/s

每秒主动任务上下文切换数量

Nvcswch/s

每秒被动任务上下文切换数量

mpstat 

        报告处理器相关的统计数据(统计信息来自/proc/stat文件)

常用命令:

mpstat -P ALL

mpstat -P ALL 1

列表字段意义说明:

CPU

进程的属主

PID

处理器 ID

%usr

在 internal 时间段里,用户态的 cpu 时间(%),不包含 nice 值为负进程

%nice

在 internal 时间段里,nice 值为负进程的 cpu 时间(%)

%sys

进程在虚拟机占用 cpu 的百分比

%iowait

在 internal 时间段里,硬盘IO 等待时间(%)

%irq

在 internal 时间段里,硬中断时间(%)

%soft

在 internal 时间段里,软中断时间(%)

%steal

显示虚拟机管理器在服务另一个虚拟处理器时虚拟 cpu 处在非自愿等待下花费时间的百分比

%guest

显示运行虚拟处理器时 cpu 花费时间的百分比

%idle

在 internal 时间段里,cpu 除去等待磁盘IO 操作外的因为任何原因而空闲的时间闲置时间

vmstat 

        查看虚拟内存(Virtual Memory)使用状况的工具

命令参数:

参数

说明

-S

使用指定单位显示。参数有 k 、K 、m 、M 

常用命令:

vmstat 1 -S m

列表字段意义说明:

Procs

r等待运行的进程数

b:等待 IO 的进程数量

Memory

swpd:使用的虚拟内存量

free:空闲内存量

buff:用作缓冲区的内存量

cache:用作高速缓存的内存量

inact:非活动内存的数量

active:活动内存量

swap

si:从磁盘交换的内存量(换入,从 swap 移到实际内存的内存)

so:交换到磁盘的内存量(换出,从实际内存移动到 swap 的内存)

I/O

bi:从块设备接收的块数

bo:发送到块设备的块数

system

in:每秒的系统中断数,包括时钟中断

cs:系统为了处理所以任务而上下文切换的数量

CPU

us:处理器在非内核程序消耗的时间

sy:处理器在内核相关任务上消耗的时间

id:处理器的空闲时间

wa:处理器在等待 IO 操作完成以继续处理任务上的时间

iostat

        主要用于输出磁盘 IO 和 CPU 的统计信息

命令参数:

参数

说明

-c

使显示 CPU 使用情况

-d

显示磁盘使用情况

-k

以 KB 为单位显示

-m:

以 M 为单位显示

常用命令:

iostat 1

列表字段意义说明:

%user

CPU 处在用户模式下的时间百分比

%nice

CPU 处在带NICE值的用户模式下的时间百分比

%system

CPU 处在系统模式下的时间百分比

%steal

管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比

%idle

CPU 空闲时间百分比

device

磁盘名称

tps

每秒钟发送到的 I/O 请求数.

Blk_read/s

每秒读取的 block 数

Blk_wrtn/s

每秒写入的 block 数

Blk_read

读入的 block 总数.

Blk_wrtn

写入的 block 总数

rrqm/s

每秒进行 merge 的读操作数目。即 rmerge/s

wrqm/s

每秒进行 merge 的写操作数目。即 wmerge/s

r/s

每秒完成的读 I/O 设备次数。即 rio/s

w/s

每秒完成的写 I/O 设备次数。即 wio/s

rkB/s

每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。

wkB/

每秒写K字节数。是 wsect/s 的一半

avgrq-sz

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

avgqu-sz

平均I/O队列长度

rsec/s

每秒读扇区数。即 rsect/s

wsec/s

每秒写扇区数。即 wsect/s

r_await

:每个读操作平均所需的时间

不仅包括硬盘设备读操作的时间,还包括了在 kernel 队列中等待的时间

w_await

每个写操作平均所需的时间

不仅包括硬盘设备写操作的时间,还包括了在 kernel 队列中等待的时间

await

平均每次设备I/O操作的等待时间 (毫秒)

svctm

平均每次设备I/O操作的服务时间 (毫秒)

%util

 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的 cpu 百分比

netstat 

        查看网络连接情况(tcp,upd,ip...)

命令参数:

参数

说明

-a或--all

显示所有连中的 socket

-i或--interfaces

显示网络界面信息表单

-p或--programs

显示正在使用 socket 的程序识别码和程序名称

-s或--statistics

显示网络工作信息统计表

-t或--tcp

显示 TCP 传输协议的连线状况

-u或--udp

显示 UDP 传输协议的连线状况

-n或--numeric

不进行 DNS 轮询,显示 IP(可以加速操作)

-l或--listening

显示监控中的服务器的 socket

常用命令:

netstat -ntlp //查看当前所有 tcp 端口

netstat -ntulp |grep端口 //查看端口使用情况

netstat -pnt |grep :端口 |wc //查看某一端口的连接数量,比如3306端口

列表字段意义说明:

Proto

协议名

recv-Q

网络接收队列,表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()如果接收队列 Recv-Q 一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击

send-Q

在 internal 时间段里,用户态的 CPU 时间(%),不包含 nice 值为负进程

Local Address

本地地址

Foreign Address

与本机端口通信的外部 socket。显示规则与 Local Address 相同

State

链路状态,共有11种

 LISTEN 

 SYN_SENT

 SYN_RECV

 ESTABLISHED

 TIME_WAIT

 ....

lsof 

        list open files 是一个列出当前系统打开文件的工具

命令参数:

参数

说明

-c <进程名>

输出指定进程所打开的文件

-p <进程号>

输出指定 PID 的进程所打开的文件

+d <目录>

输出目录及目录下被打开的文件和目录(不递归)

-i

显示所有连接

  -i TCP

  -i UDP

-i:port  指定端口

-i@127.0.0.5     @host来显示指定到指定主机的连接

        注:https://www.jianshu.com/p/a3aa6b01b2e1

常用命令:

lsof abc.txt 显示开启文件 abc.txt 的进程

lsof 目录名 查找谁在使用文件目录系统

lsof -c abc 显示abc进程现在打开的文件

lsof -p 12 看进程号为12的进程打开了哪些文件

lsof -i :22 知道22端口被哪个进程占用

lsof -i @192.168.1.111 查看远程已打开的网络连接(连接到192.168.1.111)

df 

        显示磁盘分区上可以使用的磁盘空间

命令参数:

参数

说明

-a

查看全部文件系统,单位默认 KB

-h

使用 -h 选项以KB、MB、GB的单位来显示,可读性高~~~(最常用)

du

        显示指定的目录或文件所占用的磁盘空间

命令参数:

参数

说明

--max-depth=<目录层数>

超过指定层数的目录后,予以忽略

-h

使用 -h 选项以 KB、MB、GB 的单位来显示,可读性高~~~(最常用)

-s或--summarize

仅显示总计

常用命令:

du xxx文件

du -h  目录

du -sh ./xx

free 

        显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer

命令参数:

参数

说明

-b  

以 Byte 为单位显示内存使用情况

-k  

以 KB 为单位显示内存使用情况

-m

以 MB 为单位显示内存使用情况

-g

以 GB 为单位显示内存使用情况

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值