Linux 精华文章
猴哥_IT小菜鸟
三分天注定七分靠打拼 爱拼才会赢
展开
-
linux的less命令
less 在查看之前不会加载整个文件。可以尝试使用 less 和 vi 打开一个很大的文件,你就会看到它们之间在速度上的区别。 在 less 中导航命令类似于 vi。本文中将介绍一些导航命令以及使用 less 的其它一些技巧。 1 搜索当使用命令 less file-name 打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会被高亮显示。 向前搜索/ - 使转载 2017-03-01 10:24:58 · 566 阅读 · 0 评论 -
多线程还是多进程的区别
关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。 我们按照多个不同的维度,来看看多线程和多进程的对比(注:因为是感性的比较,因此都是相对的,不是说一个好得不得了,另外一个差的无法忍受)。对比维度多进程多线程总结数据共享、同转载 2017-02-23 09:36:38 · 189 阅读 · 0 评论 -
SATA SAS SSD 硬盘介绍和评测
SATASATA的全称是Serial Advanced Technology Attachment,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。SATA硬盘采用新的设计结构,数据传输快,节省空间,相对于IDE硬盘具有很多优势: 1 .SATA硬盘比IDE硬盘传输速度高。目前SATA可以提供150MB/s的高峰传输速率。今后将达到300 M转载 2017-02-23 09:37:45 · 2103 阅读 · 0 评论 -
Linux下查看及修改进程打开的文件句柄数量
—-查看Linux系统默认的最大文件句柄数,系统默认是1024# ulimit -n1024—-查看Linux系统某个进程打开的文件句柄数量# lsof -n | grep 5950 -c212—-修改Linux系统的最大文件句柄数限制的方法: 1)ulimit -n 65535 针对当前session有效,用户退出或者系统重新后恢复默认值 2转载 2017-02-23 09:38:07 · 573 阅读 · 0 评论 -
Linux单机TCP并发连接
总结下服务端对于tcp连接的限制与提高tcp连接数的方法,可能工作中永远不会用到,但对于网络知识理解会有帮助。1.服务端与16位的端口号(最大65535)没什么关系 服务端ip+port(监听端口) + 客户端ip+port 决定了一条连接,客户端连接服务器后,服务端并没有又分配一个物理端口与客户端连接。其实所有的数据还是通过监听端口接收与发送的(不论全双工与半双工,反正都是双工的),只不过多了转载 2017-02-23 09:39:15 · 280 阅读 · 0 评论 -
协程 及 Libco 介绍
libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程、如何实现协程、libco使用等方面了解协程和libco。 why协程为什么使用协程,我们先从server框架的实现说起,对于client-server的架构,server最简单的实现:while(1) {accept();recv();do();send();}串行地接收连接、读取请求、处理、应答,转载 2017-02-23 09:40:00 · 383 阅读 · 0 评论 -
Linux中TCP listen()的backlog参数详解
listen函数是网络编程一个基本的函数,而且它的backlog参数却是和TCP协议息息相关的。我们来看一下一个backlog参数到底有多少秘密。一、 为了理解backlog参数,我们必须首先认识listen函数。点击(此处)折叠或打开#include<sys/socket.h>int listen(int sockfd, int backlog);listen函数仅由TCP服务器调用,它做两转载 2017-02-23 09:40:39 · 1783 阅读 · 0 评论 -
Linux中TCP和UDP发送和接收缓冲区
1. TCP收发缓冲区默认值 [root@qljt core]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 4161536(TCP接收缓冲区min,default,max)cat /proc/sys/net/ipv4/tcp_wmem4096 16384 4161536(TCP发送缓冲区min,default,max)2. UDP收发缓冲区默认值[转载 2017-02-23 09:41:02 · 834 阅读 · 0 评论 -
HAProxy1.4.6后端Keepalive配置
KeepAlive 就是通常所称的长连接,KeepAlive带来的好处是可以减少tcp连接的开销,这对于短response body的请求效果更加明显。HAProxy后端keepalive指的是在HAProxy服务完一次与后端的交互后,不关闭HAProxy和后端的连接,而是维护这个连接以备后续的请求复用。HAProxy后端Keepalive 配置,启用HAProxy后端长连接需要配置如下[php]转载 2017-02-23 09:41:23 · 1341 阅读 · 0 评论 -
Nginx Upstream Keepalive配置
Nginx 1.1.14版本以前与后端upstream服务器建立的都是短链接,即通过HTTP/1.0向后端发起连接,并把请求的”Connection” header设为”close”。这样nginx往upstream后端发请求时,也会消耗很多的时间与带宽,如果让nginx与upstream后端建立起长链接,从nginx发起的请求就可以挑选一个合适的长链接发往upstream后端服务器,这样即可以节省转载 2017-02-23 09:42:15 · 2353 阅读 · 0 评论 -
Nginx 核心模块、HTTP模块、邮件模块解析
安装模块Nginx 模块必须在编译时就进行选择,目前不支持在运行时进行模块选择。在编译时,可以通过命令 ./configure –help 运行所提供的配置脚本来查看所有支持的编译选项列表(包含可选模块)。Nginx 核心模块这些模块是必须的。名称说明Main配置错误日志、进程、权限等。Events配置epoll、kqueue、select、poll等。标准 HTTP 模块这些模块是默认均被编译转载 2017-02-23 09:42:46 · 470 阅读 · 0 评论 -
服务器TIME_WAIT和CLOSE_WAIT区别及解决方案
系统上线之后,通过如下语句查看服务器时,发现有不少TIME_WAIT和CLOSE_WAIT。netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'打印显示如下:TIME_WAIT 297ESTABLISHED 53CLOSE_WAIT 5这三种连接状态含义分别如下:TIME_WAIT:表示主动关闭,通过优化系转载 2017-02-23 09:43:08 · 297 阅读 · 0 评论 -
Linux下的IO监控与分析
近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performance and Tuning Guidelines.pdf1 系统级IO监控iostat iost转载 2017-02-23 09:43:31 · 478 阅读 · 0 评论 -
System Dump和Core Dump的区别
许多没有做过UNIX系统级软件开发的人士,可能只听说过Dump,而并不知道系统Dump和Core Dump的区别,甚至混为一谈。系统Dump(System Dump)所有开放式操作系统,都存在系统DUMP问题。产生原因:由于系统关键/核心进程,产生严重的无法恢复的错误,为了避免系统相关资源受到更大损害,操作系统都会强行停止运行,并将当前内存中的各种结构、核心进程出错位置及其代码状态,保存下来,以便转载 2017-02-23 09:43:56 · 628 阅读 · 0 评论 -
Socket的半包,粘包与分包的问题
概述关于半包、粘包和分包的现象产生,是因为TCP当中只有流的概念,没有包的概念. ,而面向流的通信是无消息保护边界的。由于TCP无消息保护边界, 需要在消息接收端处理消息边界问题,因此自然产生了如何分包。半包指接受方没有接受到一个完整的包,只接受了部分,这种情况主要是由于TCP为提高传输效率,将一个包分配的足够大,导致接受方并不能一次接受完。( 在长连接和短连接中都会出现)。 粘包与分包 指发转载 2017-02-23 09:46:48 · 541 阅读 · 0 评论 -
根据文件头判断图片类型
对于图片的文件头,用工具打开一幅图片就可以看到前面的几个字节。这里整理出常见的图片格式文件头。1.JPEG- 文件头标识 (2 bytes): 0xff, 0xd8 (SOI) (JPEG 文件标识)- 文件结束标识 (2 bytes): 0xff, 0xd9 (EOI)2.TGA- 未压缩的前5字节 00 00 02 00 00- RLE压缩的前5字节 00 00 10 00转载 2017-02-23 09:48:26 · 625 阅读 · 0 评论 -
Nginx配置SSL证书部署HTTPS网站
一、什么是 SSL 证书,什么是 HTTPSSSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;2、用户可以通过服务器证书验证他所访问的网站是否真实可靠。HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入转载 2017-02-24 09:15:10 · 512 阅读 · 0 评论 -
使用Bash中Complete自动补全命令
大家在Linux下都用shell的TAB自动补全功能,非常方便,但是有时自己开发程序,可能需要自定义实现TAB自动补全功能,这时可能就会用到complete命令来实现对命令的自定义补全,本文主要介绍complete的用法complete参数详解[cpp] view plain copy print?complete [-abcdefgjksuv] [-o comp-option] [-A actio转载 2017-02-24 09:16:03 · 1815 阅读 · 0 评论 -
Linux Shell中特殊参数
Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义在Bash shell中经常会见到一些比较特殊的符号,本人现收集与此,以供查阅:位置参数:详见ABS(Advanced Bash Shell)中文翻译版103页第9章第一节内部变量,当然英文版ABS都一样啦$1, $2, $3等等...位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个转载 2017-02-24 09:16:42 · 207 阅读 · 0 评论 -
Linux Shell中引号的用法
shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符`1. 单引号 ( ' ' )howard@0[script]$ grep Susan phonebookSusan Goldberg 403-212-4921Susan Topple 212-234-2343如果我们想查找的是Susan Goldberg,不能直接使用grep Susan G转载 2017-02-24 09:17:13 · 415 阅读 · 0 评论 -
Linux Shell环境变量
Shell的环境变量bash是Bourne Shell的GNU扩展,除了继承了sh的所有特点以外,还增加了很多特性和功能。由login启动的bash是作为一个登录shell启动的,它继承了getty设置的TERM、PATH等环境变量,其中PATH对于普通用户为"/bin:/usr/bin:/usr/local/bin",对于root用户为"/sbin:/bin:/usr/sbin:/usr/b转载 2017-02-24 09:18:03 · 348 阅读 · 0 评论 -
Linux expect用法
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。脚本代码如下:###############################################!/usr/bin/expectset timeout 30spawn ssh -l username 192.168.1.1转载 2017-02-24 09:18:55 · 273 阅读 · 0 评论 -
Linux使用curl访问https站点时报错汇总
每一种客户端在处理https的连接时都会使用不同的证书库。IE浏览器和FireFox浏览器都可以在本浏览器的控制面板中找到证书管理器。在证书管理器中可以自由添加、删除根证书。而Linux的curl使用的证书库在文件“/etc/pki/tls/certs/ca-bundle.crt”中。(CentOS)以下是curl在访问https站点时常见的报错信息1.Peer’s Certificate iss转载 2017-02-24 09:19:18 · 761 阅读 · 0 评论 -
Linux网络状态工具ss命令使用详解
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息:所有的TCP sockets转载 2017-02-24 09:20:12 · 425 阅读 · 0 评论 -
C语言函数调用栈剖析
理解调用栈最重要的两点是:栈的结构,EIP/EBP/ESP寄存器的作用。1.栈结构首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸,那么就很明显了,栈有栈底和栈顶,那么栈顶的地址要比栈底低。2.EIP/EBP/ESP寄存器对x86体系的CPU而言,在函数调用过程中,系统会用到下面三种寄存器:1.EIP寄存器里存储的是函数调用完CPU下次要执转载 2017-02-24 09:21:25 · 313 阅读 · 0 评论 -
Linux下常用的函数调用栈规范
我们都应该知道,高级语言的函数调用过程中,有“栈”这么一个概念,被调用函数的局部变量是存放在栈中的,函数调用的参数也是通过栈传递的。那么,调用函数是怎么把各种数据压入栈中,被调用函数又是怎么对栈进行操作以获取必要的数据呢?函数调用发生完毕之后,谁又负责清理这个栈?这就用到了函数调用栈规范!函数调用栈规范是指编译器的一中“约定”,他规定了调用者如何传递参数,被调用者如何获取参数,调用完成后怎么清理栈,转载 2017-02-24 09:21:52 · 424 阅读 · 0 评论 -
TCP 的那些事儿(下)
这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资源转载 2017-02-24 09:22:31 · 321 阅读 · 0 评论 -
Linux中使用 alias 来简化命令行输入
alias 即“别名”,为便于理解,你可以将其看成是一个命令的快捷方式。使用 alias 的最大好处是,可以简化输入,从而为你节省时间,并提高效率。定义的alias 可以保存到 ~/.bashrc 文件中,以后在命令行中就可以直接使用了。alias 允许使用更加简短的名称来重新定义 Linux 中的 Shell 命令,从而简化命令行的输入。如果经常与 CLI 打交道,那么使用 alias 不仅会转载 2017-02-24 09:22:59 · 544 阅读 · 0 评论 -
启用HAProxy状态监控
如果启用HAProxy状态监控,需要修改haproxy.cfg配置文件,启用stats enable[python] view plain copy print?<span style=“color:#2c2c2c;”>listen webservers bind *:80 </span><span style=”color:#ff0000;”><strong>stats enable</st转载 2017-02-24 09:23:23 · 2349 阅读 · 0 评论 -
HAProxy日志配置详解
由于数据分析的需要,我们必须打开Haproxy日志,并记录相关的503错误信息进行汇总统计,所以有了下文:在配置前,我们先来了解下日志的level: local0~local7 16~23保留为本地使用emerg 0 系统不可用alert 1 必须马上采取行动的事件crit 2 关键的事件err 3 错误事件warning 4 警告事件notice 5 普通但重要的事件info 6转载 2017-02-24 09:24:01 · 661 阅读 · 0 评论 -
HAProxy配置
前言Haproxy是一个负载均衡服务器,能够提供4层,7层代理,并能支持上万级别的连接,你可以直接在WEB服务器前端加上它,而不影响应用的访问,完全透明。安装$ wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz$ tar -zxvf haproxy-1.4.8.tar.gz$ cd haproxy-1.4.8$转载 2017-02-24 17:23:00 · 321 阅读 · 0 评论 -
启用Nginx状态监控
1. 编译Nginx添加http_stub_status_module第一步:编译Nginx的时候添加参数:–with-http_stub_status_modulecdnginx-0.8.15/./configure--user=www --group=www --prefix=/usr/local/webserver/nginx--with-http_stub_status_module转载 2017-02-24 17:23:48 · 461 阅读 · 0 评论 -
Nginx反向代理缓存配置
Nginx反向代理的缓存配置这里给出示例详解。http { proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g;proxy_cache_key “hosthostrequest_uri”; server { server_name www.centos.bz ce转载 2017-02-24 17:24:28 · 295 阅读 · 0 评论 -
Nginx 战斗准备 —— 优化指南
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出nginx的性能,你必须更深入一些。在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户端时的性能。需要注意一点,这不是一个全面的微调指南。这是一个转载 2017-02-24 17:25:00 · 238 阅读 · 0 评论 -
Linux内核的原子操作
1、基本概念原子操作可以保证指令以原子的方式执行,执行过程不被打断。它通过把读取和修改变量的行为包含在一个单步中执行,从而防止了竞争的发生,保证操作结果总是一致的。例如:int i=9;线程1:i++i=9 OR i=8线程2i–;i=9 OR i=8两个线程并发的执行,导致结果不确定性。原子操作的作用和信号量机制是一样,都是为了防止同时访问临界资源,保证结果的一致性。大多数硬件体系结构要么本来转载 2017-02-24 17:25:26 · 415 阅读 · 0 评论 -
Linux服务器时间相关结构体和函数整理
一、时间类型Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数该类型定义在中,一般通过 time_t time = time(NULL); 获取.(2) struct timeb结构: 主要有两个成员,转载 2017-02-24 17:26:00 · 295 阅读 · 0 评论 -
防止MTU设置不合理导致的链路不通问题
一,MTU是IP数据包每次能传输的最大数据单元,即maxium transfer unit,超过此大小将会进行分包,而若设置不能进行分包,则会导致丢包。 如设置:Dont Fragment: Set,则设置不能进行分包。二,MSS就是IP数据包每次能传输的最大数据分段,这个值是MTU值减去IP数据包头大小20Byte和TCP数据段的包头20Byte。即Mss+40=MTU。举例:如c转载 2017-02-24 17:26:24 · 3019 阅读 · 0 评论 -
Linux 与 BSD 有什么不同?
Linux 和 BSD 都是免费的,开源的,类Unix系统。他们甚至使用很多相同的软件。他们看上去简直就像是一个操作系统,那么,它们有什么不同吗?其实,两者之间的不同,远远超出了我们下面提到的这些,尤其是在构建完整操作系统和许可授权的哲学思想上,更是相差甚远。通过这篇短文将可以简单的了解它们之间的不同。基础许多人所称的“Linux”实际上不是 Linux。Linux 从技术上说只是 Linux 内核转载 2017-02-24 17:26:46 · 360 阅读 · 0 评论 -
UDP主要丢包原因及具体问题分析
一、主要丢包原因 1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv. 2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个udp包,不切割直接通过send转载 2017-02-24 17:27:15 · 1862 阅读 · 0 评论 -
SOCKET通信中TCP、UDP数据包大小的确定
UDP和TCP协议利用端口号实现多项应用同时发送和接收数据。数据通过源端口发送出去,通过目标端口接收。有的网络应用只能使用预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP和TCP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。动态端口的范围是从1024到65535。 MTU(maximun transfer unit) 最大传输转载 2017-02-24 17:44:38 · 3297 阅读 · 0 评论