首页 文章 精选 留言 我的

精选列表

搜索[linux],共10000篇文章
优秀的个人博客,低调大师

架构文摘:Linux负载均衡总结性说明

在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 一、什么是负载均衡 负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡有两方面的含义: 首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间; 其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。 简单来说就是: 其一,是将大量的并发处理转发给后端多个节点处理,减少工作响应时间; 其二,是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。 目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。 二、负载均衡分类 对于负载均衡,主要分为以下几类: 二层负载均衡(mac) 一般采用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应) 三层负载均衡(ip) 一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应) 四层负载均衡(tcp) 在三次负载均衡的基础上,用IP+PORT接收请求,再转发到对应的机器。 七层负载均衡(http) 根据虚拟的URL或IP,主机名接收请求,再转向相应的处理服务器。 我们运维中最常见的是四层和七层负载均衡,这里重点说下这两种负载均衡。 四层负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加上四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。 四层负载均衡对应的负载均衡器称为四层交换机(L4 switch),主要分析IP层及TCP/UDP层,实现四层负载均衡。此种负载均衡器不理解应用协议(如HTTP/FTP/MySQL等等)。 实现四层负载均衡的软件有: F5:硬件负载均衡器,功能很好,但是成本很高 LVS:重量级的四层负载软件 Nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活 Haproxy:模拟四层转发,较灵活 七层负载均衡就是基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。 七层负载均衡对应的负载均衡器称为七层交换机(L7 switch),除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息,实现七层负载均衡。此种负载均衡器能理解应用协议。 实现七层负载均衡的软件有: Haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移 Nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多 Apache:功能较差 Mysql Proxy:功能尚可 总的来说,一般使用LVS做4层负载,Nginx做7层负载,Haproxy则比较灵活,能同时支持4层和7层负载均衡。 三、四层负载均衡与七层负载均衡对比 1. 从技术原理上分析 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。 所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。 2. 从应用场景的需求上分析 七层应用负载的好处,是使得整个网络更”智能化“。可以参考这篇:http应用优化和加速说明-负载均衡,就可以基本上了解这种方式的优势所在。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大地提升了应用系统在网络层的灵活性。很多在后台,例如Nginx或者Apache上部署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。 另外一个常常被提到的功能就是安全性。网络中最常见的SYN Flood攻击,即黑客控制众多源客户端,使用虚假IP地址对同一目标发送SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到拒绝服务(Denial of Service, DoS)的目的。从技术原理上也可以看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。另外负载均衡设备可以在七层层面设定多种策略,过滤特定报文,例如SQL Injection等应用层面的特定攻击手段,从应用层面进一步提高系统整体安全。 现在的七层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 四层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。 3. 七层应用需要考虑的问题 是否真的必要。七层应用的确可以提高流量智能化,同时必然不可避免地带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。在设计系统时需要考虑四层七层同时应用的混杂情况。 是否真的可以提高安全性。例如SYN Flood攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗DDoS能力,否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。 是否有足够的灵活度。七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。最简单的一个考核就是能否取代后台Nginx或者Apache等服务器上的调度功能。能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。 4. 总体对比 智能性 七层负载均衡由于具备OSI七层的所有功能,所以在处理用户需求上能更加灵活,从理论上讲,七层模型能对用户的所有向服务端的请求进行修改。例如对文件header添加信息,根据不同的文件类型进行分类转发。四层模型仅支持基于网络层的需求转发,不能修改用户请求的内容。 安全性 七层负载均衡由于具有OSI模型的全部功能,能更容易抵御来自网络的攻击;四层模型从原理上讲,会直接将用户的请求转发给后端节点,无法直接抵御网络攻击。 复杂度 四层模型的架构一般比较简单,容易管理,容易定位问题;七层模型架构比较复杂,通常也需要考虑结合四层模型的混用情况,出现问题定位比较复杂。 效率比 四层模型基于更底层的设置,通常效率更高,但应用范围有限;七层模型需要更多的资源损耗,在理论上讲比四层模型有更强的功能,现在的实现更多是基于http应用。 四、负载均衡技术方案说明 目前有许多不同的负载均衡技术用以满足不同的应用需求,下面从负载均衡所采用的设备对象(软/硬件负载均衡),应用的OSI网络层次(网络层次上的负载均衡),及应用的地理结构(本地/全局负载均衡)等来分类。 1. 软/硬件负载均衡 软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,KeepAlive+ipvs等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。 硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常是一个独立于系统的硬件,我们称之为负载均衡器。由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。 软件负载均衡与硬件负载均衡的对比: 软件负载均衡的优点是需求环境明确,配置简单,操作灵活,成本低廉,效率不高,能满足普通的企业需求。缺点是依赖于系统,增加资源开销;软件的优劣决定环境的性能;系统的安全,软件的稳定性均会影响到整个环境的安全。 硬件负载均衡优点是独立于系统,整体性能大量提升,在功能、性能上优于软件方式;智能的流量管理,多种策略可选,能达到最佳的负载均衡效果。缺点是价格昂贵。 2. 本地/全局负载均衡 负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡)。本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。 本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。 全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。 3. 网络层次上的负载均衡 针对网络上负载过重的不同瓶颈所在,从网络的不同层次入手,我们可以采用相应的负载均衡技术来解决现有问题。 随着带宽增加,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,而且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合(Trunking)技术。 链路聚合技术(第二层负载均衡)将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担,由此在逻辑上增大了链路的容量,使其能满足带宽增加的需求。 现代负载均衡技术通常操作于网络的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次 TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。在第四层交换机中,此种均衡技术得到广泛的应用,一个目标地址是服务器群VIP(虚拟 IP,Virtual IP address)连接请求的数据包流经交换机,交换机根据源端和目的IP地址、TCP或UDP端口号和一定的负载均衡策略,在服务器IP和VIP间进行映射,选取服务器群中最好的服务器来处理连接请求。 七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。 七层负载均衡优点表现在如下几个方面: 通过对HTTP报头的检查,可以检测出HTTP 400、500和600系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障。 可根据流经的数据类型(如判断数据包是图像文件、压缩文件或多媒体文件格式等),把数据流量引向相应内容的服务器来处理,增加系统性能。 能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是asp、cgi等的动态文档请求,把相应的请求引向相应的服务器来处理,提高系统的性能及安全性。 七层负载均衡缺点表现在如下几个方面: 七层负载均衡受到其所支持的协议限制(一般只有HTTP),这样就限制了它应用的广泛性。 七层负载均衡检查HTTP报头会占用大量的系统资源,势必会影响到系统的性能,在大量连接请求的情况下,负载均衡设备自身容易成为网络整体性能的瓶颈。 五、负载均衡策略 在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机。而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台处理服务请求较少的服务器能分配到更多的服务请求,出现故障的服务器将不再接受服务请求直至故障恢复等等。选择合适的负载均衡策略,使多个设备能很好的共同完成任务,消除或避免现有网络负载分布不均、数据流量拥挤反应时间长的瓶颈。在各负载均衡方式中,针对不同的应用需求,在OSI参考模型的第二、三、四、七层的负载均衡都有相应的负载均衡策略。 负载均衡策略的优劣及其实现的难易程度有两个关键因素:负载均衡算法以及对网络系统状况的检测方式和能力。 1. 负载均衡算法 (1)轮询均衡(Round Robin):每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。 (2)权重轮询均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是 3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。 (3)随机均衡(Random):把来自网络的请求随机分配给内部中的多个服务器。 (4)权重随机均衡(Weighted Random):此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。 (5)响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。 (6)最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮询或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。 (7)处理能力均衡:此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。 (8)DNS响应均衡(Flash DNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。 2. 网络系统状况的检测方式 尽管有多种的负载均衡算法可以较好的把数据流量分配给服务器去负载,但如果负载均衡策略没有对网络系统状况的检测方式和能力,一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下,负载均衡设备依然把一部分数据流量引向那台服务器,这势必造成大量的服务请求被丢失,达不到不间断可用性的要求。因此,良好的负载均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力。通常的检测方式包括: (1)Ping侦测:通过ping的方式检测服务器及网络系统状况,此种方式简单快速,但只能大致检测出网络及服务器上的操作系统是否正常,对服务器上的应用服务检测就无能为力了。 (2)TCP Open侦测:每个服务都会开放某个通过TCP连接,检测服务器上某个TCP端口(如Telnet的23口,HTTP的80口等)是否开放来判断服务是否正常。 (3)HTTP URL侦测:比如向HTTP服务器发出一个对main.html文件的访问请求,如果收到错误信息,则认为服务器出现故障。 3、其他因素 负载均衡策略的优劣除受上面所讲的两个因素影响外,在有些应用情况下,我们需要将来自同一客户端的所有请求都分配给同一台服务器去负担,例如服务器将客户端注册、购物等服务请求信息保存的本地数据库的情况下,把客户端的子请求分配给同一台服务器来处理就显的至关重要了。有几种方式可以解决此问题: (1)一是根据IP地址把来自同一客户端的多次请求分配给同一台服务器处理,客户端IP地址与服务器的对应信息是保存在负载均衡设备上的。 (2)二是在客户端浏览器 cookie内做独一无二的标识来把多次请求分配给同一台服务器处理,适合通过代理服务器上网的客户端。 (3)还有一种路径外返回模式(Out of Path Return),当客户端连接请求发送给负载均衡设备的时候,中心负载均衡设备将请求引向某个服务器,服务器的回应请求不再返回给中心负载均衡设备,即绕过流量分配器,直接返回给客户端,因此中心负载均衡设备只负责接受并转发请求,其网络负担就减少了很多,并且给客户端提供了更快的响应时间。此种模式一般用于HTTP服务器群,在各服务器上要安装一块虚拟网络适配器,并将其IP地址设为服务器群的VIP,这样才能在服务器直接回应客户端请求时顺利的达成三次握手。 六、负载均衡实施要素 1. 性能 性能是我们在引入均衡方案时需要重点考虑的问题,但也是一个最难把握的问题。衡量性能时可将每秒钟通过网络的数据包数目做为一个参数,另一个参数是均衡方案中服务器群所能处理的最大并发连接数目,但是,假设一个均衡系统能处理百万计的并发连接数,可是却只能以每秒2个包的速率转发,这显然是没有任何作用的。 性能的优劣与负载均衡设备的处理能力、采用的均衡策略息息相关,并且有两点需要注意: 均衡方案对服务器群整体的性能,这是响应客户端连接请求速度的关键; 负载均衡设备自身的性能,避免有大量连接请求时自身性能不足而成为服务瓶颈。 有时我们也可以考虑采用混合型负载均衡策略来提升服务器群的总体性能,如DNS负载均衡与NAT负载均衡相结合。另外,针对有大量静态文档请求的站点,也可以考虑采用高速缓存技术,相对来说更节省费用,更能提高响应性能;对有大量 ssl/xml内容传输的站点,更应考虑采用ssl/xml加速技术。 2. 可扩展性 IT技术日新月异,一年以前最新的产品,现在或许已是网络中性能最低的产品;业务量的急速上升,一年前的网络,现在需要新一轮的扩展。合适的均衡解决方案应能满足这些需求,能均衡不同操作系统和硬件平台之间的负载,能均衡HTTP、邮件、新闻、代理、数据库、防火墙和 Cache等不同服务器的负载,并且能以对客户端完全透明的方式动态增加或删除某些资源。 3. 灵活性 均衡解决方案应能灵活地提供不同的应用需求,满足应用需求的不断变化。在不同的服务器群有不同的应用需求时,应有多样的均衡策略提供更广泛的选择。 4. 可靠性 在对服务质量要求较高的站点,负载均衡解决方案应能为服务器群提供完全的容错性和高可用性。但在负载均衡设备自身出现故障时,应该有良好的冗余解决方案,提高可靠性。使用冗余时,处于同一个冗余单元的多个负载均衡设备必须具有有效的方式以便互相进行监控,保护系统尽可能地避免遭受到重大故障的损失。 5. 易管理性 不管是通过软件还是硬件方式的均衡解决方案,我们都希望它有灵活、直观和安全的管理方式,这样便于安装、配置、维护和监控,提高工作效率,避免差错。在硬件负载均衡设备上,目前主要有三种管理方式可供选择: 命令行接口(CLI:Command Line Interface),可通过超级终端连接负载均衡设备串行接口来管理,也能telnet远程登录管理,在初始化配置时,往往要用到前者; 图形用户接口(GUI:Graphical User Interfaces),有基于普通web页的管理,也有通过Java Applet 进行安全管理,一般都需要管理端安装有某个版本的浏览器; SNMP(Simple Network Management Protocol,简单网络管理协议)支持,通过第三方网络管理软件对符合SNMP标准的设备进行管理。

优秀的个人博客,低调大师

Linux进程监控工具Supervisor简易使用教程

Supervisor 官网为 http://supervisord.org/ A Process Control System 使用b/s架构、运行在类Unix系统上一个进程监控管理系统。 它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。 安装 Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。 – sudo pip install supervisor` – sudo easy_install supervisor pip的安装请参考 Python pip 安装使用教程 初识 安装完成后系统会增加几个命令 supervisord 用于启动supervisor服务。 supervisorctl

优秀的个人博客,低调大师

linux中删除指定日期之前的文件

要删除系统中就的备份文件,就需要使用命令了: #find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f {} \; 假如在一个目录中保留最近30天的文件,30天前的文件自动删除 #find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f {} \; /tmp --设置查找的目录; -mtime +30 --设置时间为30天前; -type f --设置查找的类型为文件; -name *.sh[ab] --设置文件名称中包含sha或者shb; -exec rm -f --查找完毕后执行删除操作; 提示:将此命令写入crontab后即可自动完成查找并删除的工作 另外的方法大同小异 #find . -mtime +30 -type f | xargs rm -rf 我的操作是:先ls -ltr 查看时间,没有太久的所以就用 -cmin n查找系统中最后N分钟被改变文件状态的文件。具体命令:$ find /home/oracle/test6 -cmin +20 -type f -name *.xml -exec rm -f { } \; 另外的方法大同小异 #find . -mtime +30 -type f | xargs rm -rf $find . -type f -cmin +10 -exec rm -rf *.xml {} \; find . type f -name "debug*" -atime +3 -exec rm -f {} \; 首先cd进入目录: find . -name "*~" -exec rm {} \; find . -ctime +n -exec -exec rm -vi {} \; 这里的+n是指多少天以前,比如:+7 find . -ctime +7 -exec -exec rm -vi {} \; 如果不想手动确认,把命令中的-vi改成-fv 请详查find命令. 使用find时要区分清楚atime,ctime,mtime的区别,一般都使用mtime来查找,因为在ls -al显示出来的就是mtime时间戳,可以使用: # find $PAHT -mtime +3 -ok rm {} \; 在交互模式下删除比较保险。 一、按照一定日期格式命名文件 1、按照一定的格式输出日期: date +"%y%m%d" 格式说明: % : 印出 % %n : 下一行 %t : 跳格 %H : 小时(00-23) %I : 小时(01-12) %k : 小时(0-23) %l : 小时(1-12) %M : 分钟(00-59) %p : 显示本地 AM 或 PM %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00-60) %T : 直接显示时间 (24 小时制) %X : 相当于 %H:%M:%S %Z : 显示时区 日期方面 : %a : 星期几 (Sun-Sat) %A : 星期几 (Sunday-Saturday) %b : 月份 (Jan-Dec) %B : 月份 (January-December) %c : 直接显示日期与时间 %d : 日 (01-31) %D : 直接显示日期 (mm/dd/yy) %h : 同 %b %j : 一年中的第几天 (001-366) %m : 月份 (01-12) %U : 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形) %w : 一周中的第几天 (0-6) %W : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形) %x : 直接显示日期 (mm/dd/yy) %y : 年份的最后两位数字 (00.99) %Y : 完整年份 (0000-9999) 2、命名带有日期的文件:filename`date +%y%m%d`,此处的"`"不是单引号。 二、以创建文件日期为界线删除文件 1、find命令简解 find pathname -options [-print -exec -ok ...] pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 options: -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。 -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 -type 查找某一类型的文件,诸如: b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。 -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。 -mount:在查找文件时不跨越文件系统mount点。 -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 对于时间相关的参数,有以下补充: -amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后N分钟被改变文件状态的文件 -ctime n 查找系统中最后n*24小时被改变文件状态的文件 -mmin n 查找系统中最后N分钟被改变文件数据的文件 -mtime n 查找系统中最后n*24小时被改变文件数据的文件 2、删除固定日期以前的文件 find logs -type f -mtime +5 -exec rm { } \; http://blog.chinaunix.net/uid-25785357-id-3316003.html

优秀的个人博客,低调大师

Linux下网络流量实时监控工具大全

转:http://support.huawei.com/ecommunity/bbs/10268799.html?p=last 需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,没有即时性,并且有时候打开监控页面不方便,个人喜欢随手在某台服务器上输入一个命令,查看网卡即时流量。 一、iptraf软件 rhel的iso里有包含,我公司的系统,并没有默认安装,它功能强大,可以按照协议,网卡等进行分析。 1.1 iptraf安装 源码安装 wget ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz tar zxvf iptraf-3.0.0.tar.gz cd iptraf-3.0.0 ./Setup yum方式安装 yum install -y iptraf 1.2 iptraf使用 [root@kaifa opt]# iptraf 按任意键继续 第一项:IP流量监控 第二项:常规查看网卡流量状态。只查看各网卡的总流量 第三项:详细查看网卡流量状态。比如按TCP,UDP,ARP等协议查看 选allinterfaces,查看所有网卡接口 界面分上下两部分,上部分可详细显示哪个与之相连的IP,发了多少包,即时流量是多少,下部分,可以显示udp等信息。 按Q退出监控界面,然后选择“Exit”退出iptraf。 二、nload软件 rhel iso不带,需要去第三方网站下载源码包。功能相对单一,只能查看总的流量,不能像上款的iptraf那样,可看总流量,可细分查看其它协议点的流量。nload默认分为上下两块,每部分都有当前流量(Curr),平均流量(Min),最大流量(Max),总流量(Ttl),看起来还是比较直观的。 2.1 nload安装 wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz tar zxvf nload-0.7.2.tar.gz cd nload-0.7.2 ./configure–prefix=/usr/local/nload make make install 2.2 nload使用 [root@kaifa opt]# /usr/local/nload/bin/nload eth0 三、ifstat软件 rhel iso不自带,虽然到第三方网站下载源码包,编译安装。这个软件还有windows版,它可以报告网卡接口流量状态,能查看网卡的流出和流入的字节,是按每秒生产一次数据。 3.1 ifstat安装 # wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz # tar zxvf ifstat-1.1.tar.gz # cd ifstat-1.1 # ./configure --prefix=/usr/local/ifstat # make && make install 3.2 ifstat使用 # /usr/local/ifstat/bin/ifstat 3.3相关参数 -l 监测环路网络接口(lo)。缺省情况下,ifstat监测活动的所有非环路网络接口。经使用发现,加上-l参数能监测所有的网络接口的信息,而不是只监测lo的接口信息,也就是说,加上-l参数比不加-l参数会多一个lo接口的状态信息。 -a 监测能检测到的所有网络接口的状态信息。使用发现,比加上-l参数还多一个plip0的接口信息,搜索一下发现这是并口(网络设备中有一个叫PLIP(Parallel Line Internet Protocol).它提供了并口...) -z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的 -i 指定要监测的接口,后面跟网络接口名 -s 等于加-d snmp:[comm@][#]host[/nn]]参数,通过SNMP查询一个远程主机 -h显示简短的帮助信息 -n关闭显示周期性出现的头部信息(也就是说,不加-n参数运行ifstat时最顶部会出现网络接口的名称,当一屏显示不下时,会再一次出现接口的名称,提示我们显示的流量信息具体是哪个网络接口的。加上-n参数把周期性的显示接口名称关闭,只显示一次) -t在每一行的开头加一个时间戳(能告诉我们具体的时间) -T报告所有监测接口的全部带宽(最后一列有个total,显示所有的接口的in流量和所有接口的out流量,简单的把所有接口的in流量相加,out流量相加) -w 用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽 -W如果内容比终端窗口的宽度还要宽就自动换行 -S在同一行保持状态更新(不滚动不换行)注:如果不喜欢屏幕滚动则此项非常方便,与bmon的显示方式类似 -b用kbits/s显示带宽而不是kbytes/s(bit和byte有何区别应该都知道吧) -q安静模式,警告信息不出现 -v显示版本信息 -d指定一个驱动来收集状态信息 四、sar软件 这个工具RHEL iso里包含,它是一个优秀的性能监控工具,不仅仅监控网络,它可以显示cpu,运行队列,磁盘i/o,分页(交换区),内存,CPU中断等性能数据。Sar命令在sysstat包中,我公司系统没有安装此包,所以要安装它,才有sar命令。 4.1 sar安装 # yum install sysstat 4.2 sar使用 # sar -n DEV 5 2 命令后面5 2意思是:每5秒钟取一次值,取2次。 IFACE:LAN接口 rxpck/s:每秒钟接收的数据包 txpck/s:每秒钟发送的数据包 rxbyt/s:每秒钟接收的字节数 txbyt/s:每秒钟发送的字节数 rxcmp/s:每秒钟接收的压缩数据包 txcmp/s:每秒钟发送的压缩数据包 rxmcst/s:每秒钟接收的多播数据包 五、iftop软件 RHEL iso不自带,iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等 5.1 iftop安装 # wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz # tar zxvf iftop-0.17.tar.gz # cd iftop-0.17 # ./configure -prefix=/usr/local/iftop # make && make install 5.2 iftop使用 [root@nfstest opt]# /usr/local/iftop/sbin/iftop 5.3、界面相关说明 界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。 中间的<= =>这两个左右箭头,表示的是流量的方向。 TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm:运行iftop到目前时间的总流量 peak:流量峰值 rates:分别表示过去2s 10s 40s的平均流量 5.4、相关参数 常用的参数 -i设定监测的网卡,如:# iftop -i eth1 -B以bytes为单位显示流量(默认是bits),如:# iftop -B -n使host信息默认直接都显示IP,如:# iftop -n -N使端口信息默认直接都显示端口号,如: # iftop -N -F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0 -h(display this message),帮助,显示参数信息 -p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息; -b使流量图形条默认就显示; -f这个暂时还不太会用,过滤计算包用的; -P使host信息及端口信息默认就都显示; -m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

优秀的个人博客,低调大师

Linux下一次删除百万文件

线上环境遇到的一个问题,文件数量过多,执行rm命令报错 # rm -f ./* -bash: /bin/rm: Argument list too long 根据报错检查状态 # ls | wc -l 634084 # du -sh 64G 在线下环境进行故障复现 测试环境准备 # df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 ext4 1.8T 331G 1.4T 20% / tmpfs tmpfs 7.7G 0 7.7G 0% /dev/shm /dev/sda1 ext4 190M 61M 120M 34% /boot # grep name /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz # free -m total used free shared buffers cached Mem: 15709 1643 14066 8 452 559 -/+ buffers/cache: 631 15078 Swap: 8191 0 8191 # cat /etc/redhat-release CentOS release 6.8 (Final) # uname -r 2.6.32-642.1.1.el6.x86_64 测试生成测试数据 # for i in `seq 1000000`;do echo "${i}" >> ${i}.txt;done # ls | wc -l 1000000 # du -sh 3.9G . # ls *.txt -bash: /bin/ls: Argument list too long # rm -f ./* -bash: /bin/rm: Argument list too long 方法1:使用for循环方式执行删除任务 # time for i in `ls ./`;do rm -f ${i};done real 58m44.234s user 8m59.930s sys 37m16.453s 时间太长了,绝壁不能忍 方法2:直接删目录 # time rm -rf test && mkdir test real 0m56.768s user 0m1.453s sys 0m22.603s # du -sh test 4.0K test 速度不错,然而很多情况下不能直接删目录,有点蛋疼 方法3:使用 find + xargs 组合命令执行删除任务(网上流传最多的方法) # time find ./ -type f | xargs -n 1 rm -f real 18m30.267s user 0m9.536s sys 1m38.999s # time find ./ -type f | xargs rm -f real 16m16.774s user 0m2.232s sys 0m30.454s 一样蛋疼,如果需求是删除全部文件的话,用这种方法就太low了,适合删除部分数据的场景 方法4:使用 ls + xargs 组合命令执行删除任务 # time ls | xargs -L 100 rm -f real 1m3.801s user 0m7.054s sys 0m28.582s # time ls | xargs -L 1000 rm -f real 0m55.917s user 0m5.322s sys 0m24.778s # time ls | xargs -L 2000 rm -f real 0m55.560s user 0m5.209s sys 0m24.702s # time ls | xargs -L 5000 rm -f real 0m55.057s user 0m5.196s sys 0m24.666s # time ls | xargs -L 10000 rm -f real 0m55.733s user 0m5.121s sys 0m24.657s # time ls | xargs -L 100000 rm -f xargs: argument list too long real 0m4.018s user 0m3.324s sys 0m0.701s 速度杠杠滴~~但是注意文件名长度,选择合适的传参数量 方法5:使用rsync命令来执行删除任务 # mkdir /tmp/Null # time rsync --delete-before -d /tmp/Null/ ./ real 0m56.386s user 0m1.767s sys 0m28.075s # ll total 0 # du -sh ./ 29M ./ 没什么优点,缺点是rsync命令比较冷门,参数不容易记住,用的机会也不多,作为拓展方法了解一下就好 如果你有其他好的方法,可以一起探讨一下~~

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册