
LINUX
文章平均质量分 70
yanook
把握生命里的每一分钟,全力以赴心中的梦!
展开
-
深入理解inode
一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即转载 2014-08-21 14:03:42 · 454 阅读 · 0 评论 -
UNIX/Linux:向进程发信号的3种方式
UNIX/Linux:向进程发信号的3种方式问:怎么向另一个进程发信号?你能跟我解释下在UNIX/Linux环境向一个进程发信号的所有可用的选项吗?答:你可以用本文所说的任一种方法向进程发各种信号。1.用Kill向进程发信号使用kill命令向进程发信号。例如,你想向进程“a.out”发送USR1信号,如下所示。$ ps -C a.outPID转载 2013-05-01 21:32:16 · 459 阅读 · 0 评论 -
fuser 概述
fuser 概述fuser命令是用来显示所有正在使用着指定的file, file system 或者 sockets的进程信息。例一:#fuser –m –u /mnt/usb1 /mnt/usb1: 1347c(root) 1348c(guido) 1349c(guido)在例子一中,使用了-m和-u选项,用来查找所有正在使用/mnt/usb1的所有进程的PID已转载 2013-05-01 21:10:58 · 279 阅读 · 0 评论 -
LINUX同步软件rsync原理
Sync Algorithm: RSync vs. RDC 数据同步(Sync)是很多网络应用需要的解决的问题,比如文件镜像。这里就以文件同步为例,问题模型:网络中两个主机Host-A和Host-B,都有同一文件File-Old的拷贝,现在这个文件在Host-A上做了一些改变成为了File-New,需要通过同步让Host-B也获得F-New。 让我们想想怎么处理这个问题,最简单的方法,把所转载 2013-05-01 16:11:36 · 375 阅读 · 0 评论 -
linux top命令查看内存及多核CPU的使用讲述
查看多核CPU命令mpstat -P ALL 和 sar -P ALL 说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txttop命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。本文通过一个运行中的WEB服务器的top监控截图,转载 2013-05-01 21:16:03 · 368 阅读 · 0 评论 -
nginx location配置详细解释
语法规则: location [=|~|~*|^~] /uri/ { … }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。~ 开头表示区分大小写的正则匹配~* 开头表示不转载 2013-04-13 09:08:55 · 305 阅读 · 0 评论 -
How do I resolve a HTTP 414 “Request URI too long” error?
Under Apache, the limit is a configurable value, LimitRequestLine. Change this value to something larger than its default of 8190 if you want to support a longer request URI.However, note that if转载 2013-03-02 14:04:01 · 1235 阅读 · 0 评论 -
解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题
由于Tomcat在默认情况下会将没有经过配置的web应用所产生的日志输出已经其本身的日志内容都输出到这个文件中,那么随着时间的推移,这个文件的尺寸将会越来越大,当需要检查日志内容时间会导致文件难以打开,而且同时tomcat依旧在不断的向文件中输入内容,这也会降低tomcat的性能。下面利用一个工具来将tomcat产生的catalina.out文件根据日期来分割,将每天产生的日志存放在一个独立的文件转载 2013-02-24 08:54:08 · 430 阅读 · 0 评论 -
Gearman 分布式任务调度
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于图片resize需要消耗大量计算资 源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。Gearman 分布式任务实现原理上只用转载 2013-01-15 22:26:44 · 1584 阅读 · 0 评论 -
grep 行号
1 查询字符串所在的行号grep -n "xxx" str.txt # -n 打印字符 “xxx” 在文件 “str.txt” 所在的行数前缀示例:str.txt xxxyyyzzzxxx输入查找命令: grep -n "xxx" str.txt 结果如下: 1:xxx4:xxx行号转载 2013-01-13 10:35:58 · 1486 阅读 · 0 评论 -
extern、头文件、源文件与编译和链接
extern、头文件、源文件与编译和链接关键字:extern 、头文件、源文件编译、全局变量的定义谈到extern(这里只谈论同一语言编译情况下的extern,不考虑C++与C混合编译情况下的extern,因为extern在这两种情况下的功能是不同的)与头文件,不得不谈编译与链接。extern的作用与头文件基本等同,都是为编译器服务的。但头文件使用更方便一些。尤其是在做一个转载 2012-12-26 23:09:19 · 444 阅读 · 0 评论 -
shell脚本效率
摘 要: 低效的shell脚本设计会进一步影响原本解释器模式下并不见长的程序运行效率,使其在面对大数据量文本分析时的资源与时间消耗变成难以接受的。本文分析了shell语言及其应用需求的特点,从分层设计的角度提出了“自底向上进行shell脚本编程”的理论,同时提出了从“外部系统环境”到“内部执行模式”全面的掌握工具软件的方法。实例充分证明,自底向上的shell脚本编程思想及方法能够有效提高脚本转载 2012-12-23 21:27:43 · 1298 阅读 · 0 评论 -
MYSQL互为主备配置
实战环境介绍: 服务器名IP系统MySQLodd.example.com192.168.1.116rhel-5.85.5.16even.example.com192.168.1.115rhel-5.85.5.16 假设要同步的库是 db_rocky转载 2013-05-04 09:11:07 · 493 阅读 · 0 评论 -
使用nginx后如何在web应用中获取用户ip及原理解释
问题背景:在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断,或者统计ip访问次数等,通常情况下我们使用request.getRemoteAddr()就可以获取到客户端ip,但是当我们使用了nginx作为反向代理后,使用request.getRemoteAddr()获取到的就一直是nginx服务器的ip的地址,那这时应该怎么办? part1:解决方案我在查阅资料时,转载 2013-05-20 22:21:00 · 468 阅读 · 0 评论 -
HTTP协议详解
转自:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html HTTP协议详解当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对H转载 2013-06-10 09:15:28 · 367 阅读 · 0 评论 -
static const char sep[256] = { [' ']=1, ['.']=1, ['-']=1, ['_']=1 };
static const char sep[256] = { [' ']=1, ['.']=1, ['-']=1, ['_']=1 };//gcc能编译通过,vs不支持此格式意思是定义1个数组,并进行初始化赋值,被赋值元素的下标为字符所对应的ASCII码。转载 2014-07-03 20:52:16 · 449 阅读 · 0 评论 -
Hive和Hbase作用于
Hive和Hbase有各自的不同特性:hive是高延迟,结构化和面向分析的,hbase是低延迟,非结构化和面向编程的。hive数据仓库在hadoop上时高延迟的,hive集成hbase就是为了使用hbase的一些特性,hive集成hbase可以有效利用habse数据库的存储特性,如行更新和列索引等,在集成的过程中注意维持hbase jar包的一致性。hive集成hbase需要在hi转载 2014-01-24 14:54:10 · 1115 阅读 · 0 评论 -
sersync
公司最近业务需求,要实时同步windows与linux,linux与linux之间的数据。我们使用是sersync这个开源的软件,是由金山才子所写。项目详情请访问:http://code.google.com/p/sersync/ qq群:37499077 欢迎讨论 一..linux之间的文件实时同步sersync的设计用以替代inotify-tool工具,同样是调用转载 2013-09-28 10:05:58 · 362 阅读 · 0 评论 -
mrsync
mrsync a tool to transfer files from a master to many remote machines in LAN using Unix socket's multicast. It dynamically adjusts its speed of transfering to ease on the network and to leave no one转载 2013-09-28 10:18:35 · 421 阅读 · 0 评论 -
Fanotify
引子Fanotify (fscking all notifiction and file access system) 是一个 notifier,即一种对文件系统变化产生通知的机制。我第一次看到 Fanotify 是在 2009 年,Eric Paris 在 lkml 上努力地向大家说明 fanotify 的特性。但在当时有影响力的内核开发人员都认为这只是一个拿了报酬的程序员为 A转载 2013-09-28 10:07:05 · 663 阅读 · 0 评论 -
rsync实现大致流程描述
一、文件同步不同主机之间的文件同步是服务器开发过程中一个重要的基础操作,它是cp及scp的一个扩充版本,能够实现不同主机之间的文件复制,能够提供增量复制,能够提供安全性验证。rsync的代码实现数量并不多,核心的文件更少,和很多理论作者的操作一样,该文件使用C语言编写,代码的编写、变量的命令、文档的编写都不是很全面。rsync的原理我在之前的一篇文章中大致有描述,也就是说原理并没有复杂到大家需转载 2013-08-31 17:01:04 · 602 阅读 · 0 评论 -
Rsync 实现原理
Rsync 实现原理前言关于rsync的原始文档 Rsync technical report 以及Andrew Tridgell的论文 Phd thesis (pdf) 都是关于rsync算法原理的极好的文档。但是,这些文档注重的是rsync算法本身,而对算 法的实现方法则描述较少。本文试图对Linux/Unix下的rsync工具的实现进行分析,并将描述下列问题:转载 2013-08-31 08:16:46 · 838 阅读 · 0 评论 -
nginx 健康检查和负载均衡机制分析
nginx 健康检查和负载均衡机制分析nginx 是优秀的反向代理服务器,这里主要讲它的健康检查和负载均衡机制,以及这种机制带来的问题。所谓健康检查,就是当后端出现问题(具体什么叫出现问题,依赖于具体实现,各个实现定义不一样),不再往这个后端分发请求,并且做后续的检查,直到这个后端恢复正常。所谓负载均衡,就是选择后端的方式,如何(根据后端的能力)将请求均衡的分发到后端。转载 2013-08-18 22:03:43 · 429 阅读 · 0 评论 -
nginx rewrite 中brake last 区别
在使用nginx重写(即rewrite)机制时,大家一般会用到last和break,关于这两个指令的作用,网友问的挺多,网上的讨论也挺多,这里做个总结:网友的给力解释:last: 重新将rewrite后的地址在server标签中执行break: 将rewrite后的地址在当前location标签中执行nginx官方解释:last: stops proc转载 2013-08-18 17:20:07 · 1709 阅读 · 0 评论 -
nginx 健康检查和负载均衡机制分析
nginx 是优秀的反向代理服务器,这里主要讲它的健康检查和负载均衡机制,以及这种机制带来的问题。所谓健康检查,就是当后端出现问题(具体什么叫出现问题,依赖于具体实现,各个实现定义不一样),不再往这个后端分发请求,并且做后续的检查,直到这个后端恢复正常。所谓负载均衡,就是选择后端的方式,如何(根据后端的能力)将请求均衡的分发到后端。此外,当请求某个后端失败时,要将该请求分发到其它后端(redisp转载 2013-07-27 09:19:30 · 400 阅读 · 0 评论 -
Nginx 关于 location 的匹配规则详解
Nginx 关于 location 的匹配规则详解http://iteye.com/eyesmore/有些童鞋的误区1、 location 的匹配顺序是“先匹配正则,再匹配普通”。矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”。我这么说,大家一定会反驳我,因为按“先匹配普通,再匹配正则”解释不了大家平时习惯的按“先匹配正则,再匹配普通”的实践经转载 2013-07-30 16:28:06 · 3156 阅读 · 0 评论 -
nginx根据cookie分流
nginx根据cookie分流众所周知,nginx可以根据url path进行分流,殊不知对于cookie分流也很强大,同时这也是我上篇提到的小流量实验的基础。二话不说,先看需求,两台服务器分别定义为apache001:192.168.1.1:8080apache002:192.168.1.2:8080默认服务器为:default:192.168.1.0:8080转载 2012-12-09 20:50:52 · 4085 阅读 · 0 评论 -
nginx 学习
今天有个需求,要求是在访问某地址,比如http://www.test.com/jump?a=x&location=http:www.baidu.com,这个时候要用nginx去匹配规则并跳转,要求设置cookie "a"的值为"x",并且301跳转到location指定的地址,nginx虽然也常用,但是也就是最基本的配置,所以还花了好几个小时,才算弄出来了。大体配置如下:server {转载 2012-12-06 23:09:26 · 1208 阅读 · 0 评论 -
popen()函数执行脚本并返回结果
#include FILE * popen(const char *command , const char *type );int pclose(FILE *stream);函数说明 popen()函数通过创建一个管道,调用fork()产生一个子进程,执行一个shell以运行命令来开启一个进程。这个管道必须由pclose()函数关闭,而不是fclose()函数。pclose(转载 2012-11-18 10:55:22 · 1522 阅读 · 0 评论 -
线程锁用于进程之间
实现进程之间上锁有多种方式,可以用文件锁,但文件锁要涉及到文件系统,十分耗时。其实进程之间也可以用线程锁,因为线程锁不仅可以用于线程之间同样可以用于进程之间。为了在多个进程之间使用线程锁,必须做到(1)互斥锁变量必须存储在为所有进程所共享的内存中;(2)必须通知线程函数库互斥锁是在不同进程之间共享的。针对第一条,必须将互斥锁放到共享内存中,不同进程共享内存有多种方式,在此我们使用mmap函原创 2012-02-04 11:18:05 · 1475 阅读 · 0 评论 -
sigprocmask,sigpending函数
【sigprocmask系统调用】功能描述:设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。用法:#include int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);参数:how:用于指定信号修改的方式,可能选择有三种SIG_BLOCK //加入信号到进程屏蔽。SIG_UNBLOC原创 2012-02-02 16:39:43 · 2242 阅读 · 0 评论 -
关于SIGPIPE信号
我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两转载 2012-02-01 17:36:32 · 437 阅读 · 0 评论 -
C/C++递归删除目录和文件
//递归删除目录和文件int del_rf(const char* filepath){struct stat64 st;if(!stat64(filepath, &st)) {if(S_ISREG(st.st_mode))// 删除文件{if(!unlink(filepath))return 0;else if (errno == ENOENT)ret原创 2012-01-29 15:18:02 · 2515 阅读 · 0 评论 -
关于CGI的一些资料
1. 什么是CGI?CGI 是通用网关接口(Common Gateway Interface)的缩写. 它主要用于服务器端动态输出客户端的请求(如,HTML页面/二进制文件). 也就是说客户端请求参数不同, 服务器端会给出不同的应答结果..CGI 标准将这个接口定义的非常简单 (即: WEB 服务器收到客户端的请求后通过环境变量和标准输入(stdin)将数据传递给CGI程序, CGI程序通转载 2011-07-26 15:15:08 · 608 阅读 · 0 评论 -
linux popen函数简介
#include FILE *popen(const char *command, const char *type);描述popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell. 因为 管道是被定义成单向的, 所以 type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写.command 参数 是 一个 字符串转载 2011-08-07 16:54:21 · 812 阅读 · 0 评论 -
cscope+ctags+gvim+windows
1、cscope建立符号数据库-----------------------------------(1) 我们假设我们要阅读的代码放在D:\src\myproject下。然后打开命令行,进入源代码所在的目录,为cscope建立搜索文件列表。在命令行中执行以下命令:D:\soft\vxwork_src>dir /s /b *.c *.h > cscope.filesD:\s转载 2012-01-05 10:29:44 · 381 阅读 · 0 评论 -
daemon函数实现原理
linux提供了daemon函数用于创建守护进程,实现原理如下:#include int daemon(int nochdir, int noclose);1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3. 当noclose为0是,daemon将进城的STDIN转载 2012-01-15 10:13:17 · 2219 阅读 · 0 评论 -
Linux信号集相关函数操作
在linux的进程中可以接收到各种的信号,并且如果你不对信号进行处理,linux中的进程就会采用默认的处理方式处理,比如ctrl-c的信号,进程对它的处理就是终止进程的执行。在linux中,我们也可以在进程中屏蔽掉某些信号,使进程不去处理这些信号,但其中的SIGKILL和SIGSTOP是不能被阻塞的。在这里先介绍几个信号的函数: int sigempty(sigset_t转载 2012-01-07 14:32:50 · 830 阅读 · 0 评论 -
取当前进程对应之静态映像文件的绝对路径/proc/self/exe
提供一个linux advanced programming 上的得到绝对路径目录的函数:char* get_self_executable_directory (){ int rval; char link_target[1024];//目标地址 char* last_slash; size_t result_length;//结果的长度 char* re转载 2012-01-14 18:22:02 · 1632 阅读 · 0 评论 -
dlopen dlsym dlcolose
功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode );dlopen()是一个强大的库函数。该函数将打开一个新库,并把它装入内存。该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的。比如 Apache Web 服务器转载 2012-01-15 15:42:48 · 441 阅读 · 0 评论