Linux常用监控命令(笔试面试常考)

news2024/11/18 9:40:41

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:输出版本信息并退出。

[root@Rocky8-node1 ~]# 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 显示详细信息

[root@Rocky8-node1 ~]# iotop

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1625021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

paddle ocr v4 微调训练文字识别模型实践

识别步骤参考&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 微调步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/finetune.md 训练必要性 原始模型标点符号和括号容易识别不到 数据准备…

【C++】---STL之list的模拟实现

【C】---STL之list的模拟实现 一、list模拟实现思路二、结点类的实现三、list迭代器的实现1、ListIterator类2、构造函数3、operator*运算符重载5、operator->运算符重载6、operator&#xff01;运算符重载7、operator运算符重载8、前置9、后置10、前置--11、后置-- 四、lis…

JavaScript云LIS系统概述 前端框架JQuery+EasyUI+Bootstrap医院云HIS系统源码 开箱即用

云LIS系统概述JavaScript前端框架JQueryEasyUIBootstrap医院云HIS系统源码 开箱即用 云LIS&#xff08;云实验室信息管理系统&#xff09;是一种结合了计算机网络化信息系统的技术&#xff0c;它无缝嵌入到云HIS&#xff08;医院信息系统&#xff09;中&#xff0c;用于连…

uniapp H5实现签名

第一种&#xff1a;跳转签名页面 1、创建审核页面audit.vue <template><view><uni-section title""><view class"auditClass"><uni-forms :model"baseFormData" ref"baseFormRef" :rules"rules&quo…

Docker镜像的创建 和 Dockerfile

一. Docker 镜像的创建 创建镜像有三种方法&#xff0c;分别为基于已有镜像创建、基于本地模板创建以及基于 Dockerfile 创建。 1 基于现有镜像创建 &#xff08;1&#xff09;首先启动一个镜像&#xff0c;在容器里做修改docker run -it --name web3 centos:7 /bin/bash …

第12章 最佳的UI体验——Material Design实战

第12章 最佳的UI体验——Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题&#xff1f; ①全节点在比特币的主要作用&#xff1f; ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块&#xff0c;重新开始挖矿。节点这么做…

AbstractRoutingDataSource实现多数据源切换以及事务中无法切换问题

一、AbstractRoutingDataSource实现多数据源切换 为了实现数据源的动态切换&#xff0c;我们采用了AbstractRoutingDataSource结合AOP反射来自定义注解。通过这种机制&#xff0c;我们可以在运行时根据自定义注解来选择不同的数据源&#xff0c;从而实现灵活高效的数据访问策略…

Linux文件/目录高级管理一(头歌实训)

目录 任务描述 相关知识 Linux修改文件权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相关知识 Linux修改目录权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相…

Linux(Centos)服务器探索ffmpeg笔记 (命令行、Nvidia硬件加速、GPU、CPU、CUDA、h264_nvenc、过滤器、加水印)

目录 前言内容简介为什么会有这篇文章 1、服务器上怎么使用ffmpeg1.1 使用编译好的&#xff08;需要root权限&#xff09;1.2 自己怎么编译&#xff08;需要root权限&#xff09; 2 、非Root用户要怎么安装和使用3、ffmpeg命令的一些使用引导和参数介绍3.1 编译参数3.2 查询支持…

labview中TDMS读写波形图

TDMS与二进制读写速度区别不大&#xff0c;但是它具备关系型数据库的一些优点&#xff0c;经常用于存取波形数据。

数据库工程师的工作职责(合集)

数据库工程师的工作职责1 职责&#xff1a; 1. 日常数据库的基本安装&#xff0c;维护&#xff0c;升级&#xff0c;监控的; 2. 配合研发部门进行数据库设计支持&#xff0c;协助开发、设计和进行SQL语言优化; 3. 配合相关部门数据库相关的任务&#xff0c;比如数据导入导出&am…

单片机LCD1602显示电子时钟设计,含汇编程序、仿真、论文

目录 1、摘要 2 系统方案 2.1 系统整体方案的论证 3 硬件设计与实现 3.1单片机最小系统 3.2振荡电路的工作原理 3.2时钟电路的工作原理 3.3单片机最小系统电路图 3.4 时钟芯片 3.5 液晶显示电路 4 实物调试及测试 4.1 实物图 4.2仿真结果图如下所示 5、单片机源…

JAVA实现easyExcel动态生成excel

添加pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency><!--工具类--> <dependency><groupId>cn.hutool</groupId><…

请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

三星电脑文件夹误删了怎么办?恢复方案在此

在使用三星电脑的过程中&#xff0c;我们可能会不小心删除了某个重要的文件夹&#xff0c;其中可能包含了工作文件、家庭照片、视频或其他珍贵的数据。面对这种突发情况&#xff0c;不必过于焦虑。本文将为您提供几种有效的恢复方案&#xff0c;希望能帮助您找回误删的文件夹及…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Java面试八股之Java中为什么没有全局变量

Java中为什么没有全局变量 Java中没有传统意义上的全局变量&#xff0c;这是因为Java语言设计遵循面向对象的原则&#xff0c;强调封装性和模块化&#xff0c;以及避免全局状态带来的副作用。 封装性&#xff1a; 全局变量违反了面向对象编程中的封装原则&#xff0c;即隐藏对…

【ARM 裸机】模仿 STM32 驱动开发

1、修改驱动 对于 STM32 来说&#xff0c;使用了一个结构体将一个外设的所有寄存器都放在一起&#xff0c;在上一节的基础上进行修改&#xff1b; 1.1、添加清除 bss 段代码&#xff0c; 1.2、添加寄存器结构体 新建一个文件&#xff0c;命名imx6u.h&#xff0c;注意地址的连…

JS手写set与map

目录 setaddhas与equalsdelete迭代器完整实现 map set set是一个没有重复元素的集合&#xff0c;事实上我们无法完全的使用js来模拟出set的全部功能&#xff0c;因为浏览器原生的set底层是使用c实现&#xff0c;能直接访问内存&#xff0c;所以我们只能实现set的一部分功能 这…