1.、free命令
[root@Rocky8-node1 ~]# free -h
total used free shared buff/cache available
Mem: 1.7Gi 1.1Gi 69Mi 31Mi 554Mi 436Mi
Swap: 2.0Gi 258Mi 1.7Gi
free命令是Linux系统中用于显示内存使用情况的一个常用工具。它提供了关于系统内存使用的详细信息,包括物理内存(RAM)和虚拟内存。当你在终端中运行free命令时,它会显示几个与内存使用相关的值。以下是这些值的含义:
total:表示系统中物理内存(RAM)的总量,单位可以是千字节(KB)、兆字节(MB)或吉字节(GB)。
used:显示当前正在被各种进程和操作系统本身使用的物理内存量。
free:表示当前未被使用的物理内存量。
shared:表示多个进程共享的内存量。
buffers:显示用于缓冲磁盘I/O操作的内存量。
cache:表示用于缓存从磁盘或其他存储设备频繁访问的数据的内存量。
available:表示估计的可用内存量,用于新进程分配。它考虑到了用于缓冲和缓存的内存,如果需要,可以被其他应用程序释放。
常用参数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m以MB为单位显示内存使用情况。
-h 以比较人性化的方式显示内存使用情况。
-o 不显示缓冲区调节列。
-s <间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息
free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息
[root@Rocky8-node1 ~]# cat /proc/meminfo
MemTotal: 1775928 kB
MemFree: 71060 kB
MemAvailable: 447344 kB
Buffers: 0 kB
Cached: 517980 kB
SwapCached: 22436 kB
Active: 562256 kB
Inactive: 856496 kB
Active(anon): 250516 kB
Inactive(anon): 682180 kB
Active(file): 311740 kB
Inactive(file): 174316 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 1832956 kB
Dirty: 8 kB
Writeback: 0 kB
AnonPages: 879252 kB
Mapped: 137568 kB
Shmem: 31924 kB
KReclaimable: 49696 kB
Slab: 121936 kB
SReclaimable: 49696 kB
SUnreclaim: 72240 kB
KernelStack: 9584 kB
PageTables: 42888 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2985112 kB
Committed_AS: 3238104 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 31292 kB
VmallocChunk: 0 kB
Percpu: 78336 kB
HardwareCorrupted: 0 kB
AnonHugePages: 643072 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 194432 kB
DirectMap2M: 1902592 kB
DirectMap1G: 0 kB
2、df 命令
命令参数:
-a, --all:包括伪文件系统、重复文件系统、不可访问的文件系统。
-B, --block-size=SIZE:按SIZE缩放大小后打印它们;例如,'-BM'打印大小为1,048,576字节的单位。
--direct:显示文件的统计信息,而不是挂载点。
-h, --human-readable:以人类可读的格式打印大小,例如,1023M。
-H, --si:以1000的幂(而不是1024)打印大小,例如,1.1G。
-i, --inodes:列出inode信息而不是块使用情况。
-k:等同于--block-size=1K。
-l, --local:限制列表仅显示本地文件系统。
--no-sync:在获取使用信息之前不调用sync(默认)。
--output[=FIELD_LIST]:使用由FIELD_LIST定义的输出格式,或者如果省略FIELD_LIST则打印所有字段。
-P, --portability:使用POSIX输出格式。
--sync:在获取使用信息之前调用sync。
-t, --type=TYPE:限制列表仅显示类型为TYPE的文件系统。
-T, --print-type:打印文件系统类型。
-x, --exclude-type=TYPE:限制列表仅显示不是类型为TYPE的文件系统。
-v:(被忽略)。
--help:显示帮助信息并退出。
--version:输出版本信息并退出。
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 838M 0 838M 0% /dev
tmpfs 868M 0 868M 0% /dev/shm
tmpfs 868M 9.3M 858M 2% /run
tmpfs 868M 0 868M 0% /sys/fs/cgroup
/dev/mapper/rl-root 17G 6.9G 11G 41% /
/dev/nvme0n1p1 1014M 272M 743M 27% /boot
tmpfs 174M 12K 174M 1% /run/user/42
tmpfs 174M 0 174M 0% /run/user/0
文件系统(Filesystem):列出了当前挂载在你的系统上的文件系统。每个文件系统都由其设备名称或挂载点标识。
大小(Size):显示每个文件系统的总大小。
已用(Used):显示每个文件系统当前正在使用的空间量。
可用(Avail):显示每个文件系统上可用的空间量。
使用率(Use%):显示每个文件系统的使用率百分比。
挂载点(Mounted on):列出每个文件系统的挂载目录
3、 top命令
实时监控系统的运行状态,并且可以按照cpu及内存等进行排序
top命令是Linux和其他类Unix系统上常用的实时系统监控工具,它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。这个命令是系统管理员最重要的工具之一,被广泛用于监视服务器的负载。top命令是一个交互命令,在运行top的时候还可以运行很多命令23。
命令行选项
-d <秒数>:指定top命令的刷新时间间隔,单位为秒。
-n <次数>:指定top命令运行的次数后自动退出。
-p <进程ID>:仅显示指定进程ID的信息。
-u <用户名>:仅显示指定用户名的进程信息。
-H:在进程信息中显示线程详细信息。
-i:不显示闲置(idle)或无用的进程。
-b:以批处理(batch)模式运行,直接将结果输出到文件。
-c:显示完整的命令行而不截断。
-S:累计显示进程的CPU使用时间。
显示信息
总体系统信息:包括系统的运行时间和平均负载、当前运行的进程和线程数目、总体CPU使用率和各个核心的使用情况、总体内存使用情况、可用内存和缓存。
进程信息:包括进程的标识符、运行进程的用户名、进程的优先级、进程的优先级调整值、进程使用的虚拟内存大小、进程实际使用的物理内存大小、进程共享的内存大小、进程占用CPU的使用率、进程占用内存的使用率、进程的累计CPU时间。
功能和交互操作
按键命令:在top运行时可以使用一些按键命令进行操作,如按下"k"可以终止一个进程,按下"h"可以显示帮助信息等。
排序:可以按照CPU使用率、内存使用率、进程ID等对进程进行排序。
刷新频率:可以设置top的刷新频率,以便动态查看系统信息。
实例
显示进程信息:top
显示完整命令:top -c
以批处理模式显示程序信息:top -b
以累积模式显示程序信息:top -S
设置信息更新次数:top -n 2(表示更新两次后终止更新显示)
设置信息更新时间:top -d 3(表示更新周期为3秒)
显示指定的进程信息:top -p 139(显示进程号为139的进程信息,CPU、内存占用率等)
显示更新十次后退出:top -n 10
使用者将不能利用交谈式指令来对行程下命令:top -s
4、 htop命令
一个非常高级的交互式实时linux进程监控工具,和top相似,但更友好, 还支持鼠标。
[root@Rocky8-node1 ~]# yum install htop -y
5、 iftop命令
ftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。
[root@Rocky8-node1 ~]# iftop
interface: ens160
IP address is: 192.168.110.41
MAC address is: 00:0c:29:bc:f9:5b
6、iostat命令
iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
iostat [参数] [时间] [次数]
命令参数说明如下:
-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 以K为单位显示
-m 以M为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS使用情况
-p 可以报告出每块磁盘的每个分区的使用情况
-t 显示终端和CPU的信息
-x 显示详细信息
7、vmstat命令
-
实时监控操作系统的进程状态、内存、虚拟内存、磁盘IO、cpu。
-
一般是通过两个数字参数来完成的,第一个参数是采样时间间隔,单位是秒, 第二个参数是采样的次数
[root@Rocky8-node1 ~]# vmstat 2 2 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 332288 97804 0 537528 2 12 41 128 320 563 1 1 97 0 0 0 0 332288 97684 0 537612 0 0 0 1787 714 1305 1 2 98 0 0
r: 表示运行队列,如果队列过大说明CPU很繁忙,一般会造成CPU使用率高
b: 表示阻塞的进程数
swap: 虚拟内存已使用的大小,如果大于0,说明机器的物理内存不够了
free: 空闲的物理内存大小
buff: 系统占用的缓存大小(写缓存)
cache: 直接用来记忆我们打开的文件,给文件做缓冲,读缓存
si: 每秒从磁盘读入虚拟内存大小,如果这个值大于0,表示物理内存不足了
so: 每秒虚拟内存写入磁盘的大小,如果这个值大于0, 表示物理内存不足了
us: 用户cpu时间
sy: 系统CPU时间, 如果值 太高,说明系统调用,例如是IO操作频繁
id: 空闲CPU时间,一般来说 id + us + sy = 100
wt: 等待IO的CPU时间
8、netstat命令
-
实时网络监控,netstat命令用户显示本机网络链接、运行端口、路由表等信息。
[root@Rocky8-node1 ~]# netstat -lnupt | grep 22 #常用
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1810/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 914/sshd
tcp6 0 0 :::22 :::* LISTEN 914/sshd
udp 0 0 192.168.122.1:53 0.0.0.0:* 1810/dnsmasq
netstat命令的一些常用选项及其解释:
-r, --route:显示路由表。
-I, --interfaces=<Iface>:显示指定接口<Iface>的接口表。
-i, --interfaces:显示接口表。
-g, --groups:显示多播组成员关系。
-s, --statistics:显示网络统计信息(类似于SNMP)。
-M, --masquerade:显示伪装连接。
-v, --verbose:详细显示信息。
-W, --wide:不截断IP地址。
-n, --numeric:不解析名称。
--numeric-hosts:不解析主机名。
--numeric-ports:不解析端口名。
--numeric-users:不解析用户名。
-N, --symbolic:解析硬件名称。
-e, --extend:显示其他/更多信息。
-p, --programs:显示PID/程序名称对于套接字。
-o, --timers:显示计时器。
-c, --continuous:连续列表。
-l, --listening:显示监听服务器套接字。
-a, --all:显示所有套接字(默认:已连接)。
-F, --fib:显示转发信息基础(默认)。
-C, --cache:显示路由缓存而不是FIB。
-Z, --context:显示套接字的SELinux安全上下文。
9、pidstat命令
[root@Rocky8-node1 ~]# pidstat -w 1 2
Linux 4.18.0-513.5.1.el8_9.x86_64 (Rocky8-node1) 03/11/2024 _x86_64_ (2 CPU)
06:44:00 PM UID PID cswch/s nvcswch/s Command
06:44:01 PM 0 13 1.98 0.00 ksoftirqd/0
06:44:01 PM 0 14 21.78 0.00 rcu_sched
06:44:01 PM 0 15 0.99 0.00 migration/0
06:44:01 PM 0 44 1.98 0.00 kworker/0:1H-xfs-log/dm-0
06:44:01 PM 0 163 1.98 0.00 kworker/1:1H-xfs-log/dm-0
06:44:01 PM 0 438 6.93 0.00 kworker/u256:5-writeback
06:44:01 PM 0 832 0.99 0.00 irqbalance
cswch/s:进程每秒主动上下文切换的总数主动上下文切换发生在进程阻塞时,因为进程需要的资源不可用
nvcswch/s:进程每秒被迫上下文切换的总数进程被迫上下文切换发生在CPU时间切片时,强制进程放弃处理器
选项解释
-d:显示与系统相关的不同信息的输出。
-H:显示帮助信息。
-h:显示简短的帮助信息。
-I:显示接口统计信息。
-l:显示监听服务器套接字。
-R:显示路由表。
-r:显示路由表。
-s:显示网络统计信息。
-t:显示与选定任务关联的线程的统计信息。
-U [ <username> ]:显示指定用户名的进程的统计信息。
-u:显示用户统计信息。
-V:显示版本信息。
-v:详细显示信息。
-w:显示任务切换活动。
-C <command>:显示包含给定字符串的命令名的任务。
-G <process_name>:显示指定进程名的进程的统计信息。
--human:以人类可读的格式显示输出。
-p { <pid> [,...] | SELF | ALL }:显示指定PID的任务的统计信息,或者显示所有任务的统计信息。
-T { TASK | CHILD | ALL }:显示与选定任务关联的线程的统计信息。
10、ps命令
ps命令是Linux系统中用于显示当前运行的进程信息的一个强大工具。它提供了许多选项,可以用来定制输出的内容和格式。以下是ps命令的一些常用选项及其解释:
-d:显示与系统相关的不同信息的输出。
-H:显示帮助信息。
-h:显示简短的帮助信息。
-I:显示接口统计信息。
-l:显示监听服务器套接字。
-R:显示路由表。
-r:显示路由表。
-s:显示网络统计信息。
-t:显示与选定任务关联的线程的统计信息。
-U [ <username> ]:显示指定用户名的进程的统计信息。
-u:显示用户统计信息。
-V:显示版本信息。
-v:详细显示信息。
-w:显示任务切换活动。
-C <command>:显示包含给定字符串的命令名的任务。
-G <process_name>:显示指定进程名的进程的统计信息。
--human:以人类可读的格式显示输出。
-p { <pid> [,...] | SELF | ALL }:显示指定PID的任务的统计信息,或者显示所有任务的统计信息。
-T { TASK | CHILD | ALL }:显示与选定任务关联的线程的统计信息。
[root@Rocky8-node1 ~]# ps -ef | grep mysqld
mysql 1186 1 2 13:37 ? 00:07:53 /usr/libexec/mysqld --basedir=/usr
root 8146 2260 0 18:48 pts/0 00:00:00 grep --color=auto mysqld
[root@Rocky8-node1 ~]# ps aux | grep mysqld
mysql 1186 2.5 24.3 1906988 432240 ? Ssl 13:37 7:53 /usr/libexec/mysqld --basedir=/usr
root 8149 0.0 0.0 221940 1196 pts/0 S+ 18:48 0:00 grep --color=auto mysqld
11、uptime命令
uptime命令是Linux系统中用于显示系统运行时间、当前时间、登录用户数量以及系统负载平均值的一个简单而有用的工具。以下是uptime命令的一些常用选项及其解释:
-p, --pretty:以更易于阅读的格式显示系统运行时间。
-h, --help:显示帮助信息。
-s, --since:显示系统自上次启动以来的时间。
-V, --version:输出版本信息。
[root@Rocky8-node1 ~]# uptime -p
up 5 hours, 14 minutes