资讯详情 Linux新手必备20+命令行工具:从终端增强到系统监控工作流
📅 2026/11/4 16:16:37
在这几年里接触了Linux系统, 经常会遇到一个这样的问题: 新手应该装上哪些工具啊, 这样既不会让人搞得很糊涂, 也不会把整个系统弄到完全没办法挽救的地步。这里有一份需要准备的超过20种以上常用软件的清单, 这份清单的存在是为了回答上面说的那个问题的。它并没有打算去把所有的, 在Linux系统下面存在的命令, 都一个一个地摆出来让大家看, 也坚决不推荐那种需要让人折腾整整三天时间, 才可能跑起来的一个一个的, 用来显示自己技术怎么怎么牛的神奇的工具, 它就是从我自己每天的平时工作使用过程当中, 筛选出来的, 确实是, 我会经常频繁地点开使用的那些个, 能够非常直接明显地就把我的工作效率给提升起来的命令行工具的这个集合。不管你是刚刚把你的那个什么发行版安装到了虚拟机里面去, 还是在你那个工作使用的服务器上被各种日志信息刷屏刷得眼发花的时候, 这份清单里面的内容都能够帮你非常快, 就是你能够快速地找到, 接下来的下一步是应该去下载什么东西, 或者是应该去使用哪一个具体的什么命令的一个答案。下文的内容是按照终端增强场景、系统监控场景、文件处理场景、网络排查场景还有版本控制这几个场景来分组的, 在每一个工具这里我都会说明它解决了什么类型的问题, 具体的安装途径是怎样的, 以及新手最先应该去用的哪一个或者两个命令。文末的位置还会给出一张关于常见问题的速查表格, 同时会提供一套用于新机器的初始化流程, 目的是方便用户能够直接依据这些内容来进行操作。1. 选工具背后的道理是不去管数量多不多的事儿, 而是要看能不能把整个工作流程给连起来。工具清单这类文章最常出现的毛病, 就是会错误地把“看起来很不错”这种情况, 等同于“对自己来说真的合适”。我曾经看到过很多刚刚开始学习的人, 严格按照网络上找到的教程来做, 他们一口气安装了十多个终端工具方面的事物, 然后又修改了六七个配置文件相关的内容。但是在过了一周之后, 他们突然发现绝大部分的命令实际上根本用不上。不仅如此, 有一些配置还因为相互之间产生了冲突而导致了麻烦, 具体来说就是让终端里面的字体变成了乱码状态, 或者让原本应该在屏幕上显示的提示命令给弄没了, 看不见了。到了最终这个阶段, 这些人要么不得不重新安装一遍操作系统来解决问题, 要么就直接选择放弃使用这个命令行界面了, 然后完全退回到那些容易操作的、带有图形界面的模式中去。这并非学习能力所导致的问题, 而是清单本身缺乏必要的筛选条件。真正具备价值的清单, 应当阐明某个工具被列入该列表的具体缘由, 并说明在具体场合下, 哪些情景需要避免使用该工具。所以我一直都在给新手朋友们提建议, 让他们对那些被叫做“神器”的东西保持一种最基础、也是最朴素的怀疑态度, 这需要先去确认它到底是不是会高频地出现在你的日常工作中, 然后再来决定要不要把它安装到你的电脑里面去, 举个具体的例子来说, 像是 tmux 这种工具, 对于每天都需要用到它的人来说, 是非常值得你去花费半个小时左右的时间去学习怎么用的, 但是反过来想, 有些插件它们可能只适合于在特定的项目过程中用来展示一下技术实力或者是耍一下帅色, 对于这些插件的话, 你完全可以等到你在实际工作当中遇到了相对应的需求之后再选择去安装它们才是合理的做法, 因为一个工具的真正价值并不在于数量上的多少, 而是体现在当你每次习惯性地打开终端这个窗口的时候, 你的大脑深处能够非常迅速且清晰地浮现出某个具体的任务应该如何对应使用哪一条正确的命令, 这才是关键所在。1.2 三条选型标准高频、低心智、生态成熟这份清单里的工具, 是按照三条标准来筛选的。第一条标准是高频。这些工具必须能够覆盖日常操作中多达80%左右的常见场景。比如查找日志这种动作、查看磁盘情况这种操作、寻觅文件这种行为、以及进入目录这个行为等等。这些动作在人的日常生活里几乎是天天都要发生好几次的。第二条标准是低心智负担。工具本身的形态应该是属于开箱就可以直接使用的状态。它的默认配置已经足够好到可以直接拿起来用。不需要为了追求让工具看起来更美观一些这样的目的而去花费精力维持一套非常复杂的配置系统在里面。第三条标准是生态成熟。它一定能够在现在大家常用的那些操作系统版本里, 通过它们的软件安装来源直接被安装成功。这样一来, 做更新的这个动作, 还有做卸载的这个动作都会比较让人省心。如果以后遇到了什么问题的话, 再去网上搜索的时候, 也一定能够搜到非常多的解决办法。用咱们现在经常做的一个动作来做比方, 就是说当你选择平时常吃的饭菜的时候, 你看的并不是哪一个菜盘子摆弄得再怎么精致好看, 而是去考虑在整个一个礼拜这个时间段里面, 你到底有几次能够去点这道菜去吃, 然后 htop 和 fzf 这样的工具, 它们就属于说是那种每天必须要吃的米饭面条一样的存在, 因为这些东西安装起来很简单, 而且对于日常的使用来说是完全必不可少的, 可是像 btop 这种把各种视觉效果拉到了非常满的这样一种情况的话, 它其实就差不多是说像是让你想要偶尔去换个口味的那种感觉一样, 所以它装还是不装这一件事儿, 主要就是得看你自己当时的心情是怎么样的了, 当你完全清楚了这三条所谓的标准之后, 那么再反过来去看那些具体的工具的时候, 你的心里面自然也就就已经有底数或者说就有了计划。2. 终端与Shell增强先把“打字”这件事升级终端就是Linux的驾驶舱。同样的一个操作过程, 如果直接用系统里自带的命令一行一行地硬敲出来, 和换上一套专门组合好的工具来进行处理, 这两种操作方法之间所呈现出来的实际感受上的差别真的是非常大, 远远不止差那么一点两点的距离这一小截篇幅的内容先把那些最基础的操作环节给解决了就好, 也就是怎么正确地打字输入文本以及怎么样方便地在不同的窗口界面之间进行切换跳转, 这两个环节几乎是决定性地影响了你在每天使用终端设备的过程中到底要白白浪费掉多少时间成本的。2.1 tmux 解决的是“会话保持”问题很多没有经验的人在第一次使用远程服务器的时候, 往往都会遇到令他们感到尴尬的情形: 如果网络连接突然中断了, 那么那些正在进行的编译任务就会全部失效如果想要一边去查看日志文件记录, 一边又想要输入命令行代码进行操作的话, 就只能频繁地在不同的显示屏幕之间来回切换视角。tmux这款工具专门针对这些问题给出了解决的方案。关于tmux的核心概念体系来说, 它主要包含了会话、窗口以及窗格pane这三个组成部分。我们可以把它说清楚, 会话这个东西, 能够被当作一个独立出来的工作空间去看。而窗口, 就是在这个工作空间里头包含的标签页。至于窗格, 则是把一个窗口再次切割成好几个部分出来。这个功能在 ssh 连接断开之后, 依然会在后台持续运行。等下次重新建立连接的时候, 就可以恢复原来的状态了。安装操作本身是极其简单的, 它可以直接在系和Arch系中进行, 同时具备基本上无需任何自定义配置的特点。对于刚刚入门的新手用户而言, 只需要牢牢记住三个具体的步骤即可: 首先是在终端内输入tmux new -s work这样的指令, 以此方式构建一个名称为work的会话环境接下来需要在已经建立的会话内容空间中按下Ctrl-b按键, 紧接着再按下d键, 从而实现与该临时窗口的分离操作最后一步则是回到基础的终端界面后, 执行tmux -t work这条命令, 将之前的工作状态重新粘合并恢复过来。当你能够顺利地完成这三个步骤的时候, 你就已经可以彻底告别那个一旦中断连接就会丢失当前操作进度的过去的时间段了。关于状态栏界面美化、对鼠标设备的支持以及窗格的复用技术这些问题, 你可以等到实际业务中真的产生使用需求的时候再去进行后续学习, 没有必要在一开始就把自己陷进去里面不能自拔。2.2 配合 fzf让“跳目录”和“翻历史”变成肌肉记忆在终端环境中, 最让人感到浪费时间的行为之一, 大概就是在进入一个层级较深的目录时, 需要反复地去按 Tab 键来进行路径补全。这是一个智能的目录跳转工具, 它会记录用户曾经访问过的每一个目录, 并且会根据“最近使用”的时间长短以及“使用频率”的高低来进行打分排序。在完成安装操作之后, 只需要输入命令 z 配合 文档 这个名称, 就可以直接进入那些最近被访问过的文档所属的目录如果输入 z /old , 它也能够依据之前所记录的历史数据来进行智能化的匹配和跳转。你可以把它看成是 cd 这个工具的增强版, 所以根本用不着去记那些太多的参数信息。fzf 则是一个通用的模糊查找工具, 它最常见的用途是去替换掉 shell 里面默认的按 Ctrlr 来搜索历史命令的那个功能, 原来的那个默认的历史 需要你一个一个地往后翻, 而用了 fzf 就会蹦出来一个交互式的列表, 你在里面输入几个关键字它就会马上把搜索范围缩小很多, 然后只要你按一下回车就可以直接把这个命令给执行了, 如果配合其他方式一起使用的话, 日常想要找一下目录或者找一找历史命令这两件频率很高的事情都可以变成只有几秒钟就能搞定的小事情。在完成安装之后先不要着急去修改配置信息, 可以直接在终端里面输入 fzf 这个命令来进行一个测试, 然后再考虑把它绑定到 Ctrl-r 这两个键上也完全不晚。2.3 bat 与 让“看文件”和“搜内容”不再辣眼睛当使用cat命令去查看一个行数达到几百行的配置文件的时候, 眼睛是比较容易感到疲劳和花了的, 而在grep命令于目录之中搜索关键词的过程里面, 经常性的是会把一些二进制文件以及那些隐藏着的目录也给翻弄出来的, 不过bat这个工具是作为cat命令的一个替代品的存在的, 它把文件内容的语法高亮显示功能给默认开启起来了, 同时还会显示出具体的行号并提供了分页显示的这个功能, 所以在需要对源代码或者是相关的配置信息进行快速浏览的这一种场景下面是非常合适的。在把软件安装好以后, 你可以给 bat这个命令设立另外的称呼, 具体的做法是在终端里输入类似于 alias catbat这样的指令, 然而我自己更建议你去保持原来的那个名为cat的命令不动, 然后在那些你希望代码能够显示出彩色高亮效果的情况下才去手动地调用bat这个工具, 这样做可以防止在某些自动化运行的脚本文件里面, 因为出现了分页显示的行为而导致执行过程受到不必要的影响。命令 rg是 grep 的这个工具, 它的现代替代品。它默认情况下会递归地搜索当前目录里面包含的那些文本文件。它会自定跳过, 那些在 . 这个配置里被忽略掉的目录。它也不会把二进制文件的内容, 打印成乱码的形式。人们最常用的命令是 rg src/。这个操作可以在某个具体的目录里搜索指定的关键字。然后它就会显示出这些关键字所在的行。你可以尝试着用两个参数来进行快速自查, 用rg -n “TODO|FIXME” . 这一命令找出所有待办标记, 用rg -l “error” logs/这一命令只列出包含错误关键词的文件名, 而不是输出几十行上下文, 只要用过几次, 就能感受到rg的速度优势和输出可读性, 从而再也受不了其他的工具。2.4 Shell 配置把稳定放在好看前面无论你要在终端里添加多少工具, 最终都躲不过去操作.和.zshrc这两个文件。很多初次接触的新手, 在刚刚开始时就急着去安装各种插件管理器、主题样式以及特定的字体, 这样的做法往往会导致系统的配置内容互相产生冲突, 进而使得命令行提示符区域多出来了一堆让人完全看不懂的奇怪字符。针对这种情况, 我的建议是分成两个阶段来进行设置和调整。第一步, 要保持系统的默认 Shell 处于不动的状态, 只是把常用的别名设置以及搜索路径这些内容都给写得清楚一些第二步, 等到自己对那个终端的操作已经熟悉得不能再熟悉了, 这时候再考虑是否要切换去使用 zsh 或者 fish 这些工具, 并且还要用插件管理器去扩展那个代码补全的功能和提升提示信息的质量。如果一定要去使用那些第三方的框架的话, 记得先去备份原来那些配置文件, 然后要把那些功能一个一个地、单独地去开启, 不要一次性把全套的功能全部都启用起来。在实际的测试过程之中, 一个干净、可预测的终端环境, 比花哨的彩虹提示符更能提升长期效率。每当遇到“命令找不到”、“Tab 补全卡顿”这类问题的时候, 使用默认环境也更容易定位原因。所以在配置这条路上, 克制比折腾更值钱。3. 系统监控与性能排查学会看机器的“健康状态”系统监控工具是新手最容易为“视觉效果”所吸引的一类。大家要注意看监控并不是目的, 真正的目的是定位问题。在这里我把这些工具分成看整体、看磁盘以及看IO这三部分来讲解, 每一部分都对应着一类高频故障。3.1 从 top 到 htop、btop先知道该看哪一栏top命令是系统自带的那个功能, 它用来展示进程列表还有负载情况, 但是默认输出的样子有点原始, CPU和内存使用这块没有直观的彩色区分, 键盘交互的方式也很老旧, htop这个小工具把这些缺陷全补上了, 进程列表现在可以按CPU或内存进行排序, 用F5就可以看树状结构, 用F9就能直接把那个进程结束掉。把 htop 安装好了以后, 我是建议你先把那个键盘上的 P 键按一下, 那样就能让系统按照 CPU 的使用情况来排出顺序了, 然后你也可以把那个 M 键按一下, 这样就能按照内存的使用情况来排出顺序了, 你要努力养成先看清那一个栏目的习惯才行呢, 千万不要被那些五颜六色的界面给带的跑偏了。这种工具是在最近这两年的时间里面流行起来的, 它拥有像仪表盘那样的用于监控中央处理器、内存、磁盘以及网络的界面, 同时还能够借助鼠标来进行操作。它的视觉表现确实显得更加具有现代气息, 但是它与相比, 其资源的消耗是稍微高一些点的, 所以如果是在配置并不那么高的服务器上进行使用的话, 那就是不太划算的一件事儿了。我所采取的选择方式是: 在本地电脑上面追求体验的时候来使用, 而面对服务器的故障排查工作则一律采用。其实工具这个事物本身是没有高低优劣之分的, 关键在于是否适合所使用的场景, 只有适合的场景才算得上是好用。3.2 磁盘空间与IOduf、ncdu、iotop 各管一段磁盘的问题分为两种, 一个是存储容量不足, 另一个是输入输出的压力比较大。工具 duf修改了 df -h的命令的输出格式, 把结果变成了表格的样子, 这样可以很清楚地看到数据的利用率、挂载的目录位置以及文件格式的类型, 非常适合用于迅速地进行整体检查。想要找明白“哪个目录吃掉了空间”, ncdu 是个厉害的工具, 它启动以后会在终端里面画出一个显示目录大小的树状结构图, 用户可以使用方向键进入到指定的目录里面去操作, 还能通过按 d 键来删除那些不想留的后缀名项目, 这个功能特别适合在服务器上面做一次彻底的硬盘清理工作, 如果在运行 ncdu / 命令的时候, 因为权限不够而导致有些文件夹没有正常列出来, 这种情况是有可能发生的, 针对这种问题, 用户可以试着用 sudo 来提高权限然后再执行一遍。这个iotop工具是用来回答“到底是谁在那个地方使劲儿读写磁盘”这种问题的。大家要是用了那个sudo iotop -o这个命令, 它就是只显示那些正在干IO活儿的进程, 让人可以马上把进程的名字和读写的速度给看清。如果系统里头没有装着这个工具的话, 那就是得先去把软件源更新一下, 然后再接着去安装它。把这几个种工具放在一块儿搭配着使唤, 那么什么磁盘类的像空间满了啊、或者IO突然飙升特别高这样的问题, 基本上就能被准确定位到到底是哪个目录或者是哪个进程身上去了。3.3 一个完整的磁盘排障示范如果在纸上头头是道地谈论, 那一点实际用途都没有, 所以我在这里拆解一个真实的场景。在某一天你发现服务器的响应速度变得非常缓慢, 此时登录后要做的第一件事就是运行“df -h”这条命令, 接着你看到系统主分区的使用率已经达到了98%, 这时候完全不需要感到慌张, 而是应该跑一趟“sudo ncdu /”这个指令并耐心等待它完成扫描工作, 当结果按文件大小排序出来后, 通常就会发现是日志所在的目录或者容器数据所在的文件夹出现了不正常的体积膨胀情况。当你进到那个具体的目录里面以后, 你可以使用du -sh *这个命令来确认单个文件的大小。如果空间被清理干净没过多久又变得满当当的, 就需要怀疑有进程在一口气不停地写文件, 这时候要使用sudo iotop -o来观察几秒钟, 找出那个写入速度最快的进程, 然后顺着这个进程去排查日志轮转配置或者是应用的缓存目录, 工具分开来看都普普通通, 没有什么特别厉害的地方, 但是当把这些内容串成一条完整的处理链路之后, 大多数的磁盘问题都能在几分钟之内找到原因, 而不需要靠rm -rf这种乱删一气的方式来解决问题。4. 文件查找与文本处理把“翻箱倒柜”变成一次调用文件查找与文本处理, 是日常终端操作环节中最频密的动作, 同时也是所谓“旧命令”以及所谓的“新工具二者之间差异表现得最为悬殊的一个地方。此章节按照查找文件这一条线、搜索内容这一条线、处理文本这一条线这三个方面来进行梳理工作, 以便于使用者能够依据具体的应用场景来对号入座, 找到对应的方法。4.1 查找文件fd 与 find 的取舍find 是系统里本来就有的查找命令, 它的能力很厉害, 不过语法对刚接触的人来说不够友好, 比如说 -name 、-type f 和 -exec 这些参数加在一起, 很容易就会写错。fd 用一种更直观的姿势做同样的事, 它直接在当前目录下搜文件名, fd -e md 搜所有 .md 文件, fd -t d src 只显示 src 下的目录, 它默认会忽略 . 和隐藏目录, 输出带颜色, 上手成本几乎为零。然而我不会推荐你们马上去弃用掉那个名为 find 的工具, 因为假如你是在编写脚本的话, find 能够作为遵循 POSIX 规范的通用工具被使用到各种环境中去, 它具备良好的可移植性方面的优势, 同时假如你正面临着需要执行自动化任务的情况, 那么在命令行中搭配使用的带有 -exec 这种前缀的参数以及仅仅只有一个横线和空格组成的 - 这类参数标识符时, 系统给出的反馈和执行结果往往变得更加稳定可靠一些, 所以正确且合理的操作方法应该是这样的, 即当大家平常需要手动查找文件的时候可以去选择用起来更快的 fd 这个程序, 但是假如你是打算去编写特定的脚本代码或者正在进行批量的数据处理工作时, 那就请继续使用那些老旧但可靠的 find 命令就行了。4.2 搜索内容 为什么值得替代 grep刚才在前面说到的地方提过一句, 那个东西是grep的现代替代品, 所以现在再详细讲一下。日常里去搜索内容的时候, 最常见的情况就是在某一个项目的目录里面去找一个关键词。使用 rg src/ 这个命令去执行, 它会输出包含查找结果的文件名、行号以及完整的整行内容, 并且会自动忽略掉那些隐藏的目录以及忽略文件里面的内容, 速度方面跟grep -r 相比要快得多。请配合使用-w这个选项来实现词边界匹配的功能, 这样就能够避免在搜索“error”这个词的时候, 把不该带出来的那个空的字符串也给检索出来。另一个非常普遍的需求就是去统计日志里面关键字出现的次数, 具体的做法是运行 rg -c”” app.log , 通过这种方式来获取有多少行匹配到了内容, 然后再运行 rg -o -N “.*” app.log , 以此来把匹配到的具体部分提取出来, 除此之外, 和 grep 这个工具相比rg 还有一个特别明显的优势存在, 那就是它会默认不去打印那些二进制文件里面产生的乱码, 这就使得人们不再需要反复地去加上参数 -I , 从而省去了很多麻烦。能够解决问题, 搜索的速度让你愿意去使用它, 这其实就是它有资格进入到这个清单的原因所在。4.3 sed、awk、jq明确工具的边界比背参数更重要在文本处理的三个常用工具中, sed 主要是擅长按照既定的规则来进行替换操作, awk 则是更加擅长针对数据的各个列进行逐一处理, 而 jq 这个工具简直就是用来对 JSON 格式的数据进行格式化梳理的一个极其厉害的专用神器。很多教程喜欢展示复杂的一行流比如用 awk 加工一堆日志字段但新手真正需要的是明确边界简单替换用 sed例如把文件里的旧域名批量改成新域名 sed -i s/old/new/g .txt 需要按逗号或空格拆列做统计时再考虑 awk例如 awk -F , {print $1, $3} data.csv 。当你碰到JSON结构的数据, 例如接口返回的信息或者配置文件这类情况的时候, 请你千万不要拿着sed加上正则表达式去硬抠内容, 你应当直接使用jq工具。你可以执行 jq .name data.json 来提取特定的字段信息, 此外还可以通过使用 jq -r .items | .id list.json 这种方式去快速列出数组内部包含的 ID 项内容。你得花一点时间来慢慢地去适应那个语法, 不过在处理那些个结构化的数据时候头它是不能被其他的文本工具所替代的。你必须一定要记住这么一条原则: 你用的这个工具要是越是对症的话呢, 那你这个人就越能显得安全一些。5. 网络诊断与日常调试出了问题先别重启路由器在互联网的网络排查工作环节里, 这通常是Linux日常工作中比较容易被用一句“重新启动试一下”就直接敷衍过去的一个部分。如果你掌握了几种使用命令行来进行操作的互联网工具的话, 其实很多的问题根本就不需要重启任何的东西。在这一节当中所介绍的那些工具都安装起来并不困难, 真正让人感到困难的其实是建立一套清晰而且有一定顺序的用来进行排除故障的思路。5.第一部分是命令行下的HTTP请求, 这里面会讲到curl这个工具在日常操作中经常被用到的一些典型情况, 也就是它的常用姿势, 另外还会讨论一下是否有必要去更换成别的替代方案。curl这个东西呢, 它是现在那个用命令行方式来搞HTTP操作的一个标准工具。对于刚接触的新手来说, 其实不用记特别多的东西, 只要记住四个参数就可以了。第一个是-I, 这个参数的意思就是只看响应的头部信息第二个是-L, 它的作用是自动去跟随那些重定向的请求第三个是-o, 使用这个参数可以把收到的响应体保存到你指定的文件里面去第四个是-s, 这个是静默模式, 也就是不输出太多的额外信息。在日常工作中, 如果你只是想简单验证一下某个接口能不能正常连通的话, 直接使用 curl命令后面加上一个-I参数就足够了。但 curl 的原始输出对新手不太友好响应头和响应体经常混在一起。如果希望输出带高亮和格式化可以考虑 它就是 curl 的友好封装安装后直接 就能看到清爽的结果。注意 本质仍是调用 curl所有 curl 参数都可以继续用所以不存在迁移成本。在考虑是否需要更换相关方案之前, 建议大家先把 curl这款工具学好, 这条路径可以说是最稳妥的一种选择。5.2 端口、连接与 DNSss、dig 的组合用法在查找端口占用情况的时候比起那个工具, 我们更推荐使用 ss 这个命令。这是因为它在很多新一点的系统发行版本里, 已经不再是默认就安装好的了。用 ss -tlnp 可以查看所有的监听端口, 不过想要看到对应的进程名字的话, 就需要加上 sudo 权限才行。另外, 用 ss-state 可以查看当前所有的连接情况, 这对于排查有没有异常的连接来说是非常有用的。遇到 DNS 解析出问题的时候, 可以使用 dig 这个工具去做处理, 它的基础操作模式就是简单地输入命令 dig , 这时候系统会输出非常多的信息, 里面具体包含了 A 记录的内容、查询操作所消耗的时间, 还有涉及到的是哪一个 DNS 服务器的信息, 如果你内心并不想要这些繁杂的详细信息, 只希望看到非常简明扼要的查询结果, 那么就应该采用 dig short 这样特殊的参数组合去运行, 这种方式能够让程序直接打印出对应的 IP 地址数据。dog可以作为dig的一个高颜值替代方案, 其输出结果看起来像是展开的表格, 这种方法非常适合在早期进行学习和日常交流, 不过需要注意的是, 假如在脚本环境内部需要执行DNS解析相关操作的话, 那么使用dig仍然是更为稳定的选择, 在网络出现的故障问题之中, 端口、连接以及解析这三类特定类型的问题是发生频率相对比较高的。