Linux/Unix命令

这篇是另一篇内容的前置知识。因为项目部署测试需要,向公司申请了一个虚拟机做服务器用。以下是回溯的命令,多了解了解,拓宽知识面吧。PS:本人unix/linux知识0,见啥都稀奇,小白一个,知识浅显,勿喷。

linux/unix查看操作系统命令

在 Linux/Unix 系统中,有多种命令可以用来查看操作系统的详细信息。以下是一些常用的命令及其用途:

  1. uname:

    • 显示系统信息,如内核名称、内核释放号、内核版本、机器硬件名称、处理器类型等。
    • 使用示例:
      uname -a
      
  2. lsb_release:

    • 显示 Linux 标准基础 (LSB) 版本信息,适用于遵循 LSB 规范的发行版。
    • 使用示例:
      lsb_release -a
      
  3. hostnamectl:

    • 显示系统主机名和相关的系统信息,也可以用于更改系统主机名。
    • 使用示例:
      hostnamectl
      
  4. hostname:

    • 显示或设置系统的主机名。
    • 使用示例:
      hostname
      
  5. cat /etc/*release:

    • 显示特定于发行版的操作系统信息,如名称、版本等。
    • 使用示例:
      cat /etc/os-release
      
  6. cat /proc/version:

    • 显示 Linux 内核的版本信息。
    • 使用示例:
      cat /proc/version
      
  7. dmidecode:

    • 显示硬件信息,如 BIOS 版本、系统制造商等。需要 root 权限。
    • 使用示例:
      sudo dmidecode
      
  8. lscpu:

    • 显示 CPU 架构信息。
    • 使用示例:
      lscpu
      
  9. free:

    • 显示内存状态,包括已使用、空闲、交换分区等信息。
    • 使用示例:
      free -h
      
  10. df:

    • 显示磁盘空间使用情况。
    • 使用示例:
      df -h
      
  11. tophtop:

    • 实时显示系统进程和资源使用情况。
    • 使用示例:
      top
      
      htop
      
  12. vmstat:

    • 显示虚拟内存统计信息。
    • 使用示例:
      vmstat
      
  13. iostat:

    • 显示 CPU 和输入/输出统计信息。
    • 使用示例:
      iostat
      
  14. netstatss:

    • 显示网络连接和统计信息。
    • 使用示例:
      netstat
      
      ss
      
  15. whoami:

    • 显示当前用户的名称。
    • 使用示例:
      whoami
      

hostnamectl set-hostname XXX

hostnamectl 是一个在基于 systemd 的 Linux 发行版(如 Fedora、CentOS 7+、RHEL 7+、Debian 8+ 和 Ubuntu 16.04+)中用于控制主机名的工具。使用 hostnamectl set-hostname XXX 命令可以设置系统的主机名为 XXX

以下是使用 hostnamectl set-hostname 命令设置主机名的步骤:

  1. 打开终端:

    • 在你的 Linux 系统中打开一个终端窗口。
  2. 执行命令:

    • 输入命令 hostnamectl set-hostname XXX 并按下回车键,其中 XXX 是你想要设置的新主机名。
  3. 权限:

    • 更改系统主机名通常需要管理员权限,因此你可能需要使用 sudo
      sudo hostnamectl set-hostname XXX
      
  4. 临时更改:

    • 使用 hostnamectl 更改的主机名是临时的,重启后会恢复到 /etc/hostname 文件中设置的值。
  5. 永久更改:

    • 要永久更改主机名,你需要同时更改 /etc/hostname/etc/hosts 文件中的相应条目。
  6. 编辑 /etc/hostname:

    • 使用文本编辑器编辑 /etc/hostname 文件,例如:
      sudo nano /etc/hostname
      
    • 将文件中的现有主机名替换为新的主机名 XXX
  7. 编辑 /etc/hosts:

    • 同样,编辑 /etc/hosts 文件,找到所有引用旧主机名的地方,并将它们替换为新的主机名 XXX
  8. 重启:

    • 更改 /etc/hostname/etc/hosts 文件后,重启系统以使更改生效:
      sudo reboot
      
  9. 验证更改:

    • 重启后,使用 hostnamectl 或简单的 hostname 命令来验证新的主机名是否设置成功:
      hostnamectl
      
      或者
      hostname
      

请确保选择一个合适的、符合网络策略的主机名 XXX,并且不要使用不允许的字符或空格。更改主机名可能会影响系统中的一些服务和配置,因此在执行此操作之前,请确保你了解更改的影响。

apt 安装软件命令

apt update && apt install nmon strace  pciutils tmux rsync telnet bash-completion iotop mtr nmap easy-rsa iftop less libtool numactl lsof ftp at vim unzip   wget  perl make tree rsync curl tcpdump  htop traceroute lsof net-tools  htop  pv arping  iptables sudo dnsutils -y

apt 命令行,用于在 Debian 或 Ubuntu 系统上安装一系列常用的软件包。这个命令使用了 -y 选项,它的作用是在安装过程中自动回答所有的提示问题,以实现无需人工干预的自动化安装。

以下是您列出的软件包及其一般用途:

  • nmon: 一个系统监控工具,可以显示 CPU、磁盘、网络等的使用情况。
  • strace: 一个调试工具,用于监控程序执行时的系统调用和信号。
  • pciutils: 包含工具来列出 PCI 设备信息。
  • tmux: 一个终端复用器,允许多个终端会话共享单个窗口。
  • rsync: 一个文件同步和传输工具。
  • telnet: 一个网络协议,用于远程登录到服务器。
  • bash-completion: 提供命令行自动补全功能的 bash 扩展。
  • iotop: 一个显示磁盘 I/O 使用情况的工具。
  • mtr: 一个网络诊断工具,结合了 tracerouteping 的功能。
  • nmap: 一个网络扫描工具,用于发现网络上的设备和开放的端口。
  • easy-rsa: 一个简单的 PKI 和 SSL 证书管理工具。
  • iftop: 一个实时网络带宽监控工具。
  • less: 一个文件查看器,用于查看文件内容。
  • libtool: 一个库的依赖管理工具。
  • numactl: 一个控制 NUMA 策略的命令行界面。
  • lsof: 一个列出当前系统打开文件的工具。
  • ftp: 一个文件传输协议客户端。
  • at: 一个安排一次性任务的工具。
  • vim: 一个高度可配置的文本编辑器。
  • unzip: 一个解压 ZIP 文件的工具。
  • wget: 一个从网络上下载文件的工具。
  • perl: 一种高级、通用的脚本编程语言。
  • make: 一个构建自动化工具。
  • tree: 一个以树状图显示目录结构的工具。
  • curl: 一个客户端 URL 传输工具。
  • tcpdump: 一个强大的网络抓包工具。
  • htop: 一个交互式的进程查看器。
  • traceroute: 一个网络诊断工具,用于追踪数据包到目的地的路径。
  • lsof: 再次列出,它是一个列出系统打开文件的工具。
  • net-tools: 包含多个网络诊断工具,如 ifconfignetstat
  • pv: 一个管道查看器,用于监控数据流。
  • arping: 一个发送 ARP 请求的工具。
  • iptables: 一个网络防火墙规则管理工具。
  • sudo: 一个允许授权用户以超级用户权限执行命令的安全政策。
  • dnsutils: 包含多个 DNS 工具,如 dignslookup

请注意,在执行此命令之前,确保您已经通过 sudo apt update 更新了您的软件包列表,以确保安装的是最新版本的软件包

apt update 命令

apt 是 Debian 和 Ubuntu 系统上的一个包管理工具,用于安装、更新和删除软件包。apt update 命令用于更新本地包索引,这是执行包管理任务之前的一个必要步骤。

以下是 apt update 命令的详细说明:

  1. 更新软件包列表:

    • apt update 命令会从你的系统的软件源列表中获取最新的软件包列表和版本信息。
  2. 不安装软件:

    • 这个命令本身不会安装或更新任何软件包,它只是更新本地的软件包索引。
  3. 提高效率:

    • 通过使用 apt update,你可以确保在执行 apt installapt upgrade 等命令时,你拥有最新的软件包信息。
  4. 使用 sudo:

    • 由于更新软件包列表可能会影响系统设置,通常需要管理员权限,因此你可能需要使用 sudo 来执行这个命令:
      sudo apt update
      
  5. 定期执行:

    • 建议定期运行 apt update 来保持你的软件包列表是最新的,这有助于避免安装过时的软件包。
  6. 与 apt upgrade 结合使用:

    • 在运行 apt upgrade 之前,通常先运行 apt update 来确保你安装的是最新版本的软件包:
      sudo apt update
      sudo apt upgrade
      
  7. 错误处理:

    • 如果 apt update 命令在执行过程中遇到问题,它可能会显示错误信息。根据错误的性质,你可能需要检查你的网络连接、软件源列表或使用 sudo 来解决权限问题。

apt update 是维护 Linux 系统的一个重要命令,确保你总是使用最新的软件包和安全更新。

ifconfig 命令

ifconfig 是一个在 Unix 和类 Unix 系统中广泛使用的命令行工具,用于显示和配置网络接口参数。这个命令的名称来源于 “interface configuration”。它可以用来查看网络接口的状态、分配的 IP 地址、网络掩码、广播地址以及其他网络相关的信息。

以下是 ifconfig 命令的一些基本用法:

  1. 查看所有接口的状态:

    ifconfig
    
  2. 查看特定接口的状态:

    ifconfig [interface_name]
    

    [interface_name] 替换为你想要查看的接口名称,例如 eth0wlan0

  3. 配置网络接口:

    • ifconfig 也可以用来配置网络接口,例如启用或禁用接口,或者为接口分配 IP 地址。但请注意,使用 ifconfig 进行配置可能需要管理员权限。
  4. 启用接口:

    sudo ifconfig [interface_name] up
    
  5. 禁用接口:

    sudo ifconfig [interface_name] down
    
  6. 为接口分配 IP 地址:

    sudo ifconfig [interface_name] [ip_address] netmask [netmask]
    

    [interface_name] 替换为接口名称,[ip_address] 替换为要分配的 IP 地址,[netmask] 替换为相应的网络掩码。

  7. 删除接口的 IP 地址:

    sudo ifconfig [interface_name] -alias [ip_address] down
    
  8. 退出 ifconfig:

    • 如果你在使用 ifconfig 的交互模式,可以通过输入 exitq 退出。

请注意,ifconfig 命令在一些现代 Linux 发行版中已经被 ip 命令所取代,因为 ip 提供了更多的功能和灵活性。如果你的系统上没有 ifconfig,你可以使用 ip aip link 来获取类似的信息。

ip a 命令

ip a 是一个在类 Unix 系统中使用的命令行工具,用于显示和操作路由、网络设备、接口和隧道。这个命令是 ip 命令的别名,ip 是一个功能强大的网络配置工具,它能够替代旧的 ifconfigroute 命令。

当你执行 ip a 命令时,它会显示当前系统的网络接口的详细信息,包括:

  • 接口的名称(例如 eth0, wlan0 等)
  • 接口的状态(例如 UP 或 DOWN)
  • 接口的硬件地址(MAC 地址)
  • 接口的 MTU(最大传输单元)
  • 接口的 QoS(服务质量)标记
  • 接口的链接层(例如以太网、无线等)
  • 接口的 IPv4 和 IPv6 地址
  • 接口的广播地址(如果有)
  • 接口的任何其他相关配置信息

使用 ip a 命令的步骤如下:

  1. 打开终端:

    • 在你的 Linux 或 Unix-like 系统中打开一个终端窗口。
  2. 执行命令:

    • 输入 ip a 并按下回车键。
  3. 查看输出:

    • 命令执行后,你将看到当前系统所有网络接口的详细信息。
  4. 使用选项:

    • 你可以使用不同的选项来获取特定的信息。例如:
      • ip a show [interface]:显示特定接口的详细信息。
      • ip a help:显示 ip 命令的帮助信息。
  5. 权限问题:

    • 通常,查看网络接口信息不需要特殊权限,但如果你想要更改网络配置,可能需要使用 sudo
  6. 网络故障排查:

    • ip a 命令是网络故障排查的常用工具,因为它提供了接口的全面信息。

ip a 命令是了解系统网络状态和配置的有用工具,对于系统管理员和用户来说都是一个重要的命令。

w 命令

在 Unix 和类 Unix 系统中,w 命令用于显示当前登录到系统的用户列表,以及他们正在执行的命令和系统负载情况。这个命令提供了关于谁在系统上活动、他们正在做什么以及系统在过去一段时间内的平均负载的有用信息。

以下是 w 命令的一些关键特性和用法:

  1. 显示登录用户:

    • 运行 w 命令将显示当前登录到系统的所有用户的列表。
  2. 显示用户活动:

    • 对于每个用户,w 会显示他们从哪个终端登录、登录时间、空闲时间、正在运行的命令以及JCPU和PCPU时间。
  3. 系统负载:

    • 命令底部显示了系统在过去1分钟、5分钟和15分钟的平均负载。
  4. 使用示例:

    w
    
  5. 显示特定用户:

    • 如果你想查看特定用户的活动,可以使用 -w 选项:
    w [username]
    
  6. 显示所有用户的详细活动:

    • 使用 -h 选项可以显示所有用户的详细活动,包括他们正在运行的完整命令行:
    w -h
    
  7. 显示用户从哪里登录:

    • 使用 -l 选项可以显示用户的远程主机地址:
    w -l
    
  8. 显示用户会话信息:

    • 使用 -s 选项可以显示简化格式的用户会话信息:
    w -s
    

w 命令对于系统管理员来说非常有用,因为它可以快速提供关于系统用户活动和系统负载的概览。然而,由于安全原因,在一些系统中可能会限制 w 命令的使用,以防止未经授权的用户查看其他用户的活动。

df -h 命令

df -h 是一个在 Unix 和类 Unix 系统中使用的命令,用于显示文件系统的磁盘空间使用情况。df 代表 “disk free”,而 -h 是一个选项,表示 “human-readable”,使得输出结果以易读的格式显示,例如以 K(千字节)、M(兆字节)、G(吉字节)等单位。

以下是 df -h 命令的一些关键特性:

  1. 显示磁盘空间:

    • 该命令显示每个已挂载的文件系统的总空间、已用空间、可用空间和使用率。
  2. 易读格式:

    • 使用 -h 选项,输出结果以易读的格式显示,例如 2,0G 表示 2 G字节。
  3. 使用示例:

    df -h
    
  4. 显示特定文件系统:

    • 如果你想查看特定文件系统的磁盘使用情况,可以使用 df 命令后跟文件系统的路径或名称:
    df -h /path/to/mountpoint
    
  5. 显示所有文件系统:

    • 默认情况下,df 命令会显示所有已挂载的文件系统。如果只想显示特定类型的文件系统,可以使用 -x 选项排除其他类型的文件系统。
  6. 显示文件系统的类型:

    • 使用 -t 选项可以显示文件系统的类型:
    df -ht ext4
    
  7. 显示磁盘使用百分比:

    • 默认情况下,df 命令也会显示每个文件系统的使用百分比。
  8. 显示inode使用情况:

    • 如果你还想查看 inode 的使用情况,可以使用 -i 选项:
    df -hi
    

df -h 是一个非常有用的命令,特别是当你需要快速了解磁盘空间的使用情况,或者在进行系统维护和性能调优时。通过这个命令,你可以确定哪些文件系统接近满容量,可能需要清理或扩展。

init 0 命令

init 0 是一个在类 Unix 系统中使用的命令,用于将系统切换到运行级别(runlevel)0。运行级别0是一个特殊的状态,通常用于系统关机。在大多数现代 Linux 发行版中,这个命令会安全地关闭所有服务,然后关闭系统。

以下是 init 0 命令的一些关键点:

  1. 关闭系统:

    • init 0 命令会关闭系统上运行的所有进程和服务,并最终关闭系统。
  2. 不需要 sudo:

    • 通常,关机命令不需要管理员权限,但出于安全考虑,一些系统可能要求使用 sudo 来执行 init 0
  3. shutdown 命令的区别:

    • shutdown 命令提供了更多的选项和灵活性,例如指定关机时间或发送消息给所有用户。init 0 是一个更简单、更直接的命令,只用于关机。
  4. 使用示例:

    • 如果你需要使用 sudo,命令如下:
      sudo init 0
      
    • 或者,如果你不需要管理员权限,直接执行:
      init 0
      
  5. 现代 Linux 发行版:

    • 在一些现代的 Linux 发行版中,如使用 systemd 的系统,init 命令可能不再使用或被其他命令替代。在这些系统中,使用 systemctl 命令来管理服务和系统状态。
  6. 替代命令:

    • 如果 init 0 在你的系统上不起作用,你可以尝试使用 shutdown 命令来关机,例如:
      shutdown -h now
      
      或者
      poweroff
      
  7. 系统兼容性:

    • 在使用 init 0 命令之前,请确保了解你的系统使用的是哪种初始化系统(如 System V init、Upstart 或 systemd)以及相应的命令。

在执行 init 0 或任何关机命令之前,请确保保存所有工作,因为这些命令将关闭所有应用程序并关闭系统。

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

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

相关文章

CSharp——Encoding编码详情

CSharp-Encoding编码 在网络通信中,很多情况下都是将字符信息转成字节序列进行传输。将字符序列转为字节序列的过程称为编码。当这些字节传送到接收方,接收方需要逆向将字节序列转为字符序列。这个过程就是解码。 常见编码有ASCII字符集 ,非…

SQL | join 的目的是什么?

如是我闻: 在 SQL 中使用 JOIN 的目的是将两个或多个数据库表的数据组合在一起,这样我们就可以在一个查询中获取这些表的相关信息。 假设我们有两本不同的书,一本记录了孩子们的名字和他们的爱好,另一本记录了他们的家庭地址。如…

盛元广通打造智慧校园实验室安全管理系统

盛元广通智慧校园实验室安全管理系统以安全为重点,构建由学校、二级单位、实验室组成的三级联动的实验室安全多级管理体系、多类用户角色,内置教育部标准检查表,支撑实验室相关业务过程的智慧管理。实现通过PC端/手机移动端开展检查工作、手机…

sh脚本笔记2

test条件测试 语法 条件测试语法说明语法1&#xff1a;test <测试表达式>这是利用test命令进行条件测试表达式的方法。test命令和“<测试表达式>”之间至少有一个空格语法2&#xff1a;[ <测试表达式> ]这是通过[]&#xff08;单中括号&#xff09;进行条件…

将exe文件添加到注册表中,实现开机时自动运行

目录 一、前言 二、代码 三、使用步骤 1.编译生成exe文件、 2.以管理员身份运行代码 3.打开注册表&#xff0c;验证结果 一、前言 在Windows操作系统中&#xff0c;将exe文件的路径添加到注册表下&#xff0c;主要用于实现程序的开机自动运行功能。 注册表路径为&#xf…

白骑士的C语言教学基础篇 1.3 控制流

系列目录 上一篇&#xff1a;白骑士的C语言教学基础篇 1.2 C语言基础语法 在这一节中&#xff0c;我们将介绍C语言中的控制流结构&#xff0c;包括条件语句、循环语句以及循环控制语句。这些结构允许我们根据不同的条件执行不同的代码块&#xff0c;从而使程序更具灵活性和功能…

Python中的并发编程(5)PyQt 多线程

PyQt 多线程 1 卡住的计时器 我们定义了一个计时器&#xff0c;每秒钟更新一次显示的数字。此外我们定义了一个耗时5秒的任务oh_no&#xff0c;和按钮“危险”绑定。 当我们点击“危险”按钮时&#xff0c;程序去执行oh_no&#xff0c;导致显示停止更新了。 import sys im…

Aspose.PDF功能演示:在程序中合并 JPG 文件

Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用程序中轻松生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现&#xff0c;保护和打印文档。无需使用Adobe Acrobat。此外&#xff0c;API提供压缩选项&#xff0c;表创建和处理&#xff0c;图形和图像功能&am…

Kile钟优化等级讲解

这里直接说说kile的优化等级: 这里有4个等级,分别为:-O0、-O1、-O2、-O3 为什么要进行编译优化? 主要目的: 1. 提高代码执行的速度; 2. 减少内存占用; 3. 降低能耗,延长电池寿命; 4. 消除代码中冗余和不必要的代码,提高程序稳定性和可靠性。 Kile等级描述: -O0:这…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used数组&#xff0c;其实就是记录此时path里都有哪些元素…

【图论】200. 岛屿问题

200. 岛屿问题 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&…

一个专为Android平台设计的高度可定制的日历库

大家好&#xff0c;今天给大家分享一个高度可定制的日历库kizitonwose/Calendar。 Calendar专为Android平台设计&#xff0c;支持RecyclerView和Compose框架。它提供了丰富的功能&#xff0c;允许开发者根据需求定制日历的外观和功能。 项目介绍 此库是开发Android应用时&…

大型语言模型评估调查

原文链接&#xff1a;A Survey on Evaluation of Large Language Models | ACM Transactions on Intelligent Systems and Technology 本文从三个关键维度&#xff1a;评价什么、在哪里评价和如何评价&#xff0c;对这些 LLMs 评价方法进行了全面回顾。 首先&#xff0c;我们…

第十四届蓝桥杯省赛C++A组F题【买瓜】题解(AC)

70pts 题目要求我们在给定的瓜中选择一些瓜&#xff0c;可以选择将瓜劈成两半&#xff0c;使得最后的总重量恰好等于 m m m。我们的目标是求出至少需要劈多少个瓜。 首先&#xff0c;我们注意到每个瓜的重量最多为 1 0 9 10^9 109&#xff0c;而求和的重量 m m m 也最多为…

C++ 彻底搞懂指针(1)

当有人问起,什么是指针时,我会毫不犹豫地回答,指针变量存放的是地址!然后呢,好像也说不出什么了,今天就再来详细看一下指针吧。 本文提纲如下: • 指针变量 • 未初始化的指针 • NULL • void指针 • 指针的指针 首先要明白几点: • 每个字节都有…

用OpenAI接口给女朋友手搓AI小助理,她说要奖励我,结果……

前言 最近&#xff0c;我那财经系的小女友迎来了考试周&#xff0c;她的复习资料已经堆得像珠穆朗玛峰一样高。压力山大的她不断让我帮她整理这些资料&#xff0c;还频频向我倾诉她的苦水。虽然我自己也挺忙的&#xff0c;但为了爱&#xff0c;我只能忍痛扛起这重担。。。为了…

【C++】STL-priority_queue

目录 1、priority_queue的使用 2、实现没有仿函数的优先级队列 3、实现有仿函数的优先级队列 3.1 仿函数 3.2 真正的优先级队列 3.3 优先级队列放自定义类型 1、priority_queue的使用 priority_queue是优先级队列&#xff0c;是一个容器适配器&#xff0c;不满足先进先出…

Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件简介 &#xff08;1&#xff09;名字必须为application,否则无法识别。后缀有三种文件类型&#xff1a; properties/yml/yaml&#xff0c;但是yml和yaml使用方法相同 &#xff08;2&#xff09; Spring Boot 项⽬默认的配置文件为 properties &#xff…

【单片机毕业设计选题24041】-基于STM32的水质检测系统

系统功能: 系统上电后显示“欢迎使用水质检测系统请稍后”两秒后进入正常显示页面。 第一页面第一行显示“系统状态信息”&#xff0c;第二行显示温度和PH值信息&#xff0c;第三行显示 浑浊度信息&#xff0c;第四行显示TDS值信息。 第一页面下的按键操作&#xff1a; 短…

Kotlin中的类

类初始化顺序 constructor 里的参数列表是首先被执行的&#xff0c;紧接着是 init 块和属性初始化器&#xff0c;最后是次构造函数的函数体。 主构造函数参数列表firstProperty 初始化第一个 init 块secondProperty 初始化第二个 init 块次构造函数函数体 class Example const…