linux
wangeen
商业化产品可能是有用的但最好的东西往往是免费的空气水Vim
展开
-
深刻理解Linux进程间通信(IPC)
序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的转载 2012-12-20 11:44:08 · 701 阅读 · 0 评论 -
linux 捕捉Ctrl+C示例
#include #include #include #include void my_handler(int s){ printf("Caught signal %d\n",s); exit(1); }int main(int argc,char** argv){ struct sigaction sigIntHandler转载 2014-03-18 11:17:22 · 11455 阅读 · 0 评论 -
C++学习之Base64
一般是不会用string来存储内存的内容的,而是用unsigned char*来做这样的事情。但是如果图方便要用string来表达内存的内容就要用到base64,下面是我用到的一段代码,整理一下备忘。#include #include #include using namespace std; // base64 tablesstatic char ba原创 2014-03-06 16:54:59 · 1258 阅读 · 0 评论 -
linux学习之 rsync VS. cp
Use Rsync Instead of CpMAY 9TH, 2010I tend to use rsync when others would typically use a simple cp for copying files. A few reasons:It can be canceled in the middle, and resumed l转载 2014-02-17 17:24:35 · 1765 阅读 · 0 评论 -
linux学习之ssh-copy-id及其替代命令
使用以下命令代替ssh-copy-id:cat ~/.ssh/id_dsa.pub | ssh hadoop@slave "umask 077; mkdir -p .ssh ; cat >> .ssh/authorized_keys"转载 2014-02-21 23:06:35 · 2503 阅读 · 1 评论 -
linux 不要轻易的把其他的库和头文件塞到/usr/include /usr/lib下面
今天遇到了一个问题,困扰了半天,原因就是把boost的regex放到了/usr/include下面,导致gnu的被覆盖了,编译安装openmpi一直不能成功,所以切记linux 不要轻易的把其他的库和头文件塞到/usr/include /usr/lib下面。原创 2014-01-28 16:26:25 · 3598 阅读 · 0 评论 -
linux 获取exe的路径
To summarize:On Unixes with /proc really straight and realiable way is to:readlink("/proc/self/exe", buf, bufsize) (Linux)readlink("/proc/curproc/file", buf, bufsize) (Free转载 2013-10-07 14:48:41 · 1667 阅读 · 0 评论 -
gnuplot 让您的数据可视化
http://www.ibm.com/developerworks/cn/linux/l-gnuplot/Gnuplot 是一种免费分发的绘图工具,可以移植到各种主流平台。它可以下列两种模式之一进行操作:当需要调整和修饰图表使其正常显示时,通过在 gnuplot 提示符中发出命令,可以在交互模式下操作该工具。或者,gnuplot 可以从文件中读取命令,以批处理模式生成图表。例如,如果您转载 2014-01-03 14:01:39 · 4795 阅读 · 0 评论 -
use another thread loading file for other threads parse will not speed up application
Multithreads load and parse file will notspeedup file handling. because load data from harddisk to memory is notthe CPU's business, so the only function the loading thread is bufferthe data for other原创 2011-08-12 17:35:24 · 682 阅读 · 0 评论 -
All about redirection
3. All about redirection3.1 Theory and quick referenceThere are 3 file descriptors, stdin, stdout and stderr (std=standard).Basically you can:redirect stdout to a fileredirect stderr to a转载 2014-08-21 15:34:19 · 635 阅读 · 0 评论 -
execvp:在程序中调子程序并获取返回值
在linux中我们可以很方便的使用system启动子程序,但是system有个不足就是它对子程序的掌控很弱,连返回数值都很难获取。下面是一段使用execvp来调用子程序的示例代码,关于下面的代码有几点特殊说明:1) folk(): 会从主程序中复制出一个新的程序,如果folk返回0就是子程序,否则那就是还是当前的程序。2) wait() : 在主程序中你可以自己决定要等待子程序返回原创 2014-09-12 15:31:39 · 11220 阅读 · 0 评论 -
Linux x86 Program Start Up
constructor 在main函数之前被调用,过去一直认为main才是程序的入口,突然发现还有这样的东西。To be continued转载 2015-10-09 22:35:52 · 2071 阅读 · 1 评论 -
systemd概述
systemd是linux系统启动各种服务的一种管理程序。历史上linux有多种启动服务的程序。To be continued转载 2015-10-09 22:33:13 · 2352 阅读 · 0 评论 -
DBus 进程间的通信
之前用过一些dbus这里做个备忘。DBus本身是属于比较高阶层的IPC的分装,他的底层是用socket来实现的。DBus的应用特别的广泛,比如systemd, USB热拔插,界面程序之间的通信等等。DBus还有更高级的封装,比如 GDBUS和QDBUS。DBus有几个重要的概念:to be continued原创 2015-10-09 22:30:30 · 5466 阅读 · 0 评论 -
20 Linux System Monitoring Tools Every SysAdmin Should Know
http://www.cyberciti.biz/tips/top-linux-monitoring-tools.htmlNeed to monitor Linux server performance? Try these built-in commands and a few add-on tools. Most Linux distributions are equipped转载 2015-02-16 12:19:32 · 1138 阅读 · 0 评论 -
valgrind massif检测内存使用比例
http://valgrind.org/docs/manual/ms-manual.html9. Massif: a heap profilerTable of Contents9.1. Overview9.2. Using Massif and ms_print9.2.1. An Example Program9.2.2. Running Massif转载 2015-02-17 09:44:53 · 3175 阅读 · 0 评论 -
Linux 帐号管理
useradd usermod userdel原创 2014-11-14 09:11:35 · 1088 阅读 · 0 评论 -
The Linux user login management (/etc/passwd and /etc/shadow files)
原文cHave you ever thought what happens behind the doors when a user login happens in Linux? Where is the login information for a user is kept in Linux and how the validation of user crede转载 2014-11-13 22:04:54 · 1846 阅读 · 0 评论 -
linux ctime/mtime/atime
linux使用ctime/mtime/atime 来标记文档时间,ctime: c不代表create而是change的意思,比如文件内容的修改权限的修改都会改变ctimemtime: m是modify的意思,和ctime唯一的区别是权限的修改对其没有影响atime: a是文件访问的时间,比如你打开一个文件即使对起没有任何的修改也会对这个时间产生影响为了方便学习原创 2014-11-12 11:45:06 · 1496 阅读 · 0 评论 -
linux:获取系统内存使用情况
http://nadeausoftware.com/articles/2012/09/c_c_tip_how_get_physical_memory_size_system#sysinfonbspsysinfo( )On Linux, the sysinfo( ) function fills a sysinfo struct with system statistics.转载 2013-11-14 11:41:09 · 1063 阅读 · 0 评论 -
通过 ulimit 改善系统性能
概述系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit 的功能,使用以及它的影响,并以具体的转载 2013-11-11 11:31:49 · 841 阅读 · 0 评论 -
linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
PATH和LD_LIBRARY_PATH本质都是变量,所谓变量的意思就是由别人赋值产生的,直觉往往会让我们添加和减少这个变量本身的某些路径,实际上这是不正确的。正确的做法是我们要去修改赋予这个变量数值的那些配置文件,加一条路径或者减一条。说到底变量只关乎显示,不关乎其用于显示的内容。PATH: 可执行程序的查找路径查看当前环境变量:echo $PATH 设置:原创 2012-11-07 21:24:00 · 134761 阅读 · 0 评论 -
Linux 环境进程间通信(六):套接口
一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。1、背景知识linux目前的网络内转载 2012-12-20 12:51:45 · 1297 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(下)
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。1、系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地转载 2012-12-20 12:32:30 · 616 阅读 · 0 评论 -
Linux环境进程间通信(一):管道
1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独转载 2012-12-20 11:49:52 · 727 阅读 · 2 评论 -
Linux环境进程间通信(三):报文队列
消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随转载 2012-12-20 12:16:26 · 1857 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,转载 2012-12-20 12:30:29 · 521 阅读 · 0 评论 -
Linux环境进程间通信(四):信号灯
一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共转载 2012-12-20 12:24:22 · 685 阅读 · 0 评论 -
Linux环境进程间通信(二):信号
一、信号及信号来源信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基转载 2012-12-20 12:09:39 · 1665 阅读 · 0 评论 -
find . -name '*abc*'
find file with name原创 2012-08-02 16:46:16 · 902 阅读 · 0 评论 -
Linux - Find string in files.
原帖: http://www.liamdelahunty.com/tips/linux_find_string_files.phpfind . | xargs grep 'string' -sl xargs 参照: http://zh.wikipedia.org/wiki/XargsThe -s is for summary and won't display转载 2012-06-15 08:57:19 · 1794 阅读 · 0 评论 -
linux: 系统修复
最经在使用python,安装了2.7.5, 在某些电脑上会提示没有readline这个库,没有好啊,我就到网上找一个装上,装上之后系统崩溃了,再也起不来了。在suse安全模式下可以看到,原来系统自己在lib64下面是有这个库的,后来我又在local/lib下安装了一个,根据linux查找库的顺序,先到local下面找,然后找到了一个不匹配的库,直接导致系统崩溃,问题找到了,把这个新装上去的删掉原创 2013-11-08 14:26:08 · 862 阅读 · 0 评论 -
linux 系统的库: xxx_dev 和 xxx的世界
用了这么久的linux,今天才意识到一个关于linux库的问题。linux的库一般分为两类一种是直接使用的库,另一类是开发用的库,两者的区别在于直接使用往往只有一个so,开发用的还有头文件和静态库。所以我们开发的时候只有直接使用的库是不够的,还需要开发相关的头文件和其他相关内容。这也是为什么我们明明有这个库,为什么却用不了的原因,这是你第一个想到的应该是有没有dev想关的库,第二个是到原创 2013-11-08 15:21:38 · 1379 阅读 · 0 评论 -
Linux strip命令的用法
strip 命令用途通过除去绑定程序和符号调试程序使用的信息,减少扩展公共对象文件格式(XCOFF)的对象文件的大小。语法strip [ -V] [ -r [ -l ] | -x [ -l ] | -t | -H | -e | -E ] [ -X {32|64|32_64}] [ -- ] File ...描述strip 命令减少 XCOFF 对象文转载 2013-11-21 11:35:31 · 1035 阅读 · 0 评论 -
linux wget命令
http://wiki.linuxdeepin.com/index.php?title=Wgetwget默认会根据网站的robots.txt进行操作,如果robots.txt里是User-agent: * Disallow: /的话,wget是做不了镜像或者下载目录的,使用-e robots=off参数即可绕过该限制。Contents转载 2013-11-20 16:28:14 · 1096 阅读 · 0 评论 -
linux ls 只显示文件或者文件夹
只显示文件 ls -l | grep ^d只显示文件夹 ls -l | grep ^-解释一下: ls -l 之后会得到下面的内容drwx------ 4 jinwang users 4096 2012-02-09 15:00 .xchat2-rw-r--r-- 1 jinwang users 1690399 2012-06-0原创 2012-06-20 18:25:14 · 59995 阅读 · 5 评论 -
linux touch命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)example:touch file1.txt 更新file1.txt的存取和修改时间touch -c file1.txt 如果file1.txt转载 2013-07-25 17:08:55 · 743 阅读 · 0 评论 -
linux PS1提示符
# PS1='自定义内容' 注意两边的单引号 示例: PS1='(/u@/H /d /t)/$' ---------------------------------------------------------------------------------------------------------------- PS1:就是用户平时的提示符。转载 2013-07-25 16:01:46 · 813 阅读 · 0 评论 -
代码定位:__FILE__, __FUNCTION__, __LINE__
这是三个非常有用的全局变量,当程序需要输出一些内容,而又想知道输出的内容是在哪里输出的时候,这几个全局变量就派上用场了。__FILE__,__FUNCTION__, __LINE__ 从名字可以直接看出来了,对应的:代码文件名, 函数名, 行号。没啥好说的了,我不是写书的啊。示例代码:-------------------------------------------转载 2013-06-18 14:05:59 · 1259 阅读 · 0 评论 -
bootchartd简介
最近用过bootchartd这个开源小工具。特长是分析系统的启动速度问题。bootchart是一个统计系统启动过程中进程的CPU消耗和等待以及IO的消耗的情况的一个统计工具,其只是统计启动过程中的前几十秒不能代表一个完整的进程的启动和消耗情况,这个也是其局限性。 最后bootchartd会生成一个svg的图片,结果看起来很直观明了。 bootchartd的原理其实是在用其自身替原创 2015-11-19 22:31:29 · 1975 阅读 · 0 评论