LINUX系统故障诊断及其排除2158.docx

上传人:you****now 文档编号:62481804 上传时间:2022-11-22 格式:DOCX 页数:23 大小:506.68KB
返回 下载 相关 举报
LINUX系统故障诊断及其排除2158.docx_第1页
第1页 / 共23页
LINUX系统故障诊断及其排除2158.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《LINUX系统故障诊断及其排除2158.docx》由会员分享,可在线阅读,更多相关《LINUX系统故障诊断及其排除2158.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、20077-4-17 14:30:00 图书导读读 本章解释释如何使使用适用用于Linnux的大量量性能工工具及每每个工具具中信息息的意义义。即使使已经使使用top或者sar,也可可能从本本章学到到相关知知识。应该养成成使用这这些工具具的习惯惯。当然然要知道道如何诊诊断性能能问题,但但也应该该定期寻寻找可能能指示问问题的关关键指标标的变化化。可以以使用这这些工具具衡量新新应用程程序对性性能的影影响。就就如同查查看车内内的温度度表一样样,要注注意Linnux系统的的性能指指标。本本章介绍绍的工具具有: topp sarr vmsstatt iosstatt freee可以作为为普通用用户运行行这

2、些工工具。它它们都利利用/prroc文件系系统得到到它们的的数据。这些性性能工具具和几个个rpm一起提提供。proocpss rppm提供top、freee和vmsstatt。syssstaat rrpm提供sar和iosstatt。top命命令是一一个优秀秀的交互互式实用用工具,用用于监视视性能。它提供供关于整整体Linnux性能的的几个概概要行,但但是报告告进程信信息才是是top真正的的长处。可以广广泛自定定义进程程显示,也可以添加字段,按照不同指标排序进程列表,甚至从top注销进程。sar实实用工具具提供监监视每一一事件的的能力。它至少少有15个单独独的报告告类别,包包括CPU、磁盘盘、

3、网络络、进程程、交换换区等等等。vmsttat命令报报告关于于内存和和交换区区使用的的广泛信信息。它它也报告告CPU和一些I/O信息。iosstatt报告存存储输入入/输出(I/O)统计计资料。这些命令令覆盖许许多相同同的地方方。本节节讨论如如何使用用这些命命令并解解释每个个命令产产生的报报告,并并不讨论论所有15种sar语法,但但是介绍绍了其中中最常见见的。3.1 tooptop命命令是最最流行的的性能工工具之一一。大多多数系统统管理员运行top查看Linuux和UNIX系统的的运行情情况。top实用工工具提供供一种监监视进程程和Linnux整体性性能的理理想方法法。将Linnux进程称称作

4、任务务更准确确,但是是在本章章中我们们还是将将它们称称作进程程,因为为这个工工具也这这样称呼呼它们。1普通用用户和rooot用户都都可以运运行top。图3-1显示一一个空闲闲系统的的典型top输出。图3-11 ttop输出top显显示有两个部分分。大约约前三分分之一显显示关于于Linnux的整体体信息,其其余行为为各个进进程信息息。如果果扩展窗窗口则显显示更多多进程而而填充整整个屏幕幕。更全面的的Linnux信息可可以通过过使用top之外的的几个命命令来得得到。不不过,通通过一个个命令在在一个屏屏幕上显显示所有有信息比比较理想想。第一一行显示示最近1分钟、5分钟和15分钟的的负载平平均值。负载

5、平平均值表表示在CPU上运行行或者等等待运行行多少进进程。upttimee命令也也可以用用来显示示负载平平均值。接下来来是进程程信息,之之后是CPU、内存存和交换换区。内内存和交交换区信信息与freee命令输输出类似似。在我我们确定定内存和和CPU使用之之后的下下一个问问题是哪哪些进程正在在使用它它。大部分进进程信息息也可以以通过ps命令得得到,但但是top提供一种种更易于于阅读的的格式。最有用用的是用用于提供供帮助的的h,它列列出top的其他他交互式式命令。3.1.1 添加和和移除字字段字段可以以从显示示中添加加或移除除。进程程输出可可以按照照CPU、内存存或者其其他指标标排序。这是一一个查

6、看看什么进进程抢夺夺内存的的理想方方法。各各个Linnux发布版版本的top语法和和交互式式选项不不同,帮帮助命令令可以快快速列出出什么命命令可用用。有许许多交互互式选项项可用,用用户应该该花费一一些时间间来试验验它们。图3-22显示Redd Haat EEnteerprrisee Liinuxx ESS reeleasse 33的帮助助屏幕。图3-22 ttop的帮助助屏幕f命令用用来从top输出中中添加或或者移除除字段。图3-3是一个Redd Haat EEnteerprrisee Liinuxx ESS reeleaase 3的帮助助屏幕,显显示什么么字段可可以添加加。图3-33 tto

7、p添加/移除字字段的屏屏幕图3-44显示一一个SUSSE LLinuux 99.0 topp的帮助助屏幕,可可见它们们提供的的命令差差别非常常大。图3-44 SSUSEE toop的帮助助屏幕3.1.2 解释输输出让我们研研究top信息的的意义,以top的如下输出为例:top输输出的第第一行显显示负载载平均值值信息:这个输出出与upttimee的输出出类似。从中可可看到Linnux已经运运行时间间、当前前时间和和用户数数量,以以及1分钟、5分钟和15分钟负负载平均值。接接下来显显示进程程概要:我们看到到总共有有73个进程程,其中中72个进程程正在休休眠,一一个进程程正在运运行,没没有僵化化进程

8、或或者被停停止的进进程。当当一个进进程退出出并且它它的父进进程没有有通过waiit(2)或者waiitpiid(2)函数数等待它它时,它它就会成成为僵化化进程。这通常常是由于于父进程程在它的的子进程程之前退退出造成成的。不不同于进进程表中中的项,僵僵化进程程不使用用资源。停止的的进程是已经向向它发送送STOOP信号的的进程。更多信信息,请请参见siggnall(7)手册页页。接下来是是CPU信息:CPU行行描述CPU如何使使用它们们的CPU周期。top命令报报告CPU在用户户或者内内核模式式、运行行良好进进程以及及处在空空闲状态态时所花花费时间间的百分分比。iowwaitt列显示示没有进进程在

9、CPU上运行行时,处处理器等等待I/O完成的的时间的的百分比比。irq和sofftirq列表示示处理硬硬件和软软件中断断所花费费的时间间。早于于2.6版本的Linnux内核不不报告irq、sofftirrq和iowwaitt。接下来是是内存信信息:前三个指指标提供供内存使使用的概概要,列列出了总总的可用用内存、已使用用内存和和自由内内存,它它们都是是确定对对于Linnux内存是是否足够够所需信信息。接下来五五个指标标标识已已使用的的内存如如何分配配。shrrd字段显显示共享享的内存存使用,bufff是缓冲冲使用的的内存。分配给给内核或或者用户户进程的的内存可可以处在在三种不不同状态态:活动动(

10、acttivee)、不不活动脏脏(inaactiive dirrty)和不不活动干干净(inaactiive cleean)。活活动在top中用aottv表示,表表示该内内存最近近被使用用。不活活动脏在在top中用in_d表示,表表示该内内存最近近没有使使用,可可以回收收。要回回收内存存,必须须将它的的内容写写到磁盘盘,这个个进程命命名为“清洗”,也可可称作内内存的第第四种临临时状态态。一旦旦被清洗洗,不活活动脏内内存成为为不活动动干净内内存,在在top中用in_c表示。由Norrm MMurrray和Neiil HHormman合著的的Unddersstanndinng VVirttuall

11、 Meemorry iin RRed Hatt Ennterrpriise Linnux 3是一一本优秀秀的参考考书,网网址为htttp:ppeopple.reddhatt.coom/nnhorrmann/paaperrs/ rheel3_vm.pdff。接下来是是交换区区信息:av字段段是可用用的交换换区总量量,之后后是已用用数量和和自由数数量,最最后是内核核用于缓缓存的内内存数量量。top显显示的其其余部分分是进程程信息:top显显示尽可可能多的的能适合合屏幕的的进程。top(1)手册册页中提提供了字字段说明明的描述述。表3-1提供了了这些字字段的概概要。表3-11 topp进程字字段字

12、段说 明PID进程idd编号USERR进程所有有者的用用户名PRI进程的优优先级SIZEE进程大小小,包括括它的代代码、栈栈和数据据区域,以以千字节节为单位位RSS进程使用用的内存存总量,以以千字节节为单位位SHARRE进程使用用的共享享内存数数量STATT进程的状状态,通通常R表示运运行,S表示休休眠%CPUU自从最近近的屏幕幕更新以以来,这这个进程程使用的的CPU百分比比%MEMM这个进程程使用的的内存百百分比TIMEE自从进程程启动以以来,这这个进程程使用的的CPU时间量量CPU最近执行行进程的的CPUUCOMMMANDD正在执行行的命令令3.1.3 保存自自定义一个非常常好的top功能

13、是是保存当当前配置置。可以以使用交交互式命命令s任意更更改显示示,然后后按w保存该该视图。top在在用户的的主目录录中写入入一个.tooprcc文件,用用来保存存配置,以以便下一一次这个个用户启启动top时使用用相同的的显示选选项。top也也寻找默默认配置置文件/ettc/ttoprrc。这是是一个全全局配置置文件,当当任何用用户运行行实用工工具时,top将读取取该文件件。这个个文件可可以使top以安全全模式运运行,也也可以设设置刷新新延迟。安全模模式阻止止非rooot用户注注销或者者更改进进程的正正常值,也也阻止非非rooot用户更更改top的刷新新值。Redd Haat Ennterrpr

14、iise Linnux ES relleasse 33的一个/etcc/tooprcc示例文文件如下下所示:s表示安安全模式式,3定义三三秒钟刷刷新间隔隔。其他他发布版版本可能能有不同同的/ettc/ttoprrc格式。注销进进程是一一个非常常实用的的功能。如果用用户有一一个失控控的进程程,通过过top命令可可以轻易易找到并并注销它它,具体体步骤为为:运行行top,通过u命令显显示用户户的所有进程,然然后使用k注销它它。topp不只是是一个优优秀的性性能监视视工具,它它也可以以用来通通过注销销那些产产生问题题的进程程从而改改进性能能。3.1.4 批处理理模式top也也可以以以批处理理模式运运行

15、。尝尝试运行行以下命命令:-n 11告诉top只显示示一次迭迭代,-b选项表表示以适适合写入入文件的的文本形形式输出出或者定定向到另另一个程程序(例例如lesss)。类类似以下下两行脚脚本的命命令可以以顺利完成croon工作:可以将它它添加到到croontaab,并每每隔15分钟收收集一次次输出。通过批处处理可以以轻松完完成所有有任务,无无需用户户的干涉涉。所有有进程都都被列出出,输出出并不是每5秒钟刷刷新一次次。如果果用户的的主目录录中存在在一个.tooprcc配置文文件,那那么它用用来格式式化显示示。以下下是在一一个多CPUU Liinuxx服务器器上运行行top批处理模模式的输输出。注注

16、意,其其中没有有显示top输出的的所有258个进程程。现在读者者可能明明白了为为什么top会如此此流行。top的交互互式本质质和容易易自定义义输出的的能力使使它成为为诊断问问题的优优秀工具具。3.2 saarsar是是一个优优秀的一一般性能能监视工工具,它它可以输输出Linnux所完成成的几乎乎所有工工作的数数据。sar命令在syssetaat rrpm中提供供。示例例中使用用syssstaat版本5.00.5,这是是稳定的的最新版版本之一一。关于于版本和和下载信信息,请请访问syssstaat主页htttp:/peersoo.waanaddoo.fr/sebbasttienn.goodarr

17、d/。sar可可以显示示CPU、运行行队列、磁盘I/O、分页页(交换换区)、内存、CPU中断、网络等等性能数数据。最最重要的的sar功能是是创建数数据文件件。每一一个Linnux系统都都应该通通过croon工作收收集sar数据。该sar数据文文件为系系统管理理员提供供历史性性能信息息。这个个功能非非常重要要,它将将sar和其他他性能工工具区分分开。如如果一个个夜晚批批处理工工作正常常运行两两次,直直到下一一个早上上才会发发现这种种情况(除除非被叫叫醒)。我们需需要具备备研究12小时以以前的性性能数据据的能力力。sar数据收收集器提提供了这这种能力力。有许许多报告告语法,我我们首先先讨论数数据收

18、集集。3.2.1 sarr数据收收集器sar数数据收集集通过/ussr/llib/sa中的一一个二进进制可执执行文件件和两个个脚本来来完成。sar数据收收集器是是一个位位于/ussr/llib/sa/saddc的二进进制可执执行文件件。saddc的工作作是写入入数据收收集文件件/vaar/11og/sa/。可以以为saddc提供几几个选项项。常见见语法是是:间隔是取取样间的的秒数,iteerattionns是要取取得的样样本数量量,fille nname定义输输出文件件。简单单的saddc语法是/ussr/llib/sa/saddc 3360 5/ttmp/saddc.oout。这个个命令在在

19、5分钟间间隔取得得5个样本本并将它它们保存存在/tmmp/ssadcc.ouut。我们们应该定定期收集集样本,因因此需要要一个由由croon运行的的脚本。应该把把样本放放在一个个有意义义的地方方,如在在前一节节中使用用top脚本时时那样。syssstaat rrpm提供/ussr/llib/sa/sa11脚本来来完成所所有这些些事情。sa1(8)手册册页比sa1脚本本本身要长长得多。/ussr/llib/sa/sa11是一个个非常简简单的脚脚本,使使用语法法saddc -F -L 11 1 /vaar/llog/sa/sa#来运行saddc,其中#是某月月的日期期。较老老版本的的sa1使用da

20、tte+.%Y_%m_%d的输出出作为文文件后缀缀。如果果需要,可可以使用用-F选项使saddc强制创创建输出出文件。-L在写入入输出文文件之前前锁定它它,以防防止两个个saddc进程同同时运行行时损坏坏该文件件。较老老版本的的saddc没有-L选项,因因此sa1脚本执执行手工工锁定。sa1脚本的的选项只只是样本本之间的的间隔和和取样迭迭代的次次量。croon文件(/ettc/ccronn.d/syssstaat)和syssstaat一起提提供,在在各syssstaat版本之之间它有有所不同同。以下下是5.00.5版本的syssstaat的条条目:可见,在在syssstaat rrpm安装之之

21、后,saddc开始取取得样本本。syssstaat主页是htttp:/peersoo.waanaddoo.fr/ seebasstieen.ggodaard/2。文档档链接提提供以下下类似20006年1月14日的croontaab方案:Sebaastiien Goddardd的网站站的croontaab示例建建议周一一至周五五从早晨晨8点到下下午6点每10分钟取取一次样样本,其其他时间间每小时时取得一一个样本本(注意意,croontaab注释为为下午7点,但但实际上上是18:00,即下下午6点)。如果/vaar中的磁磁盘空间间足够,可可以每天天都每小小时的每每10分钟取取样一次次。如果果周末备

22、备份较慢慢,每小小时一次次saddc取样可可能帮助助不大。现在让我我们研究究更流行行的报告告语法。3.2.2 CPU统计数数据sar -u输出显显示CPU信息。-u选项是sar的默认认选项。该输出出以百分分比显示示CPU的使用用情况。表3-2解释该该输出。表3-22 sarr -uu字段字 段说 明CPUCPU编编号%useer在用户模模式中运运行进程程所花的的时间%nicce运行正常常进程所所花的时时间%sysstemm在内核模模式(系系统)中中运行进进程所花花的时间间%iowwaitt没有进程程在该CPU上执行行时,处处理器等等待I/O完成的的时间%idlle没有进程程在该CPU上执行行的

23、时间间这些看起起来应该该比较熟熟悉,它它和top报告中中的CPU信息内内容相同同。以下下显示输输出格式式:其中的55 100导致sar以5秒钟间间隔取得得10个样本本。任何何sar报告的的第一列列都是时时间戳。我们本来来可以研研究使用用-f选项通通过saddc创建的的文件。这个sar语法显显示sarr -ff/vaar/llog/ saa/saa21的输出出:在多CPPU LLinuux系统中中,sar命令也也可以为为每个CPU分解该该信息,如如以下sarr -uu -PP ALLL 55 5输出所所示:3.2.3 磁盘I/O统计数数据sar是是一个研研究磁盘盘I/O的优秀秀工具。以下是是sa

24、r磁盘I/O输出的的一个示示例。第一行-d显示磁磁盘I/O信息,52选项是是间隔和和迭代,就就像sar数据收收集器那那样。表表3-3列出了了字段和和说明。表3-33 saar -d字段字 段说 明DEV磁盘设备备tps每秒传输输数(或或者每秒秒IO数)rd_ssec/s每秒5112字节读读取数wr_ssec/s每秒5112字节写写入数512只只是一个个测量单单位,不不表示所所有磁盘盘I/O均使用512字节块块。DEV列是devv#-#格式的的磁盘设设备,其其中第一一个#是设备备主编号号,第二二个#是次编编号或者者连续编编号。对对于大于于2.5的内核核,sar使用次次编号。例如,在sar -d输

25、出中看到的dev3-0和dev3-1。它们对应于/dev/hda和/dev/hdal。请看/dev中的以下各项:/devv/hdda有主编编号3和次编编号0。hdaa1有主编编号3和次编编号1。3.2.4 网络统统计数据据sar提提供四种种不同的的语法选选项来显显示网络络信息。-n选项使使用四个个不同的的开关:DEV、EDEEV、SOCCK和FULLL。DEV显示网网络接口口信息,EDEEV显示关关于网络络错误的的统计数数据,SOCCK显示套套接字信信息,FULLL显示所所有三个个开关。它们可可以单独独或者一一起使用用。表3-4显示通通过-n DEVV选项报报告的字字段。表3-44 ssar

26、-n DEVV字段字 段说 明IFACCELAN接接口rxpcck/ss每秒钟接接收的数数据包txpcck/ss每秒钟发发送的数数据包rxbyyt/ss每秒钟接接收的字字节数txbyyt/ss每秒钟发发送的字字节数rxcmmp/ss每秒钟接接收的压压缩数据据包txcmmp/ss每秒钟发发送的压压缩数据据包rxmccst/s每秒钟接接收的多多播数据据包以下是使使用-n DEVV选项的sar输出:关于网络络错误的的信息可可以用sarr -nn EDDEV显示。表3-5列出了了显示的的字段。表3-55 sarr -nn EDDEV字段字 段说 明IFACCELAN接接口rxerrr/ss每秒钟接接收

27、的坏坏数据包包txerrr/ss每秒钟发发送的坏坏数据包包colll/s每秒冲突突数rxdrrop/s因为缓冲冲充满,每每秒钟丢丢弃的已已接收数数据包数数txdrrop/s因为缓冲冲充满,每每秒钟丢丢弃的已已发送数数据包数数txcaarr/s发送数据据包时,每每秒载波波错误数数rxfrram/s每秒接收收数据包包的帧对对齐错误误数rxfiifo/s接收的数数据包每每秒FIFFO过速的的错误数数txfiifo/s发送的数数据包每每秒FIFFO过速的的错误数数SOCKK参数显显示IPCCS套接字字信息。表3-6列出显显示的字字段及其其意义。表3-66 sarr -nn SOOCK字段字 段说 明t

28、otssck使用的套套接字总总数量tcpssck使用的TTCP套接字字数量udpssck使用的UUDP套接字字数量rawssck使用的rraw套接字字数量ip-ffragg使用的IIP段数量量sar可可以产生生许多其其他报告告。我们们有必要要仔细阅阅读sar(1)手册页页,查看看是否有有自己需需要的其其他报告告。3.3 vmmstaatvmsttat命令也也是显示示Linnux性能指指标的方方法,它它报告了了许多信信息,理理解这些些信息有有一定难难度。输出分为为6个类别:进程、内存、交换区区、I/O、系统统和CPU。与iosstatt类似,第第一个样样本是从从最近重重新启动动以来的的平均值值。

29、以下下是一个个典型的的vmsstatt输出:-m选项项使内存存字段以以兆字节节为单位位显示。vmsttat和许多多其他性性能命令令一样使使用取样样间隔和和计数参参数。进程(pproccs)信息息有两列列。r列是可可运行进进程的数数量,b列是阻阻塞进程程的数量量。内存部分分有4个报告告虚拟内内存如何何使用的的字段。表3-7列出这这些字段段及其意意义。表3-77 vvmsttat内存字字段字 段说 明Swpdd已用的交交换空间间数量freee自由RAAM数量bufff缓冲使用用的RAM数量cachhe文件系统统缓存使使用的RAM数量接下来是是交换(swaap)指标标。交换换只是一一个古老老术语,但

30、但是显然然不会消消失。交交换涉及及分页读读取或写写入磁盘盘的进程程所消耗耗的所有有内存。它将显显示系统统达到的的性能指指标水平平。而Linnux所做的的是,以以小块方方式按照照需要对对磁盘空空间进行行分页操操作。因因此,我我们可能能应该停停止说交交换到磁磁盘的内内存,并并开始说说分页到到磁盘的的内存。对于任任何一种种方法,表3-8解释了相关字段。表3-88 vmsstatt交换字字段字 段说 明si从磁盘分分页到内内存的数数量so从内存分分页到磁磁盘的数数量在交换之之后是两两个I/O字段。这部分分提供了了一个简简略介绍绍以帮助助确定Linnux是否正正忙于完完成许多多磁盘I/O。vmsstat

31、t只提供供两个字字段,显显示出入入磁盘的的数据量量(参见见表3-9)。表3-99 vmsstatt ioo字段字 段说 明bi从磁盘读读入的块块bo写入磁盘盘的块系统字段段提供Linnux内核进进行进程程管理的的繁忙程程度的摘摘要。中中断和上上下文开开关参见见表3-110。上下下文开关关指进程程移出CPU或者移移入CPUU。表3-110 vmsstat系统字字段字 段说 明in系统中断断cs进程上下下文开关关最后,CCPU状态信信息用总总CPU时间的的百分比比来表示示,如表表3-111所示。表3-111 vmsstatt cppu字段字 段说 明us用户模式式sy内核模式式wa等待I/Oid空

32、闲3.4 ioostaatiosttat命令是是另一个个研究磁磁盘吞吐吐量的工工具。和和sar类似,iosstatt可以使使用间隔隔和计数数参数。第一个个间隔的的输出包包含Linnux总运行行时间的的指标。与其他他性能命命令比较较,这可可能是iosstatt最独特特的功能能。例如如,以下下是一个个大部分分时间处处于空闲闲的系统统的输出出。可见见,从启启动以来来hda设备已已经读取取大约91158MMB(1875555772*5512/10024/10024)。Blk列是512字节块块。不使用选选项,iosstatt只显示示覆盖启启动以来来全部时时间的一一组指标标。CPU信信息包含含基本上上和t

33、op一样的的字段。iosstatt CPPU输出显显示在用用户模式式中执行行、执行行正常进进程、在在内核(系系统)模模式中执执行,进进程等待待I/O完成时处处于空闲闲和没有有等待进进程时处处于空闲闲的CPU时间的的百分比比。CPU行是所所有CPU的摘要要。磁盘信息息与sarr -dd提供的的信息类类似。输输出包括括每秒传传输数(tps)、每每秒512字节块块读取数数(Blkk_reead/s)、每每秒512字节块块写入数数(Blkk_wrrtn/s)和512字节块块读取(Blkk_reead)和写写入(Blkk_wrrtn)的总总数量。iosttat提供几几个用于于定制输输出的开开关。最最有用的的有: -c 只显示CPU行 -d 显示磁磁盘行 -k 以千字字节为单单位显示示磁盘输输出 -t 在输出中中包括时时间戳 -x 在输出出中包括括扩展的的磁盘指指标这些选项项可以组组合。iosstatt -ttk 55 2的输出出是:3.5 frreefreee命令输输出内存存和交换换信息,与top命令的作用非常相似。不使用选项,free以千字节为单位显示信息:freee命令有有少量选选项,推推荐使用用-mt。-m开关使使输出以以兆字节节为单位位,-t开关提提供一个个合计行行:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁