linux 下常用变更-8
1、删除普通用户
查询用户初始UID和GID | ls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID |
删除用户 | 1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW343:x:1202:1202::/home/YW343:/bin/bash 3.修改完成保存退出 4.userdel -r YW343 命令删除用户 |
2、 目录碎文件清理
1 | 进入清理目录 | cd /var/spool/postfix/maildrop(假设目录) | |
2 | 执行清理 | 1.ls |xargs -n 50 ##查看文件属主,确认为smartmon用户产生的垃圾文件 2.ls |xargs -n 50 rm ##清理此目录零碎垃圾文件 | xargs -n 50 命令 xargs:将标准输入(stdin)转换为命令行参数。 -n 50:指定每次处理 50 个参数,并将它们作为一行输出。 执行效果 假设当前目录有 100 个文件(file1 到 file100),执行该命令后: 前 50 个文件会被显示在第一行,以空格分隔。 后 50 个文件会被显示在第二行,以空格分隔。 file1 file2 file3 ... file50 file51 file52 file53 ... file100 ls | xargs -n 50 rm # 分批次删除,每次处理 50 个文件 |
3 | 修改smartmon用户任务计划配置 | 1. cd /var/spool/cron 进入系统任务计划目录 2. vi smartmon 编辑smartmon用户任务计划配置文件,在文件首行添加下列内容 MAILTO = "" 3. 保存并退出编辑 | 禁止定时任务发送邮件 如果文件已经存在内容,确保 MAILTO = "" 位于第一行,否则可能无法生效。 MAILTO = "" 会完全禁用邮件通知。如果需要接收特定任务的邮件,请将空字符串改为有效的邮箱地址。 MAILTO = "" # 原有的 cron 任务配置... 0 0 * * * root /usr/sbin/smartctl --all /dev/sda |
3、服务器磁盘扩容目录调整
1 | 等待应拷贝数据文件 | 等待拷贝数据至新的目录中 |
2 | 查看当前挂载情况,LVM详情 | df -h vgs lvs |
3 | 删除逻辑卷lv_backup | lvremove /dev/vg01/lv_backup 删除backup逻辑卷 vgs 查看VG可用空间 |
4 | 分配释放的空间至u02和u03逻辑卷 | lvextend -L +100G /dev/vg01/u02 扩容u02逻辑卷100G lvextend -l +100%FREE /dev/vg01/lvu03 扩容u03逻辑卷 resize2fs /dev/vg01/u02 resize2fs /dev/vg01/u03 使扩容操作生效 |
4、linux 挂载nas
1 | 确认服务器登录正确(ip及主机名) | hostname ip a | |
2 | 查询并创建挂载目录 | ll / mkdir /oldbackup | |
3 | |||
1 | 查看nfs server端可用挂载 | df -h showmount -e NFSserverIP (showmount命令如未安装,使用‘yum install nfs-utils’命令安装) | |
2 | 卸载原文件系统,新建挂载点 | umount /backup mkdir /oldbackup | |
3 | 修改fstab文件,配置为开机自动挂载NAS | vi /etc/fstab,修改如下内容: /dev/mapper/vg01-lv_backup /oldbackup ext4 defaults 1 2 增加如下内容: NFSserverIP:NFS共享目录 /backup nfs vers=3,_netdev,cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 0 0 | 挂载点 /backup:NFS 共享将被挂载到本地的 /backup 目录。 文件系统类型 nfs:表示使用 NFS(网络文件系统)协议挂载。 挂载选项 vers=3:使用 NFSv3 协议(重复出现,需移除一个)。 _netdev:表明这是一个网络设备,系统会在网络就绪后再挂载。 cio:启用并发 I/O(需内核支持,适用于高吞吐量场景)。 rw:挂载为读写模式。 bg:挂载失败时在后台重试(避免系统启动卡住)。 hard:硬挂载(挂载失败时会持续重试,可能导致应用程序挂起)。 nointr:不允许中断硬挂载的 I/O 操作。 rsize=32768 和 wsize=32768:读写缓冲区大小为 32KB(提高大文件传输性能)。 proto=tcp:使用 TCP 协议传输(更可靠,适合大文件)。 noac:禁用客户端缓存(确保数据实时同步,但可能降低性能)。 timeo=600:超时设置为 60 秒(默认单位为 0.1 秒)。 转储和 fsck 选项 0 0:不备份(0),不检查文件系统(0)。 |
4 | 测试是否可以开机自动挂载 | mount -a 测试/etc/fstab中新增nfs文件系统是否自动挂载 df -h 查看系统当前挂载情况 | |
5 | 修改目录权限 | chown -R mysql:mysql /backup chmod 755 /backup |
回退
1 | 卸载nfs文件系统 | umount /backup |
2 | 去掉开机自动挂载 | vi /etc/fstab,修改如下内容: /dev/mapper/vg01-lv_backup /backup ext4 defaults 1 2 注释掉如下内容: #NFSserverIP:NFS共享目录 //backup nfs vers=3,_netdev,cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 0 0 |
5、创建swap 空间并挂载
操作阶段 | 1 | 查看当前swap分区状况 | lvs 查看是否LV cat /etc/fstab 查看swap分区挂载 parted /dev/sda print 查看本地磁盘分区情况 | Model: VMware Virtual disk (scsi) Disk /dev/sda: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 boot, esp 2 538MB 107GB 106GB ext4 parted:Linux 下的分区管理工具,支持 GPT 和 MBR 分区表,可操作大于 2TB 的磁盘。 /dev/sda:目标磁盘设备(通常为系统的第一块硬盘)。 print:显示磁盘的分区表信息。 | 磁盘基本信息 Model:磁盘型号(如 VMware 虚拟磁盘、物理硬盘型号)。 Disk /dev/sda:磁盘设备路径及总容量。 Sector size:逻辑 / 物理扇区大小(常见 512B 或 4K)。 Partition Table:分区表类型(gpt 或 msdos [MBR])。 分区详细信息 Number:分区编号。 Start/End:分区起始 / 结束位置(物理地址)。 Size:分区大小。 File system:文件系统类型(如 ext4, fat32)。 Flags:特殊标记(如 boot 表示引导分区,esp 表示 EFI 系统分区)。 |
2 | 划分逻辑卷,格式化为swap | lvcreate -L 48G -n lvswap vg_00 使用VG00中的空闲空间创建一块48GLV mkswap /dev/vg_00/lvswap 格式化lvswap卷为swap分区格式 | |||
3 | 挂载swap分区 | swapon /dev/vg_00/lvswap 用swapon命令挂载swap卷 free -g free命令验证当前swap大小 | |||
4 | 写入fstab永久生效 | 编辑/etc/fstab文件,添加内容: /dev/vg_00/lvswap swap swap defaults 0 0 | |||
回退阶段 | 1 | 关闭新加swap分区 | swapoff /dev/vg_00/lvswap | ||
2 | 删除fstab新加内容 | 编辑/etc/fstab文件,注释内容:#/dev/vg_00/lvswap swap swap defaults 0 0 |
6、asm存储扩容
实施 阶段 | 1 | linux系统扫盘 | 等待存储划分后,执行以下操作 echo "- - -" > /sys/class/scsi_host/host*/scan | ||
2 | SAN存储扫描完成后,由VCS继续完成 | 1、vxassist -g [dg] make volume size 2、vxedit -g [dg] set user=[user] group=[group] mode=660 volume | Veritas Volume Manager (VxVM) 中用于创建卷的命令 关键参数说明 vxassist Veritas Volume Manager 的辅助工具,用于管理卷(如创建、扩展、删除)。 -g [dg] -g:指定卷组(Disk Group)名称。 [dg]:卷组的实际名称,例如 datadg、oradg 等。 make volume make:创建卷的操作关键字。 volume:卷的名称,需自定义(如 vol01、data_vol)。 size 卷的大小,需指定单位: m:兆字节(MB) g:吉字节(GB) t:太字节(TB) 例如:10g(10GB)、500m(500MB)。 | 关键参数说明 vxedit Veritas Volume Manager 的编辑工具,用于修改卷、卷组等对象的属性。 -g [dg] -g:指定卷组(Disk Group)名称。 [dg]:卷组的实际名称,例如 datadg、oradg 等。 set user=[user] group=[group] mode=660 user=[user]:设置卷的所有者用户(如 oracle、root)。 group=[group]:设置卷的所属组(如 dba、oinstall)。 mode=660:设置卷的权限模式(八进制表示): 6(二进制 110):所有者有读写权限。 6(二进制 110):所属组有读写权限。 0(二进制 000):其他用户无权限。 volume 目标卷的名称,例如 data_vol、ora_vol 等。 | |
回退阶段 | 1 | VCS删除ASM绑定 | VCS提供方案删除绑定 | ||
2 | 存储删除新加存储 | 存储删除新加存储 | |||
3 | |||||
4 |
7、每天清理logwatch
日志路径 | Logwatch 是 Linux/Unix 系统中常用的日志分析工具,它通过扫描系统日志(如 /var/log/ 下的安全日志、服务日志等),自动生成人类可读的分析报告,帮助管理员快速识别系统异常、安全事件或性能问题。 Logwatch 日志的核心组成与存储位置 报告文件(主要日志) 存储路径:通常位于 /var/log/logwatch/,文件名格式为 YYYYMMDD-HHMMSS.log 或按服务分类(如 syslog.log、auth.log)。 运行日志(工具自身日志) 存储路径:/var/log/logwatch/logwatch.log 内容:记录 Logwatch 的运行状态(如执行时间、扫描的日志文件、是否报错)。 | |
内容 | Logwatch 日志的关键内容解析 Logwatch 报告按功能模块分类,常见模块包括: 模块 核心内容 Kernel Messages 内核错误、硬件异常(如驱动加载失败、内存溢出)。 Failed Logins 失败的登录尝试(含暴力破解尝试、账号锁定记录)。 System Processes 异常进程(如僵尸进程、高 CPU / 内存占用进程)。 Service Logs 服务状态(如 Apache/Nginx 访问日志、MySQL 错误日志)。 Security Events 安全相关事件(SELinux 告警、防火墙规则触发记录)。 为什么需要关注 Logwatch 日志? 故障排查的 “指南针” 当系统出现卡顿、服务崩溃时,Logwatch 会直接标记关键错误(如磁盘空间不足、服务启动失败),减少排查时间。 示例:若 Web 服务无法访问,Logwatch 可能提示 Apache: child process 1234 exited with status 255,直指进程异常。 安全威胁的 “预警器” 持续记录暴力破解尝试(如 sshd: Failed password for root from 192.168.1.1),帮助管理员及时封禁恶意 IP。 性能优化的 “数据来源” 分析日志中的资源占用趋势(如 MySQL 慢查询、CPU 过载记录),为系统调优提供依据。 | |
1 | 定时执行脚本 | 执行脚本,内容: #!/bin/bash /usr/sbin/tmpwatch -umc 48 /var/cache/logwatch ##通过命令清理48小时以上的logwatch命令 sed -i '/\/usr\/sbin\/tmpwatch\ -umc*/d' /etc/cron.daily/tmpwatch ##删除现有cron中包含的删除指令 echo /usr/sbin/tmpwatch -umc 48 /var/cache/logwatch >> /etc/cron.daily/tmpwatch ##新增清理48小时以上日志指令到计划任务中 df -Ph |grep var |
tmpwatch Linux 系统自带的工具,用于删除指定目录中指定时间未被访问 / 修改的文件或目录。 -u 根据 ** 访问时间(atime)** 删除文件。即:若文件在指定时间内未被读取,则删除。 -m 根据 ** 修改时间(mtime)** 删除文件。即:若文件内容在指定时间内未被修改,则删除。 -c 根据 ** 创建时间(ctime)** 删除文件。即:若文件状态(如权限、所有者)在指定时间内未被更改,则删除。 48 指定时间阈值(单位:小时)。示例中表示:删除超过 48 小时未被访问 / 修改 / 状态未变更的文件。 /var/cache/logwatch 目标目录,即 Logwatch 工具的缓存目录,通常存储临时生成的日志报告。 | ||
sed Linux 系统的文本处理工具,用于对文件内容进行替换、删除、插入等操作。 -i 直接修改源文件(in-place edit),无需生成临时文件。 /.../d 正则表达式匹配模式,d 表示删除匹配到的行。 \/:转义后的斜杠 /,匹配路径中的 /。 tmpwatch\ -umc*:匹配 tmpwatch -umc 字符串,其中 c* 表示 c 可以出现 0 次或多次(例如 -um、-umc、-umcc 都会被匹配)。 | ||
etc/cron.daily/ 作用:存放 Linux 系统每日自动执行的脚本文件,属于 cron 定时任务系统 的重要组成部分。 执行机制: 系统通过 cron 服务,每天凌晨会自动运行该目录下的所有可执行脚本(通常在 02:00 左右,具体时间由 /etc/crontab 或 anacron 配置决定)。 文件组成 该目录包含多个系统维护脚本,常见文件如下: 文件名 功能描述 apt 清理 APT 软件包缓存,释放磁盘空间 logrotate 轮转、压缩和清理系统日志文件,防止日志过大 man-db 更新 man 手册数据库,确保命令帮助文档可正常查询 tmpwatch 清理临时文件(如 /tmp、/var/tmp),防止垃圾文件堆积 dpkg 处理 Debian 包管理器的残留文件和日志 sysstat 收集系统性能统计数据(如 CPU、内存使用情况) | ||
与其他 cron 目录的区别 目录路径 执行频率 用途场景 /etc/cron.daily/ 每天执行一次 系统日常维护(日志清理、缓存清理) /etc/cron.hourly/ 每小时执行一次 实时监控(如系统负载统计) /etc/cron.weekly/ 每周执行一次 周度维护(磁盘检查、数据备份) /etc/cron.monthly/ 每月执行一次 月度统计(资源使用报告生成) /etc/cron.d/ 自定义频率 用户自定义定时任务(需写入 crontab 格式) |
相关文章:
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...