11 2020 档案
摘要:通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1.top 查到占用cpu高的进程pid 2.查看该pid的线程:top -H -p 9532 3.查看这个线程所有系统调用:strace -p 10017 不停循环输出Connection timed out,让开
阅读全文
摘要:Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id 可以看到是2913,现在可以使用如下命令查看内存: top -p 2913 这样可以动态实时的看到CPU和内存的占用率,然后按q键回到命令行
阅读全文
摘要:https://blog.csdn.net/wangtingting_100/article/details/95072653 https://www.cnblogs.com/z-books/p/6612685.html https://www.easyice.cn/archives/328 htt
阅读全文
摘要:iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令
阅读全文
摘要:1、Redis 的简介 Redis:REmote DIctionary Server(远程字典服务)。 是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。是完全开源免费的,用C语言编写的,遵守BSD协议,高性能的(key/value)分布式内存
阅读全文
摘要:本篇博客我们主要介绍如何用Redis实现布隆过滤器,但是在介绍布隆过滤器之前,我们首先介绍一下,为啥要使用布隆过滤器。 1、布隆过滤器使用场景 比如有如下几个需求: ①、原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中? 解决办法一:将10亿个号码存入数
阅读全文
摘要:本篇博客我们来介绍Redis使用过程中需要注意的三种问题:缓存穿透、缓存击穿、缓存雪崩。 1、缓存穿透 一、概念 缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。 如下图红色的流程: 比如客户查询一个根本不存在的东西,首先从Redis中查
阅读全文
摘要:在介绍这篇文章之前,我们先来看如下几个问题: ①、如何设置Redis键的过期时间? ②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗? ③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择? 如果上面的几个
阅读全文
摘要:在上一篇博客我们介绍了 Redis哨兵(Sentinel)模式,哨兵模式主要是解决高可用问题,在master节点宕机时,slave节点能够自动切换成为master节点 本篇博客我们来介绍Redis的另外一种模式 集群模式. PS:我这里搭建演示的版本是redis-5.0.5,这个版本对于集群搭建会有
阅读全文
摘要:在上一篇博客 Redis详解(八) 主从复制,我们简单介绍了Redis的主从架构,但是这种主从架构存在一个问题,当主服务器宕机,从服务器不能够自动切换成主服务器,为了解决这个问题,我们又介绍了哨兵模式,本篇博客我们继续深入的介绍一下这种模式. 1、架构图 2、服务器列表 3、搭建主从模式 ①、主要配
阅读全文
摘要:前面介绍Redis,我们都在一台服务器上进行操作的,也就是说读和写以及备份操作都是在一台Redis服务器上进行的,那么随着项目访问量的增加,对Redis服务器的操作也越加频繁,虽然Redis读写速度都很快,但是一定程度上也会造成一定的延时,那么为了解决访问量大的问题,通常会采取的一种方式是主从架构M
阅读全文
摘要:上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失)。对于数据完整性要求很严格的需求,怎么解决呢? 本篇博客接着来介绍Redis的另一种持久化方式——AOF。 1、AOF简介
阅读全文
摘要:前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis
阅读全文
摘要:前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis底层的六种数据结构。在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,
阅读全文
摘要:上一篇博客我们介绍了 redis的五大数据类型详细用法,但是在 Redis 中,这几种数据类型底层是由什么数据结构构造的呢?本篇博客我们就来详细介绍Redis中五大数据类型的底层实现。 1、演示数据类型的实现 上篇博客我们在介绍 key 相关命令的时候,介绍了如下命令: OBJECT ENCODIN
阅读全文
摘要:我们说 Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。本篇博客我们就将介绍这些数据类型的详细使用以及顺带介绍Redis系统的相关命令用法。 注
阅读全文
摘要:上一篇博客我们介绍了如何安装Redis,在Redis的解压目录下有个很重要的配置文件 redis.conf (/opt/redis-4.0.9目录下),关于Redis的很多功能的配置都在此文件中完成的,在上一讲我也说过,一般为了不破坏安装的文件,出厂默认配置最好不要去改,所以我们将此配置文件复制到
阅读全文
摘要:相同的neutron命令用于具有代理或Octavia的LBaaS v2。 建立一个LBaaS v2 负载均衡器 1.首先在网络上创建负载均衡器。 在此示例中,专用网络是具有两个Web服务器实例的隔离网络: $ neutron lbaas-loadbalancer-create --name test
阅读全文
摘要:版本:Pike 操作系统:CentOS 7 手动方式集成 Octavia Step 1. 安装软件包 yum -y install \ openstack-octavia-api.noarch \ openstack-octavia-common.noarch \ openstack-octavia
阅读全文
摘要:【了解】 其实说白了,Octavia就是将用户的API请求经过逻辑处理,转换成Haproxy或者Nginx的配置参数,下发到amphora虚机中。Octavia的内部实现中,逻辑流程的处理主要使用TaskFlow库。 【基本概念】 LBaas Load Balancing as a Service,
阅读全文
摘要:openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比 【负载均衡】 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应。 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回。 【主流实
阅读全文
摘要:什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RAM (random access memory) into chucks of memory called pages. Sw
阅读全文
摘要:在用reboot命令启动unix系统后,系统提示出错信息,部分应用程序不能正常工作。经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确实被破坏了,翻来覆去找不到文件遭破坏的原因,最后想到了写缓存命令——sync,在reboot前没有运行sync命令,导致了系统文件的改变而不能正常工作。
阅读全文
摘要:系统资源都是通过进程来读取更改的,为了保证系统资源的安全,传统的Linux使用用户、文件权限的概念来限制资源的访问,通过对比进程的发起用户和文件权限以此来保证系统资源的安全,这是一种自由访问控制方式(DAC);但是随着系统资源安全性要求提高,出现了在Linux下的一种安全强化机制(SELinux),
阅读全文
摘要:本文介绍防火墙知识和Linux主机处理数据包的过程,同时介绍了iptables管理防火墙的方法。 6.1 为什么需要防火墙 对于没有防火墙存在的一条网络路线中,主机A发送给主机B的任何一个数据包,主机B都会照单全收,即使是包含了病毒、木马等的数据也一样会收。虽说害人之心不可有,但是在网络上,你认为是
阅读全文
摘要:在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等。在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM(Pluggable Authentication Modules)可动态加载验证模块,因为可以按需要
阅读全文
摘要:1.1 wrap简介 wrap工作在内核空间和应用程序中间的库层次中。在内核接受到数据包准备传送到用户空间时都会经过库层次,对于部分(只是部分)应用程序会在经过库层次时会被wrap库文件阻挡下来检查一番,如果允许通过则交给应用程序。 1.2 查看是否支持wrapper wrap只会检查tcp数据包,
阅读全文
摘要:1.inotify+rsync 如果要实现定时同步数据,可以在客户端将rsync加入定时任务,但是定时任务的同步时间粒度并不能达到实时同步的要求。在Linux kernel 2.6.13后提供了inotify文件系统监控机制。通过rsync+inotify组合可以实现实时同步。 inotify实现工
阅读全文
摘要:2.1 说在前面的话 rsync官方网站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。 rsync可以实现scp
阅读全文
摘要:使用ssh-agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如ssh命令、xshell等)连接远端主机sshd时需要输入对方用户密码的问题。 但如果执行ssh命令所在的主机上保存了多套秘钥且将各公钥分发给了不同的远端主机,这时即使使用了公钥认证,也依然需要输入密码,因为ssh客户端不知
阅读全文
摘要:本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机。 另外,本人翻译了ssh客户端命令的man文档,如本文有不理解的地方,可以参考man文档手册:ssh中文手册 1.1 非对称加密基础知识
阅读全文
摘要:linux破解密码 案例一:破解Linux系统密码 1.启动Linux 2.在grub菜单选择上下键 3.按e 选择kernel这行,在选择e 4.在最后空格加上1,回车 5.按b键启动 6.sh-3.2# passwd 修改密码 7.sh-3.2# init 5 启动Linux-->在grub菜单
阅读全文
摘要:Linux日志服务器设置 使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上。 假设需要管理几十台服务器,每天的重要工作就是查看这些服务器的日志,可是每台服务器单独登录,并且查看日志非常烦琐,此时可以把几十台服务器的日志集中到一台日志服务器上吗?这样每天只要登录这台日志服务器,
阅读全文
摘要:CentOS 7和CentOS 6管理服务的方式完全不同。本文先说明CentOS 6上的管理方式,在最后列出CentOS 7上服务管理方式。 11.1 服务的概念 服务是向外提供服务的进程,一般来说都会放在后台,既然要持续不断的提供外界随时发来的服务请求,服务进程就需要常驻在内存中,且不应该和终端有
阅读全文
摘要:今天有个人问我du和df的统计结果为什么会不同。给他解析了一番,后来想想还是写篇文章从原理上来分析分析。 我们常常使用du和df来获取目录或文件系统已占用空间的情况。但它们的统计结果是不一致的,大多数时候,它们的结果相差不会很大,但有时候它们的统计结果会相差非常大。 例如: ##### df的统计结
阅读全文
摘要:将磁盘进行分区,分区是将磁盘按柱面进行物理上的划分。划分好分区后还要进行格式化,然后再挂载才能使用(不考虑其他方法)。格式化分区的过程其实就是创建文件系统。 文件系统的类型有很多种,如CentOS 5和CentOS 6上默认使用的ext2/ext3/ext4,CentOS 7上默认使用的xfs,wi
阅读全文
摘要:计算机启动分为内核加载前、加载时和加载后3个大阶段,这3个大阶段又可以分为很多小阶段,本文将非常细化分析每一个重要的小阶段。 内核加载前的阶段和操作系统无关,Linux或Windows在这部分的顺序是一样的。由于使用anaconda安装Linux时,默认的图形界面是不支持GPT分区的,即使是目前最新
阅读全文
摘要:在解释Linux网络管理相关的内容时,我觉得有必要先解释数据包转发功能以及因此涉及到的路由决策,这对厘清路由和未来的防火墙有重要帮助。然后再介绍网络配置命令和相关文件。 13.1 Linux处理数据包过程 当向外界主机发送数据时,在它从网卡流入后需要对它做路由决策,根据其目标决定是流入本机数据还是转
阅读全文
摘要:在Linux操作系统中,除了用户即时执行的操作命令外,还可以配置在指定的时间,指定的日期执行预先计划的系统管理任务(如定期备份、定期采集检测数据)。CentOS系统默认已安装了at、cronie软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,分别通过at、crontab
阅读全文
摘要:1. 什么是Cpu的Load 图1: 图2: 图3: 图4: 使用uptime、top或者查看/proc/loadavg都可以看到CPU的load统计,这里有三个值,分别代表1分钟、5分钟和15分钟的CPU Load情况。大部分人认为这三个数值越小说明比较好,如果越高说明系统可能存在问题或负载过高了
阅读全文
摘要:9.1 进程简单说明 进程是一个非常复杂的概念,涉及的内容也非常非常多。在这一小节所列出内容,已经是我极度简化后的内容了,应该尽可能都理解下来,我觉得这些理论比如何使用命令来查看状态更重要,而且不明白这些理论,后面查看状态信息时基本上不知道状态对应的是什么意思。 但对于非编程人员来说,更多的进程细节
阅读全文
摘要:磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可限制用户或组在某个特定文件系统中所能使用的最大空间。 磁盘配额quota用来限制用户能够使用的磁盘空间的大小。 注: 磁盘配额的记录文件保存在开启磁盘配额分区的根目录下面,它们是aquota.user和aquota.group; 磁盘配额只对一般身份用
阅读全文
摘要:一丶raid 1.raid定义 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项
阅读全文
摘要:逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添
阅读全文
摘要:/etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我
阅读全文
摘要:一、认识磁盘 1、什么是磁盘: 磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写。绝大多数磁盘被永久封存在一个密封的盒子里。 图2: 2、磁盘运行机理: 简单来说就是多个盘片之间靠主轴连接,电机带动主轴做旋转运动
阅读全文
摘要:linux yum的配置文件 repo文件详解 什么是repo文件? repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用! YUM的工作原理并
阅读全文
摘要:yum 命令讲解 (一)yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软
阅读全文
摘要:gzip命令 减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 注意:压缩完成后会删除原文件语法: gzip [选项] 压缩(解压缩)的文件名 各选项的含义: -c
阅读全文
摘要:Linux awk命令: AWK是一种处理文本文件的语言,是一个强大的文本分析工具。我们可以利用awk命令,把一个文本整理成我们想要的样子。例如可以整理成表的样子。awk其实是一门编程语言,支持判断、数组、循环等功能。 语法: awk [选项参数] 'script' var=value file(s
阅读全文
摘要:sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。 sed命令的语法格式: sed的命令格式: sed
阅读全文
摘要:命令描述: ethtool 是用于查询及设置网卡参数的命令。 使用概要: ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等 ethtool –h //显示ethtool的命令帮助(help) ethtool –i ethX //查询ethX
阅读全文
摘要:ip 是个命令, ip 命令的功能很多!基本上它整合了 ifconfig 与 route 这两个命令,不过ip 的功能更强大! 如果您有兴趣的话,请自行 vi /sbin/ifup 就知道整个 ifup 就是利用 ip 这个命令来实现的。下面介绍一下使用方法 ip [option] [动作] [命令
阅读全文
摘要:语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。 主选项:c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。压缩 x 从档案文件中释放文件。相当于拆包。解压 t 列出档案文
阅读全文
摘要:grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 grep搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。 grep的规则表达式(正则一定要转义) ^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 $ #锚定行的
阅读全文
摘要:Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前
阅读全文
摘要:linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 1.命令格式: df [选项] [文件] 2.命令功能: 显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被
阅读全文
摘要:du常见命令参数 用法:du [选项]... [文件]... 或:du [选项]... --files0-from=F 计算每个文件的磁盘用量,目录则取总用量。 长选项必须使用的参数对于短选项时也是必需使用的。 -a, --all 输出所有文件的磁盘用量,不仅仅是目录 --apparent-size
阅读全文
摘要:我们先看man lscpu display information about the CPU architecture 翻译:显示cpu架构信息 具体的描述如下: lscpu gathers CPU architecture information from sysfs, /proc/cpuinf
阅读全文
摘要:简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 输出信息含义 执行netstat后,其输出结果为 Active Interne
阅读全文
摘要:lsof命令介绍 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TC和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符
阅读全文
摘要:本文详细介绍了linux find命令格式及find命令案例,希望对您的学习有所帮助。1、find命令的一般形式为; find pathname -options [-print -exec -ok ...] 2、find命令的参数; pathname: find命令所查找的目录路径。例如用.来表示
阅读全文
摘要:首先需要说的是,这个tcpdump是一个非常功能强大的命令,功能强大,那也就意味着这个命令的使用是非常复杂的,也就是说,我接下来整理的内容也会是非常多的。如果你想去掌握整个tcpdump命令的话,就需要你稍微有点耐心去把整篇文章读完。OK,Let’s go! 命令简介 tcpdump是一款强大的网络
阅读全文
摘要:ifstat 介绍 ifstat工具是个网络接口监测工具,比较简单看网络流量 实例 默认使用 #ifstat eth0 eth1 KB/s in KB/s out KB/s in KB/s out 0.07 0.20 0.00 0.00 0.07 0.15 0.58 0.00 默认ifstat不监控
阅读全文
摘要:sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包括:文件的读写情况、 系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 sar命令常用格式 s
阅读全文
摘要:简介 mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心c
阅读全文
摘要:vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。 物理内存和虚拟内存区别 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我
阅读全文
摘要:Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 iostat语法 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统CPU统计
阅读全文
摘要:sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! sort:将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 语法和选项 -u :去除重复行 -r :降序排列,默认是升序 -o : 将排序结果输出到文件中,类
阅读全文
摘要:第一次使用vim,啥都不懂,输入也不能输入,退出也不会退出,特别的尴尬。。。。后来慢慢的接触学习,发现vim真的挺好用的,不过上手有点慢,多用就对了,用多了我相信你也会喜欢这个文本编辑工具的。 vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输
阅读全文
摘要:参考:https://www.cnblogs.com/tinywan/category/878355.html?page=2 https://www.cnblogs.com/waitig/p/5661899.html https://www.cnblogs.com/ysocean/tag/Linux
阅读全文