Linux
文章平均质量分 60
wclin88
这个作者很懒,什么都没留下…
展开
-
Linux core 文件介绍
<br /><br /> 1. core文件的简单介绍<br />在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 <br />2. 开启或关闭core文件的生成<br />用以下命令来阻止系统生成core文件:<br />ulimit -c 0<br />下面的命令可以检查生成core文件的选项是否打开:<br />ulimit -a<br />该命令将显示所有的用户定制,其中选项-a代表“all”。也可以修改系统文件来调整转载 2011-04-09 11:46:00 · 527 阅读 · 0 评论 -
linux at
http://liubin.blog.51cto.com/282313/151067at 21:42 01/17/2012>reboot按键ctrl+d 结束atq 查看队列atrm 删除Can't open /var/run/atd.pid to signal atd. No atd running?./service atd start转载 2012-01-19 16:28:27 · 688 阅读 · 0 评论 -
linux 函数局部变量的堆栈使用
从这个例子的输出,可以看到从高地址开始分配,所以a1的地址是比a2大;这里要注意的时,单从一个数组来分析的话,比如aa,那么地址是从低位开始的,也就是如果我们对aa的操作越界了的话,那么可能会把a1和a2的值给覆盖掉,是从低往高处踩内存的。void print(int b1,int b2){ int a1=0,a2=1; printf("a1原创 2011-10-06 17:27:20 · 875 阅读 · 0 评论 -
*** glibc detected *** double free ....
*** glibc detected *** free(): invalid pointer:*** glibc detected *** malloc(): memory corruption:*** glibc detected *** double free or corruption (out): 0x00000000005c18a0 ****** glibc detected转载 2012-02-20 19:32:50 · 12580 阅读 · 0 评论 -
调试的艺术学习笔记--程序崩溃处理(段错误)
l 程序崩溃处理: 1) 为什么程序会奔溃? 当某个错误导致程序突然和异常地停止执行时,程序崩溃。迄今为止最常见的导致程序奔溃的原因是试图在未经允许的情况下访问一个内存单元。什么意思呢?比如说一个内存单元你没有权限去写或读,然后你却这么做了。Unix系列的平台上,操作系统一般会宣布程序导致了段错误(seg fault),并停止程序的执行。但是硬件必原创 2010-11-01 23:35:00 · 899 阅读 · 0 评论 -
一个简单类的内存分配
#include#include#includeclass addr{ public: addr() { b = (int*)malloc(sizeof(int)*100); } ~addr() { de原创 2012-02-23 16:44:52 · 557 阅读 · 0 评论 -
crontab 使用
用于设置周期性被执行的指令时程表的格式如下 : f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推 当 f1原创 2011-09-05 22:01:10 · 1153 阅读 · 1 评论 -
new 失败
以下是某个高手定位new失败的过程。一个new失败问题的查找过程 在测试部发现一个问题,整个系统跑一阵后就有daemon程序崩溃,虽不是必现,但是一天还是可以出现好几次,导致性能测试无法继续下去,看core的信息是new失败了,具体堆栈如下: (gdb) bt #0 0x2acd25c1 in kill () from /lib/libc.so.6 #1 0x转载 2012-02-20 15:42:02 · 775 阅读 · 0 评论 -
gdb info
1) info args打印出当前函数的参数名及其值。2)info locals打印出当前函数中所有局部变量及其值。3)info catch打印出当前的函数中的异常处理信息。4)源代码的内存你可以使用info line命令来查看源代码在内存中的地址。info line后面可以跟“行号”,“函数名”,“文件名:行号”,“文件名:函数名”,这个命令会打印原创 2012-03-14 20:42:23 · 8046 阅读 · 0 评论 -
gdb查看内存 (x/100xb)
可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:x/ n、f、u是可选的参数。n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。u 表示从当转载 2012-03-13 17:59:50 · 5497 阅读 · 0 评论 -
linux下damon的实现
参考http://zxuhong.blog.51cto.com/368977/99283/注:Linux下可以直接调用damon函数来实现daemon进程,没必要重新实现,理解其原理即可。在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir, int __noclose);如果__noc转载 2011-12-13 16:43:05 · 3404 阅读 · 0 评论 -
shell 数组(字符串下标)
现在游戏开的服务器越来越多了,每次用ssh操作都要写ip地址,很烦,也容易出错,所以要自己搞个服务器名到ip的映射。map=""anahost(){ count=0 temp=""#cat /home/linwencai/sh/HOST | while read line; //这种写法里面的count是local的 whil原创 2012-04-06 20:54:01 · 7854 阅读 · 1 评论 -
linux screen 的使用
有时更新服务器时要执行一些操作数据库的脚本,但是家里网络有时不稳定,如果脚本还没执行完掉线了那就悲剧了。这时screen就可以帮上忙了。先记一些简单的,顶着用就行了,复杂的需要时再看。script /dev/null1)在执行脚本之前先执行 screen 命令,然后执行脚本2)如果这时想做其他事,那么执行 ctrl+a+d,退出screen,脚本在后台继续执行着(这是掉原创 2011-12-13 17:53:16 · 497 阅读 · 0 评论 -
Linux进程间通信源码剖析,共享内存(shmget函数详解)
转至:http://blog.csdn.net/lanmanck/article/details/6092995shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key-------转载 2011-12-24 15:55:23 · 18032 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存
转至:http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html简介:系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。系统V则是通过映射特殊文件系统shm中转载 2011-12-24 15:56:28 · 1457 阅读 · 0 评论 -
关机相关(shutdown,reboot)
慣用的關機指令: shutdown由於Linux的關機是那麼重要的工作,因此除了你是在主機前面以tty7圖形介面來登入系統時, 不論用什麼身份都能夠關機之外,若你是使用遠端管理工具(如透過pietty使用ssh服務來從其他電腦登入主機), 那關機就只有root有權力而已喔!嗯!那麼就來關機試試看吧!我們較常使用的是shutdown這個指令,而這個指令會通知系統內的各個程序 (processes),並且將通知系統中的run-level內的一些服務來關閉。shutdown可以達成如下的工作:可以自由選擇转载 2011-04-16 17:26:00 · 1482 阅读 · 0 评论 -
netstat
netstat的输出结果能分为两个部分,一个是Active Internetconnections,称为有源TCP连接,另一个是Active UNIX domain sockets,称为有源Unix域套接口。在上面的输出结果中,第一部分有5个输出结果,显示有源TCP连接的情况,而第二部分的输出结果显示的是Unix域套接口的连接情况。Proto显示连接使用的协议;RefCnt表示连接到本套接口上的进程号;Types显示套接口的类型;State显示套接口当前的状态;Path表示连接到套接口的其他进程使用的路径名原创 2011-04-28 09:22:00 · 609 阅读 · 0 评论 -
Linux中locale 详解
http://blog.csdn.net/angelseyes/article/details/4820586locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面:看中文,写中文,与 window中转载 2011-07-21 21:14:13 · 7366 阅读 · 0 评论 -
文件描述符限制的设置
今天在大宝的blog里看到一篇文章,:linux下, 单个进程默认打开的最多socket是1021个, 其实是1024, 其它三个分别被: stderr, stdin, stdout占用.想到这个数据肯定不能满足我们的服务器需求,于是到我们server启动脚本里查看修改这原创 2011-09-14 21:37:17 · 1652 阅读 · 0 评论 -
epoll相关
这两天重新温习了下epoll,上次看epoll是一年前进公司前了,^_^。总结几个要点,便于下次重温。1) ET(edge-triggered),当描述符从未就绪变成就绪时,这时就会触发。这里的重点"从未就绪"变成"就绪"。 什么情况下是会发生这种情况呢。第一,对原创 2011-09-15 23:18:29 · 477 阅读 · 0 评论 -
shell脚本执行顺序
之前以为shell脚本的执行就是把脚本里的shell语句一句一句不停的往linux里丢,刚刚问了下同事,和上网查了一下才知道,理解错了。转载一句话:你可以把shell脚本看成你手工一条一条语句输入运行的结果。所以你也可以用“&”把一个程序的执行放入后台,但是当脚本运行到最后是原创 2011-08-31 11:41:40 · 8551 阅读 · 0 评论 -
shell 操作数据库
现在数据库的表字段是由各个修改的组员把相应的sql文件写到一个备忘文件的,然后我在更新服务器的时候就要手动的把每条sql拷贝mysql命令行,然后执行,修改。现在有4个服务器,改起来已经觉得有点麻烦,脚本化势在必行了。1)执行的脚本文件#!/bin/shUSERNAM原创 2011-08-31 10:09:40 · 942 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
一,安装: 1、 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz22、 解压安装包:tar –jxvf valgrind-3.2.3.tar.bz23、 解压后生成目录valgrind-3.2.3 4、 cd valgrind-3.2.35、 ./configure --prefix=/data/home/nemo/tools/v原创 2011-06-24 11:22:00 · 811 阅读 · 0 评论 -
Kill 不只是kill,也可发信号给自己的进程
今天在看服务器的启动和停止脚本时,看到这样一个kill命令:kill -USR1 $pid;上网查了一下,知道这个kill命令是给自己的进程发信号的,通过这个命令来让服务器进程从正常的途径推出,而不是强制退出。 写了个小程序模拟这个过程:#include#include#include void SignalHandler(int signal){ /原创 2011-08-31 22:05:35 · 5516 阅读 · 0 评论 -
信号
1)信号都被定义为正整数2)很多条件可以产生信号:某些终端按键,硬件(除数为0,无效内存引用),kill函数等3)处理信号:忽略(SIGKILL SIGSTOP除外),捕捉信号(SIGKILL SIGSTOP除外),默认动作。4)两个特殊信号:用户定义的信号SIGGUSR1 SIGUSR2,用于应用程序5)信号产生之后,内核为该条件发生时正在运行的进程产生适当信号(kill -US原创 2011-10-20 21:10:37 · 435 阅读 · 0 评论 -
ulimit
Provides control over the resources available to the shell and processes it creates, on systems that allow such control.help ulimit ,我们可以看到这个解释。 用ulimit 命令对core文件,stack大小等的设置,只能是对当前shell和它创原创 2011-12-08 10:12:36 · 675 阅读 · 0 评论 -
linux命令和shell备忘
1) touch file 创建空文件2)head -n | tail -1 得到第n行内容3) server_count=`expr $server_count + 1` 或 ((i=$i + 1)) 自增4)取串的前n个字符 ${line:0:4} 5)给改变变量的值 COREEXIST=1,不能用$COREEXIST=16)if语句判断条件多个时 [ $原创 2011-09-12 16:30:35 · 459 阅读 · 0 评论 -
服务器内存问题总结
最近服务器总是不定时的奔溃,从core文件的堆栈上看,是奔溃在lua的实现文件里面,都是分配内存或是释放内存时发生的。查看目录/var/log下的messages文件,可以发现有这样的日志 *** glibc detected *** free(): invalid next size (normal 或fast): 0x00000000d15bd970 *** 或double f原创 2012-02-20 19:51:53 · 2372 阅读 · 0 评论