![个人头像照片](https://ucc.alicdn.com/avatar/img_549ec0fb89fbd36f61d148fccaa340bb.jpg)
暂无个人介绍
关于堆及内存分配点滴 1. 无论是堆,还是栈都是对虚存的操作和管理。 2. 系统调用brk()和mmap()用来动态分配虚存空间,也就是表明这些虚存地址是合法的,访问的时候,系统应为其分配物理内存,而不是报错。
信号本质 信号是在软件层次上对中断机制的一种模拟,软中断 信号来源 信号事件的发生有两个来源: 硬件来源:(比如我们按下了键盘或者其它硬件故障); 软件来源:最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。
1970年1月1日0点 1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
Linux的shell中echo改变输出显示样式 echo -e "\033[44;37;5m ME \033[0m COOL" 原文 http://www.cnblogs.com/276815076/archive/2011/05/11/2043367.html
Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。
修复删除文件 1、debugfs 打开,刚刚被删除文件所在的分区 open /dev/sda2 2、用ls 加-d参数显示刚刚删除文件所在的目录 ls -d /root/data 显示有尖括号的就是我们要找的文件Inode 号 执行logdump –I 记下得到的block号b_num。
在awk中执行外部命令 1、借助system/getline删除 awk '{cmd="rm "$0;system(cmd)}' filename awk '{cmd="rm "$0;cmd|getline }' filename man awk里面有关于getline的说明。
删除特殊大小的文件 1. 根据文件的时间,创建人,大小等特征,用find命令找到文件 find . -maxdepth 1 -type f -size +72019c -size -72021c 解释: -maxdepth 1 搜索深度为1 -type f 搜索普...
bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。
shell中exec命令 1、find中的-exec参数 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 find ./ -name "*.txt" -exec grep "bin" {} \; 在当前目录下(包含子目录),删除所有txt文件 find .
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。
struct linger TCP连接断开的时候调用closesocket函数,有优雅的断开和强制断开两种方式. 那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。
找到文件inode为31467125 并重命名。 find . -type f -inum 31467125 -exec mv {} new_name.html \; 找到指定inode并删除之 find . -type f -inum 314167125 -delete 找到相关文件,并删除;使用-print0和-0参数,避免某些文件中有包含有分隔符(如test me)而错误删除文件。
tcpdump抓取TCP标识位 按每8位组算,TCP的标志位位于第13个8位组中,如下,第一行一共32位是0 - 3个8位组,第二行是4-7八位组,第三行是8-11八位组,data offset +reserved的前四个是第12个8位组,reserved中的后2位+6个标志位是第13个八位组。
curl命令简单使用 下载文件 curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG 批量下载 curl -o #2_#1.
1、查看命令 [root@www ~]# sysctl -a | grep local 或cat /proc/sys/net/ipv4/ip_local_port_range 2、修改端口范围 1)永久修改 vi /etc/sysctl.conf 添加下面一行: net.ipv4.ip_local_port_range = 1024 65535 然后执行: sysctl -p 生效。
wget是linux上的命令行的下载工具。支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,找到合乎条件的文件并将其下载到本地硬盘上;如果必要,Linux wget将恰当地转换页面中的超级连接以在本地生成可浏览的镜像。
在写代码的时候,经常会用到读取系统时间的函数。localtime函数不是线程安全的。如果在多线程里调用localtime函数,很可能会出现问题。 多线程应用里面,应该用localtime_r函数替代localtime函数,因为localtime_r是线程安全的。
首先,调用函数curl_global_init()来初始化库函数;记得最后调用curl_global_cleanup()来释放库资源。其次,调用curl_easy_init()来初始化一个句柄,得到一个easy interface型指针;curl_easy_init函数是线程相关的,也就是说不能在一个线程中调用另外一个线程通过curl_easy_init创建的CURL指针。
curl: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory 解决办法: ln -s /usr/lib/libcurl.
#define likely(x) __builtin_expect((x),1) #define unlikely(x) __builtin_expect((x),0) __builtin_expect() 是 GCC (version >= 2.96)提供给程序员使用的,目的是将“分支转移”的信息提供给编译器,这样编译器可以对代码进行优化,以减少指令跳转带来的性能下降。
查看libc库的版本 /lib/libc.so.6
在64位机器上编译时提示: “can not be used when making a shared object; recompile with -fPIC” 添加编译选项 -fPIC,重新编译。
圆括号结构 圆括号结构能够强制将其中的命令运行在子Shell中,它的基本格式为: ( command 1 command 2 … command n ) 圆括号内的n条命令在子Shell中运行,bash版本3之后定义了内部变量BASH_SUBSHELL,该变量记录了子Shell的层次。
一、定义 在 awk 中,数组是关联数组,它的特点是: 1、 数组的下标可以是整数,也可以是负数甚至是字符串 2、 数组的下标可以不连续。 Awk 的变量 IGNORECASE 的值不影响数组下标。
awk 数组实例 awk的数组,一种关联数组(Associative Arrays),下标可以是数字和字符串。因无需对数组名和元素提前声明,也无需指定元素个数 ,所以awk的数组使用非常灵活。
seq用于产生从某个数到另外一个数之间的所有整数 例一: # seq 1 10 结果是1 2 3 4 5 6 7 8 9 10 例二: #!/bin/bash for i in `seq 1 10`; do echo $i; done ...
time简介 time命令 用于 打印出一条命令或一个程序的执行时间 time 命令以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。 用法:time [ -p ] Command [ Argument .
expr命令一般用于整数值,但也可用于字符串。一般格式为: expr argument operator argument ① 用空格隔开每个项; ② 用 \ (反斜杠) 放在 shell 特殊字符前面; ③ 对包含空格和其他特殊字符的字符串要用引号括起来 1、用于数字 $expr 10...
${#string} $string的长度 ${string:position} 在$string中,从位置$position开始提取子串 ${string:position:length} 在$string中,从位置$position开始提取长度为$length的子串 在shell中,通过awk,sed,expr 等都可以实现,字符串上述操作。
AWK中的位操作 与 and(v1,v2)=v1&v2 例 awk 'BEGIN{ s=and(5,4);print s}' 或 or(vl1,v2)=v1|v2 例 awk 'BEGIN{ s=or(5,4);print s}' 原文: http://jjuanxi.
在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。 Linux下的命令是: export 如果想查看某一个名称的环境变量,命令是:echo $环境变量名,比如: echo $PATH 原文: http://www.
":x"和":wq"的真正区别,如下: :wq 强制性写入文件并退出(存盘并退出 write%quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。 :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。
位操作符. 位操作符在shell脚本中极少使用。它们最主要的用途看起来就是操作和test从sockets中 读出的变量."Bit flipping"与编译语言的联系很紧密,比如c/c++,在这种语言中它可以 运行得足够快.
Shell 取两个文件的交集和并集 cat 1.txt 2.txt | sort -n | uniq -d 交集 cat 1.txt 2.txt 2.txt | sort -n | uniq -u 差集 去除1.txt里2.txt里包含的内容 1.txt和2.txt都已排重。
内存泄漏检测工具valgrind 1、安装 cd valgrind-3.2.3 ./configure make;make install 2、使用 valgrind --tool=memcheck --leak-check=full .
调试core文件 当获得了core文件以后,就可以利用命令gdb进行查找,参数一是应用程序的名称,参数二是core文件。也可以用-c来指定core文件。 如: gdb [paremeter] app [paremeter] /app.core 然后输入bt(backtrace)或者where找到错误发生的位置和相应的堆栈信息。
* Remove surrounding whitespace from a std::string. * @param s The string to be modified. * @param t The set of characters to delete from each end * of the string.
1、伪终端这个术语暗示对于一个应用程序而言,它看上去像一个终端,但实际上应用程序被欺骗了。从内核角度看,伪终端看起来像一个双向管道。而事实上Solaris的伪终端就是用STREAMS构建的。 /dev/ptyAX -- 伪终端Pseudo Terminal的主设备 /dev/t...
Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 $iostat -d -k 1 10 参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。
查看内存使用情况 1.top “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目; “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程; 第五行(Swap)表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。
munmap munmap(解除内存映射) 相关函数 mmap 表头文件 #include #include 定义函数 int munmap(void *start,size_t length); 函数说明 munmap()用来取消参数start所指的映射内存起始地址,参数length则是欲取消的内存大小。
Linux通过一个叫做 task_statm 的函数来返回进程的内存使用状况 int task_statm(struct mm_struct *mm, int *shared, int *text, int *data, int *resident) { *shared...
VIRT: 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等; 2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。
进程四要素 1. 有一段程序供其执行,这段程序不一定是某个进程所专有,可以与其他进程共用。 2. 有进程专用的内核空间堆栈 3. 在内核中有个一task_struct数据结构,即通常说的“进程控制块”。
1、shell表达式 a=3 ; b=2 ; c=4 if (( a > b )) && (( a < c )) 或者 if [[ $a > $b ]] && [[ $a < $c ]] 或者 if [ $a -gt $b -a $a -lt $c ] 2、-o = or , -a = and , 但我一向只用 || 或者 && 3、其它解释 -ne 比较数字 (numberic) ; != 比较字符 (string), 但后者拿来比较数字也可,只是不是标准用法。
Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理。 所以经常要用到 sleep 或 usleep 函数。 下面来说一下 sleep 和 usleep 的区别: sleep : 默认以秒为单位。
ChartDirector manual ChartDirector 是一款商业的图表库,支持多种语言。和fusioncharts相比,好操作,构造结果容易。fusioncharts要构造XML类型的数据,即JSON格式的输出。
makefile时常遇到这样的问题,汇总网上的原因如下: 1. 上一行换行符号 \ 后面有空格 2. 本行前面的空白有非法字符 1)Makefile可能是以命令行开始:以[Tab]字符开始,但不是一个合法的命令行(例如,一个变量的赋值)。
1、!$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串。如:你可能会这样: 可以改成: $mkdir mydir $mv !$ yourdir #$mv mydir yourdir $cd !$ 2、^old^new 替换前一条命令里的部分字符串。