Linux
文章平均质量分 64
starstarstone
从事网络数据传输,流媒体方面的编程工作。最近开始研究搜索引擎相关技术
展开
-
Linux内核代码华人贡献统计
http://www.remword.com/kps_result/ 这个站点对Linux内核代码补丁进行了详细的统计,感兴趣的童鞋可以看一下。 在这里给大家看一下2005年4月16日至今各个国家贡献的补丁统计数据(从中可以看出咱们华人的贡献还是很大的):Total patch sets of this kernel release: 29925155 countrie转载 2012-12-31 11:33:13 · 9883 阅读 · 0 评论 -
linux 命名管道fifo实现进程间小数据通信
/* int mkfifo(const char *pathname, mode_t mode); 创建命名管道,成功返回0,失败返回-1。 程序运寻则操作的内容存在于管道文件中,一退出内容则被清空了。EEXIST:用于判断命名管道文件是否存在,存在就可以不用创建。 */#include #include #include #include #i转载 2012-04-20 16:49:47 · 722 阅读 · 0 评论 -
Linux下多线程查看工具(pstree、ps、pstack)
pstack实现参考http://blog.csdn.net/starstarstone/article/details/7476815------------------------------------------------------------------------------------------------1. pstreepstree以树结构显示进程$ p转载 2012-04-19 11:22:11 · 645 阅读 · 0 评论 -
pstack实现
注意,使用pstack查看系统进程的堆栈时需要sudo。注意第一行使用的bash,不可用dash。------------------------------------#!/bin/bashif test $# -ne 1; then echo "Usage: `basename $0 .sh` " 1>&2 exit 1fiif te原创 2012-04-19 11:29:27 · 1364 阅读 · 0 评论 -
bash与dash的差别
如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题1.定义函数bash: function在bash中为关键字igi@gentoo ~ $ foo(){ echo $0;}转载 2012-04-19 11:16:19 · 678 阅读 · 0 评论 -
limit of inotify
本文可解决函数inotify_add_watch发生ENOSPC错误的问题。-------------------------------------------------------------------------------------------ProblemWhen dropbox or guard says like:Unable to monito转载 2012-04-19 10:42:38 · 1985 阅读 · 0 评论 -
查看glibc版本的方法
方法1:ldd --version方法2:写一个程序检测#include #include int main (void) { puts (gnu_get_libc_version ()); return 0; }原创 2012-04-19 10:35:21 · 1085 阅读 · 0 评论 -
巧用backtrace系列函数,在不具备gdb环境的Linux系统上大致定位段错误位置
1: 段错误产生的原因简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一旦一个程序发生了越界访问,系统就采取内存保护措施,并给那个程序发送SIGSEGV信号,程序接到那个信号后就知道segmentation fault出现了。想对”段错误”有更详细的了解可以去阅读“Linux下的段错误产生的原因及调试方法” 这篇转载 2012-04-26 11:53:53 · 506 阅读 · 0 评论 -
Playing with ptrace, Part II
Dec 01, 2002 By Pradeep Padala inSysAdminIn Part II of his series on ptrace, Pradeep tackles the more advanced topics of setting breakpoints and injecting code into running processes.转载 2012-04-26 11:15:45 · 434 阅读 · 0 评论 -
Playing with ptrace, Part I
Nov 01, 2002 By Pradeep Padala inSysAdminUsing ptrace allows you to set up system call interception and modification at the user level.Have you ever wondered how system callscan b转载 2012-04-26 11:10:53 · 476 阅读 · 0 评论 -
Linux下进程间通信:管道-pipe函数
摘要:在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这样做有利于转载 2012-04-20 17:02:44 · 435 阅读 · 0 评论 -
Linux进程通信:管道要点
popen一般用于获取命令执行的输出,或者对命令进行输入(采用无名管道):FILE *popen(const char *command, const char *type);pipe用于无名管道:int pipe(int pipefd[2]);mkfifo用于有名管道:int mkfifo(const char *pathname, mode_t mode);转载 2012-04-20 17:14:14 · 556 阅读 · 0 评论 -
linux下如何查看某个进程打开了那些文件
也可用lsof -p pid------------------------------------------------------------------------------------------------1. 取得进程号cba001:/proc/26751/fd # ps -ef|grep namedroot 17066 26915 0 13:06 p转载 2011-12-29 10:51:17 · 459 阅读 · 0 评论 -
Cpulimit
目录 [隐藏] 1 功能2 语法3 补充说明4 参数5 安装方法6 实例7 相关链接功能限制一个进程的 CPU 占用率。语法cpulimit TARGET [OPTIONS...]补充说明cpulimit用来限制一个进程的 CPU 占用率(以%表示,而不是CPU时间。)原理在于发送了SIGSTOP和SIGCONT信息。参数转载 2012-12-27 17:03:23 · 1246 阅读 · 0 评论 -
R语言学习由浅入深路线图
现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言。对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来。当然,这不是最好的学习方式,最好的方式是——看书。目前,市面上介绍R语言的书籍很多,中文英文都有。那么,众多书籍中,转载 2012-12-26 14:41:36 · 1158 阅读 · 1 评论 -
R语言为Hadoop集群数据统计分析带来革命性变化
导读:R现在还可以运行在HBase这种非关系型的数据库以及面向列的分布式数据存储之上。其主要模仿了Google的BigTable。这基本上等同于使用Hadoop来持有结构化数据的数据库。就像Apache软件基金会Hadoop项目的子项目HBase一样。 维基百科指出,R语言是主要用于统计分析、绘图的语言和操作环境。R本来是由来自新西兰奥克兰大学的Ross Ihaka和Ro转载 2012-12-26 14:29:32 · 737 阅读 · 0 评论 -
使用 google-perftools 剖析程序性能瓶颈
简介: google-perftools 是一款优秀的 Linux C/C++ 程序的性能剖析及优化工具,它提供了将目标程序运行时所消耗的 CPU 时间片进行剖析和图形化输出剖析结果的功能。本文将从零开始,一步一步引导读者搭建并运行一个 google-perftools 的剖析环境,并用一个示例来演示如何使用该工具找到目标程序的性能瓶颈。google-perftools 简转载 2012-12-26 16:49:01 · 399 阅读 · 0 评论 -
如何使进程运行在后台
在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:$ ./test.sh &[1] 17208$ jobs -l[1]+ 17208 Running ./test.sh &对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台转载 2012-10-30 14:53:29 · 729 阅读 · 0 评论 -
Linux:如何查看一个进程的详细的启动时间
ps -A -opid,stime,etime,args 其中:-A: Select all processes. Identical to -e.-o: user-defined format.pid: 列出进程号stime: start timeetime: elapse timeargs: 命令信息当然,也可以到/proc/pid中查看.原创 2012-09-18 18:16:28 · 856 阅读 · 0 评论 -
pkill踢出用户
linux系统root用户可强制踢制其它登录用户,首先可用w命令查看登录用户信息,显示信息如下:16:15:11 up 210 days, 12:17, 2 users, load average: 0.13, 0.15, 0.10USER TTY FROM LOGIN@ IDLE JCPU PCPU WHA转载 2012-06-13 15:36:48 · 1130 阅读 · 0 评论 -
5 simple ways to troubleshoot using Strace
其中第三条可使用下面的命令查看所有线程的状态strace -f -p 15427strace vs. ltrace:strace追踪系统函数(对应man 2);ltrace追踪库函数(对应man 3),ltrace也可同时追踪系统函数(参数-S)。---------------------------------2008-06-11 00:09 UTC 5转载 2012-04-18 16:24:59 · 782 阅读 · 0 评论 -
gcc __attribute__关键字举例之constructor/destructor
constructor属性设置函数在所有函数之前执行,destructor设置函数在所有函数退出后执行。test.cc#include void __init(){ printf("before main\n");}void __exit(){ printf("after main\n");}void __init() __attribute__ ((co原创 2012-04-23 17:55:17 · 1086 阅读 · 0 评论 -
strace实现原理
引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执行的系统调用,它是如何跟踪到进程执行的?3.gdb是我们调试程序的利器,可以设置断点,单步跟踪程序。它的实现原理又是什么?所有这转载 2012-04-26 10:50:05 · 732 阅读 · 0 评论 -
目标文件格式分析工具: ar,nm,objdump,objcopy,readelf
前言如果普通编程不需要了解这些东西,如果想精确控制你的目标文件的格式或者你想查看一下文件里的内容以便作出某种判断,那么你可以看一下下面的工具:ar,nm,objdump,objcopy。具体用法请参考man在线手册。ar基本用法 ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做转载 2012-04-26 11:44:02 · 567 阅读 · 0 评论 -
用gdb调试core dump文件
摘要:1.ulimit -c unlimited2.gdb app core.xxx--------------------------在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的。什么是Core转载 2011-07-26 14:57:29 · 504 阅读 · 0 评论 -
/dev/zero和/dev/null
使用/dev/null 把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出.转载 2011-07-23 14:40:59 · 326 阅读 · 0 评论 -
VIM的编码相关,encoding, filecoding, termencoding
vim中编辑不同编码的文件时需要注意的一些地方此文讲解的是vim编辑多字节编码文档(中文)所要了解的一些基础知识,注意其没有涉及gvim,纯指字符终端下的vim。vim编码方面的基础知识:1,存在3个变量:encoding----该选项使用于缓冲的文本(你正在编辑的文件),寄存器转载 2011-07-23 13:30:50 · 581 阅读 · 0 评论 -
解决vim中文乱码
有时候在使用vim的时候,显示中文为乱码,这个时候我们可以修改vimrc文件解决问题!首先,你需要搞清楚vimrc所在的位置。一般来说,在linux系统里,应该是这样Linux: /usr/share/vim/vimrc在Windows系统,应该是在vim的安装目录Windows: c:/program files/vim/vimrc我目前使用的是Windows7 ,路径显转载 2011-06-06 18:56:00 · 604 阅读 · 0 评论 -
Linux系统中关于文件编码以及编码的转换
Windows中默认的文件格式是GBK(gb2312),当然也可以保存为UTF-8的,最简单的方法是用记事本的“另存为”就可以做到。 为了与windows兼容,SecureCRT中文件编码的默认配置是”Default”,其实也就是GBK。如果我们将其更改为了”UTF-8″,那么我们查看从windows中scp过去的GBK文件就会变成乱码,需要进行转换,比较麻烦。 不过有时候我们也需要进行编码的转换转载 2011-06-06 18:53:00 · 560 阅读 · 0 评论 -
用vim读html源码
网上的html源码一般都比较乱,结构也不够清晰,可读性较差。本文对html源码格式进行调整,并利用vim的折叠功能,使得html源码读起来方便不少。原创 2011-05-24 17:57:00 · 1346 阅读 · 0 评论 -
vim帮助文档无法跳转的问题
<br />原因:vim的帮助文档中的文件都是.gz格式的,而tags文件是根据目录下所有.txt文件生成的,因此缺少相应条目的锚点。<br /> <br />解决办法:将doc下的文件解压,重新生成tags文件。<br />#cd /usr/share/vim/vim70/doc<br />#gunzip *<br />#vim(进入vim编辑界面后执行":helptags ."命令,用于生成新的tags文件)<br /> <br />ps:可用类似的方法生成自己软件的帮助文档原创 2011-05-21 13:36:00 · 1590 阅读 · 0 评论 -
FC8下安装Zend Studio5.1.0时遇到的问题及解决方法
Zend Studio在较新版本的Linux上安装经常会出现问题,本文针对Zend Studio5.1.0在FC8上安装时遇到的两个问题及解决办法进行了介绍。1.安装时找不到libdl.so等库文件2.安装时出现Assertion `c->xlib.lock' failed的错误原创 2010-11-23 11:29:00 · 700 阅读 · 0 评论 -
linux下多线程 之 pthread_detach(pthread_self())
多线程稍微看了下还能接受没想象中的难,写了个示例程序运行修改运行修改几遍后也大致明白了。写个碰到的问题,记录下自己的技术之路点滴pthread_detach(pthread_self())linux线程执行和windows不同,pthread有两种状态joinab转载 2011-08-02 10:54:46 · 401 阅读 · 0 评论 -
解决Fedora Core 4中Apache无法加载libphp4.so模块的问题
Fedora Core 2开始就已经有了SELinux (Security-Enhanced Linux )这个东西,不过在 FC2下是默认不打开的,从FC3开始就默认打开了,但是打开了是很安全,但是很多操作也不能操作了。比如再FC4下装Apache + PHP,手工编译的,但是去无法解析PHP,看错误提示,都是什么:[root@localhost ~]# /usr/local/apach转载 2011-10-19 17:04:09 · 492 阅读 · 0 评论 -
关于epool
man中给出了epoll的用法,example程序如下: for(;;) { nfds = epoll_wait(kdpfd, events, maxevents, -1); for(n = 0; n if(events[n].data.fd == listener) {转载 2011-12-13 18:23:29 · 395 阅读 · 0 评论 -
ltrace的原理
ltrace的功能是能够跟踪进程的库函数调用,它是如何实现的呢? 在ltrace源代码从chinaunix.net中下载下来,做了一个粗略的分析。 ltrace其实也是基于ptrace。我们知道,ptrace能够主要是用来跟踪系统调用,那么它是如何跟踪库函数呢? 首先ltrace打开elf文件,对其进行分析。在elf文件中,出于动态连接的需要,需要在elf文件中保存函数的符转载 2012-04-26 10:51:38 · 3060 阅读 · 0 评论 -
[sed] linux sed 批量替换字符串
perl -pi -e 's|ABCD|Linux|g' `find ./ -type f`(perl的参数-p相当于while(http://oreilly.com/pub/h/73)等价于sed -i -e 's|ABCD|Linux|g' `find ./ -type f``多文件操作可用xargs,更直观一些。------------------------转载 2012-04-25 11:49:36 · 644 阅读 · 0 评论 -
系统调用和c库之间的关系
Tips: 用man查询函数时候有些并不能直接man + 函数名查到,例如:man fopen man 2 open所以可以用man+数字+函数名来试试,具体的内容可以查看 /usr/local/share/man/下面对应的目录___________________________________________________________________________转载 2012-04-24 17:01:32 · 991 阅读 · 0 评论 -
gcc __attribute__关键字举例之visibility
visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。 g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设置visibility属性。原创 2012-04-24 16:53:22 · 4126 阅读 · 0 评论 -
gcc __attribute__关键字举例之alias
GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。alias属性用于设置一个函数的别名。以下程序为C++版本,C版本去掉extern "C"即可test.cc#include extern "C" int __fun() { printf("in %s\n",__FUNCTION__); return 0;}原创 2012-04-23 17:34:26 · 5897 阅读 · 1 评论