Linux
鱼翅1013
这个作者很懒,什么都没留下…
展开
-
获取Core时函数栈的方法
在Linux服务开发过程中,经常会遇到各种问题,其中一种快速高效解决问题的策略就是:当服务处理异常时,操作系统自动产生Core文件,通过GDB调试工具分析Core文件,还原异常发生时服务的函数栈调用层次,继而快速的分析出导致异常发生的逻辑代码。Core文件,本质就是服务发生异常时的内存映像,如果服务占用的内存空间非常大,尤其是在64位操作系统下,例如占用20G的内存,写入磁盘Core文件的耗时会比原创 2014-03-01 14:36:17 · 1792 阅读 · 0 评论 -
设置so搜索路径
1、修改/etc/ld.so.conf文件,同时ldconfig2、动态添加 export LD_BIRARY_PATH=/usr/local/mysql/lib/mysql echo $LD_BIRARY_PATH原创 2011-06-16 19:06:00 · 820 阅读 · 0 评论 -
memcache(1)网络模型
<br /> 上周在公司里面跟同事一起交流了一些memcache的个人看法,后来整理了一下。主要分为:网络线程模型、内存基本结构、LRU结构、hash冲突以及hash乾坤大挪移。<br /> <br />memcache为单进程多线程结构,通信框架使用libevent(http://monkey.org/~provos/libevent/,对定时器、管道、socket、中断都进行了统一的管理,功能丰富肯定带来一些性能上面的副作用,代码值得去阅读学习)。<br /> <br />1、线程分为两种原创 2011-04-11 23:21:00 · 1857 阅读 · 0 评论 -
python 升级导致yum失败
<br />rpm -ivh --force --nodeps python2.4.xxxx.rpm原创 2011-05-30 11:45:00 · 654 阅读 · 0 评论 -
查看lib库文件
<br />ldconfig -v | grep libz原创 2011-05-30 11:42:00 · 1439 阅读 · 0 评论 -
Python报错TypeError: 'str' object is not callable
<br /><br /> 当一般内部函数被用作变量名后可能出现此错误。比如:<br />range=1<br />for i in range(0,1):<br />………<br />就会报这样的错误<br />这样的错会报在for行,但是时间引起的原因却是在range=1这行,如果两行相距较远,怎很难被发现。所以要特别注意不要用内部已有的变量和函数名作自定义变量名。原创 2011-04-06 10:21:00 · 10761 阅读 · 0 评论 -
vim tab设置为4个空格
<br /><br />在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:<br />set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)<br />set expandtab<br />对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:<br />TAB替换为空格:<br />:set ts=4<br />:set expandtab<br />:%retab!<br />空格替换为TAB:<br />:set ts=4<br />:set noexp原创 2011-04-02 16:37:00 · 271052 阅读 · 14 评论 -
建立软连接
<br />ln -s 源文件 目的文件 软连接<br />ln 源文件 目的文件 硬连接原创 2011-03-30 15:55:00 · 691 阅读 · 0 评论 -
Tcl/Tk 安装
<br /><br /><br />主页: http://www.tcl.tk<br />下载地址: http://www.tcl.tk/software/tcltk/downloadnow.html<br /><br />1.下载源码包(我是在图形化界面用火狐浏览器下载的)<br />wget http://prdownloads.sourceforge.net/tcl/tcl8.5.7-src.tar.gz<br />wget http://prdownloads.sourceforge.net/tcl原创 2011-03-28 15:03:00 · 1404 阅读 · 0 评论 -
linux 修改shell的执行文件路径
export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin:/usr/local/bin"原创 2011-03-02 23:52:00 · 1746 阅读 · 0 评论 -
fork子进程使用_exit而不是用exit函数
<br />1.1.3. 为何在一个fork的子进程分支中使用_exit函数而不使用exit函数?<br />‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很 突出。<br />‘exit()’与‘_exit()’的基本区别在于前一个调用实施与调用库里用户状态结构 (user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序 (译者注:自定义清除程序由atexit函数定义,可定义多次,并以倒序执行),相对原创 2010-12-14 14:33:00 · 3035 阅读 · 1 评论 -
深入分析Memcached的线程接入模型---下
<br />view plaincopy to clipboardprint?<br />/* <br /> * Processes an incoming "handle a new connection" item. This is called when <br /> * input arrives on the libevent wakeup pipe. <br /> */ <br />static void thread_libevent_process(int fd, short whi转载 2010-06-19 17:27:00 · 616 阅读 · 0 评论 -
内网、外网IP地址
公网、内网是两种Internet的接入方式 内网接入方式:上网的计算机得到的IP地址是Inetnet上的保留地址,保留地址有如下3种形式: 10.x.x.x 172.16.x.x至172.31.x.x 192.168.x.x 内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但转载 2011-06-20 10:20:00 · 1722 阅读 · 0 评论 -
linux 查看打开的端口
netstat -natpl,显示tcp的侦听端口; netstat -naupl,显示udp的侦听端口; lsof,显示所有已经打开的文件,lsof -i:11001,显示端口 11001的信息;原创 2011-06-21 15:43:00 · 4830 阅读 · 0 评论 -
获取网络包到达网卡的时间
为啥要获取数据包到达网卡的时间? 在回答这个问题之前,我们先看一下网卡消息队列。如下图所示,对端发送的网络数据包被网卡设备接收到之后,会存放到网卡消息队列中,由应用程序调用recv系列函数从网卡队列中获取网络消息。 现在假设:消息处理服务处理网络消息包的平均时间为1s,请求方等待回包的时间为1s,网卡消息队列的长度为10,在应用程序正常处理的情况原创 2014-02-10 16:22:56 · 6117 阅读 · 1 评论 -
浅析网络开发框架——ZeroMQ
据官方文档介绍,ZeroMQ是一个可伸缩的分布式或者高并发的异步网络消息库。不同于其他的服务,例如RabbitMQ等消息队列服务,是以一种可独立运营的服务存在,ZeroMQ更像是一套socket library,是对BSD socket进行的上层封装。在传统的BSD网络开发模型中,采用的是socket与socket之间的消息传输,即1:1的消息传输链接,在ZeroMQ中是node与node之间的消息传输,node之间存在多条数据链接,即N: M的消息传输链接。ZeroMQ在底层实现了关于进程通信、网络通信、原创 2014-02-22 08:42:22 · 11519 阅读 · 2 评论 -
Linux 获取随机数
- 伪随机法 伪随机法就是通过一个确定性的算法来获取看似随机或者乱序,在计算伪随机序列时,如果使用的开始值不变化的,实际上获取到的随机序列的值顺序是保持不变。例如在C中比较常用的随机函数rand(),是比较典型的伪随机法。 在调用rand()函数时,没有显示的调用srand()函数来设置随机序列开始种子的话,默认随机序列的种子即为1,此时的随机序列为原创 2014-01-12 10:54:04 · 7166 阅读 · 0 评论 -
如何使用strace+pstack利器分析程序性能
引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用耗时;p转载 2013-12-25 16:39:33 · 1204 阅读 · 0 评论 -
Linux文件锁flock
在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程原创 2014-01-04 21:01:35 · 15261 阅读 · 0 评论 -
HMAC-SHA1各语言版本实现
在各大开放平台大行其道的互联网开发潮流中,调用各平台的API接口过程中,无一例外都会用到计算签名值(sig值)。而在各种计算签名的方法中,经常被采用的就是HMAC-SHA1,现对HMAC-SHA1做一个简单的介绍: HMAC,散列消息鉴别码,基于密钥的Hash算法认证协议。实现原理为:利用已经公开的Hash函数和私有的密钥,来生成固定长度的消息鉴别码; SHA1原创 2013-12-14 14:01:02 · 30269 阅读 · 1 评论 -
修改共享内存的最大值限制
cd /proc/sys/kernelvi shmmax也可以直接用echo size > /proc/sys/kernel/shmmax修改 例如:echo 2147483648 > cat /proc/sys/kernel/shmmax原创 2011-07-06 19:45:46 · 3684 阅读 · 0 评论 -
SED单行脚本快速参考(Unix 流编辑器)
http://sed.sourceforge.net/sed1line_zh-CN.html原创 2011-07-05 21:58:15 · 676 阅读 · 0 评论 -
iostat来对linux硬盘IO性能进行了解
本文链接: http://www.php-oa.com/2009/02/03/iostat.html以前一直不太会用这个参数。现在认真研究了一下iostat,因为刚好有台重要的服务器压力高,所以放上来分析一下.下面这台就是IO有压力过大的服务器 $iostat -x 1Linux 2.6.33-fukai (fukai-laptop) _i686_转载 2011-06-30 21:21:00 · 666 阅读 · 0 评论 -
nginx编译出错 bin/sh: line 2: ./configure: No such file or directory
安装使用的是nginx-0.8.54 稳定版。一开始按常规的指定编译参数:./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_ssl_module –with-http_sub_module –with-http_gzip_static_module –with-http_stub_sta转载 2011-06-30 00:07:00 · 36361 阅读 · 5 评论 -
crontab 使用
<br />在使用crontab的时候,习惯性的向crontab中添加任务,但是过了一段时间发现任务根本没有执行。仔细检查后发现,crontab程序没有启动。<br /> <br />1、提供crontab服务的crond 服务<br />启动方式为:service crond start 或者 /etc/rc.d/init.d/crond start<br />2、向crontab中添加服务<br /> */20 * * * * /root/pybinlog/myget.sh <br /> 对应含义分别为原创 2011-05-05 10:48:00 · 608 阅读 · 0 评论 -
查看linux操作系统位数
getconf LONG_BIT(32位的系统中int类型和long类型一般都是4字节,64位的系统中int类型还是4字节的,但是long已变成了8字节inux系统中可用"getconf WORD_BIT"和"getconf LONG_BIT"获得word和long的位数。64位系统中应该分别得到32和64。)原创 2011-06-23 11:32:00 · 1059 阅读 · 0 评论 -
iptables-save iptables-restone
iptables-save > xxx,将防火墙规则存放到文件中去 iptables-restone xxx,从该文件中启用防火墙规则原创 2011-06-20 10:40:00 · 975 阅读 · 0 评论 -
深入分析Memcached的线程接入模型---中
<br />三,在main()函数中,初始化main_thread的event_base实例,见memcached.c<br />view plaincopy to clipboardprint?<br />//定义main_thread的event_base实例 <br />static struct event_base *main_base; <br /> <br />//下面代码略 <br />… <br /> <br />/* initialize main thread li转载 2010-06-19 17:26:00 · 551 阅读 · 0 评论 -
深入分析Memcached的线程接入模型---上
memcached是一个分布式的内存cache系统,目前被大量地运用于各种各样的站点中,以不断提高站点的总体访问性能,而另外一方面,memcached的使用是非常简单的,可以说,使用门槛很低,这也许是造成memcached目前非常流行的原因之一。我们可以看到,网上分析memcached的文章也比较多,本文是笔者结合memcached源代码的基础上对其线程接入模型进行深入的分析,通过学习和借鉴memcached设计和实现上 的一些思想,为我们的系统架构设计增添新的思路。简单的说,memcached的实现并没有转载 2010-06-19 17:25:00 · 721 阅读 · 0 评论 -
thread and signal
同一个进程内的线程对信号的处理: 经过测试发现1)如果在create thread 之前主线程对信号的处理进行了设置的话,那创建之后的子进程则进程主线程的信号设置。2)如果每个线程均没有屏蔽信号的话,那当产生该信号时,具体有那个线程来进行处理,则是由系统来决定。3)如果所有线程中均屏蔽了该信号,只有一个例外的话,则发生信号时,有未屏蔽该信号的线程来进行处理。原创 2010-03-23 22:51:00 · 1510 阅读 · 0 评论 -
sigaction
sigaction,是为替代signal 来设计的较稳定的信号处理。 signal的使用比较简单。signal(signalNO,signalproc); 而signaction,则可以设置比较多的消息。尤其是在信号处理函数过程中接受信号,进行何种处理。 使用示例为: #include #include void WrkProcess(int nsi原创 2010-03-23 21:22:00 · 7118 阅读 · 0 评论 -
Linux下多线程编程与信号处理易疏忽的一个例子
这几天把一个网络流量采集器程序基本改好了,原来在main函数中把几个子线程启动后就睡10分钟后开始清理子线程后退出。现在想改成子线程启动后主线程进入无限睡眠,直到收到SIGTERM或SIGINT。主程序如下:其他头文件#include //信号处理所需要的头文件int main(int argc, char * argv[]){ //其他所需要的变量声明转载 2010-03-17 22:50:00 · 577 阅读 · 0 评论 -
snprintf,strncat,strncpy
Unix网络编程 提示: 不要采用,sprintf,因为该函数没有给对输入缓冲器的大小进行检查,如果输入的值大于缓冲器的大小,则很容易导致溢出。 所以建议,利用,snprintf来代替sprintf.同样的为:strncat ,strcat;strncpy, strcpy原创 2010-03-16 19:34:00 · 753 阅读 · 0 评论 -
MySQL 连接数据库出现问题时的解决方案。
yum 安装#yum install mysql-server $sudo /etc/init.d/mysqld start $mysql -uroot 1、下载mysql的二进制包首先到http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.27-linux-i686-glibc原创 2010-01-02 22:34:00 · 2970 阅读 · 0 评论 -
内存池
引言本书主要针对的是 C++ 程序的性能优化,深入介绍 C++ 程序性能优化的方法和实例。全书由 4 个篇组成,第 1 篇介绍 C++ 语言的对象模型,该篇是优化 C++ 程序的基础;第 2 篇主要针对如何优化 C++ 程序的内存使用;第 3 篇介绍如何优化程序的启动性能;第 4 篇介绍了三类性能优化工具,即内存分析工具、性能分析工具和 I/O 检测工具,它们是测量程序原创 2010-03-12 23:24:00 · 495 阅读 · 0 评论 -
linux系统的ld.so.conf文件
今天重新编译以前的一个程序,里面用到iconv库:gcc test.cc -liconv运行时:a.out:error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory以前编译运行是可以的,可能是不久前升级了iconv库影响。在/usr/l原创 2009-12-31 15:45:00 · 1012 阅读 · 0 评论 -
Linux 添加用户
1、useradd username2、passwd username System will give you a tip to input the passwd原创 2009-12-28 14:44:00 · 438 阅读 · 0 评论 -
监护程序(信号量集)
#include #include #include #include #include #include #include #include #include #include #include #include #define SEM_KEY 871013#define SEM_SIZE 2union semu原创 2010-03-06 17:29:00 · 614 阅读 · 0 评论 -
linux 修改文件时间为当前时间
find . -type f -exec touch {} /;原创 2010-03-02 11:53:00 · 2359 阅读 · 0 评论 -
Linux sockaddr_in赋值
serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(SERVPORT);inet_pton(AF_INET,"127.0.0.1",&serv_addr.sin_addr); IP地址转换函数有:inet_pton,inet_addr,inet_aton,inet_ntoa,inet_ntop 前三个是将ASCI原创 2010-02-27 10:25:00 · 2423 阅读 · 0 评论