Linux学习
文章平均质量分 52
码农SW
这个作者很懒,什么都没留下…
展开
-
网络字节序与主机字节序--大端序和小端序(转帖)
网络字节序与主机字节序不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址对于大端序和小端序更好的理解,可以看维基百科http://zh.wikipedia.org/wiki/字节序 LE little-endian 最符转载 2010-02-23 22:01:00 · 1400 阅读 · 0 评论 -
利用多核多线程进行程序优化-转载
http://www.ibm.com/developerworks/cn/linux/l-cn-optimization/index.html#icomments 里面讲了些多核多线程程序优化的方法:1. 把原来的单线程改写成多线程。2. 针对Cache的优化这节很给力,原来还可以这样子耍cache,通过在apple数据结构a和b的成员变量之间加上一个比较大的变量,迫使Cache转载 2011-11-20 16:37:30 · 1233 阅读 · 0 评论 -
gdb-Linux下的代码debug工具-初学者
http://www.huihoo.org/gnu/linux/gdb.htmlhttp://www.cs.cmu.edu/~gilpin/tutorial/转载 2011-11-03 16:24:01 · 649 阅读 · 0 评论 -
Linux下开发必备工具集-Vim,gdb, valgrind, gprof
1. 用VIM和ctags/cscope。在linux下提供一个完整的IDE, Vim的快速上手--直接跑一下vimtutor,按照里面的训练要求对vim命令的熟悉。ctags/cscope目的是帮助程序员对程序的浏览。http://easwy.com/blog/archives/vim-cscope-ctags/ 2. GDB工具。这个是GNU提供的一个代码Debug工具原创 2011-11-03 16:42:19 · 1429 阅读 · 0 评论 -
gprof-Linux下程序的性能优化工具
我们在写程序,特别是嵌入式程序的时候,通常需要对程序的性能进行分析,以便程序能够更快更好地运行,达到实时(real-time)的目的。如果程序很大,分析起来就很困难。如果有个工具能够自动进行程序的性能分析,那就最好了。这里介绍一种Linux下程序的Profiling工具---GNU gprof。GNU gprof能够打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗转载 2011-11-03 15:32:08 · 1829 阅读 · 0 评论 -
Linux与Windows中map类erase方法实现的不同决定使用的不同
1 #include iostream> 2 #include map> 3 #include string> 4 5 using namespace std; 6 7 int main(int argc, char* argv[]) 8 { 9 mapstring, int> MyMap;10 11 MyMap["bujiwu"] =转载 2012-02-06 10:47:04 · 1237 阅读 · 0 评论 -
利用shell脚本对大文件进行分割
有系统运维的过程中,日志文件往往非常大,这样就要求对日志文件进行分割,在此特用shell脚本对文件进行分割 方法一: #!/bin/bash linenum=`wc -l httperr8007.log| awk '{print $1}'` n1=1 file=1 while [ $n1转载 2012-03-14 11:11:53 · 4830 阅读 · 0 评论 -
用gdb调试core dump文件
转载自:http://blog.chinaunix.net/u2/83905/showart_2134570.html在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的。什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down转载 2012-04-21 11:58:36 · 737 阅读 · 0 评论 -
VirtualBox 下的ubuntu如何调整分辨率?
原先的ubuntu的分辨率是800x600,全屏之后就没法看了,所以想调整为1024x768的分辨率。步骤如下:1. 在虚拟机的panel, devices->install guest installation.2. 之后会在虚拟机内显示插入xxx.iso。之后点击安装即可。3. 安装完毕之后重启虚拟机。原创 2012-05-22 12:56:55 · 1096 阅读 · 0 评论 -
shell工具——cut、tr、grep、sort、uniq、re、sed、awk
本篇我们将详细描述sehll中经常用到的一些程序(也称命令、工具)。当然,其中会参插很多前面讲过的。Shell脚本中经常用到的工具有cut、tr、grep、sort、uniq、re、sed、awk等。Re不是一个程序,我们认为他是shell中一个重量级的工具。对这些工具的使用越精通,编写shell脚本解决问题就越容易!re/sed/awk是shell中最难的一部分内容(至少笔者这么认为),转载 2012-06-12 10:44:00 · 3658 阅读 · 0 评论 -
wget 的使用
1. 简单页面的抓取wget的最基本用法wget http://domain.com/path/simple_page.html2. 添加自己的head有些网站或者页面,需要额外的认证,所以需要添加额外的HTTP Header,使用方法:wget --header="MyHeader: head_value" http://domain.com/path/p转载 2012-04-15 21:47:40 · 1997 阅读 · 0 评论 -
How To Enable Apache Modules in Ubuntu
Enabling new Apache Modules in Ubuntu is an easy task once you learn how. On most systems when you want to enable a new Apache Module you just add a LoadModule directive to your httpd.conf but Ubuntu转载 2012-07-04 11:25:48 · 1572 阅读 · 0 评论 -
Linux下多线程查看工具(pstree、ps、pstack)
1. pstreepstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) |-{ad_preprocess}(4553转载 2013-06-23 00:01:08 · 860 阅读 · 0 评论 -
程序分析工具gprof介绍
程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析。程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容。二是以系统优化为目的,通过对程序中关键函数的跟踪或者运行时信息的统计,找到系统性能的瓶颈,从而采取进一步行动对程序进行优化。最后一点,程序分析也有可能用于系统测试和程序调试中。当系统跟踪起来比较复杂,转载 2013-12-30 10:54:15 · 989 阅读 · 0 评论 -
gdb调试-查看STL容器
在GDB进行调试的时候,查看STL容器是个比较痛苦的事情,比如查看vector, map 这些容器,根本看不到里面的数据是什么。现在介绍一个gdb 查看STL容器神器。文件:http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt下载上述文件,按照文件要求吧上述文件存成".gdbinit"文件放到你的根原创 2014-02-27 17:37:32 · 5904 阅读 · 2 评论 -
linux下so动态库一些不为人知的秘密
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/lslinux-vdso.so.1 => (0x00007fff597ff000)libsel转载 2014-02-27 13:16:48 · 12881 阅读 · 1 评论 -
从"read"看系统调用的耗时
1、fread和read有何不同?先看两段代码:fread.cread.c两个文件的功能完全一样,打开同一个名为test.file的文件,并逐字节地读取整个文件。将它们编译后得到的可执行程序fread和read分别在同一台PC(linux系统)上执行,得到的如果如下:发现没有?fread与r转载 2014-03-17 14:54:14 · 4109 阅读 · 0 评论 -
CPU亲和力--affinity
CPU亲合力就是指在Linux系统中能够将一个或多个进程绑定到一个或多个处理器上运行. 一个进程的CPU亲合力掩码决定了该进程将在哪个或哪几个CPU上运行.在一个多处理器系统中,设置CPU亲合力的掩码可能会获得更好的性能. 一个CPU的亲合力掩码用一个cpu_set_t结构体来表示一个CPU集合, 下面的几个宏分别对这个掩码集进行操作: 1. CPU_ZERO() 清空转载 2011-11-20 14:52:18 · 5317 阅读 · 0 评论 -
内联汇编(inline assembler) 的相关资料
内联汇编是指在源代码中直接加入汇编代码,这样在对源代码进行编译之后的汇编代码中就包含有植入的汇编代码,以达到代码优化的目的。有时候程序员自己认为自己编写的汇编代码的性能肯定比编译器生成的汇编代码性能更好,有些自负,但是如果开启编译器的优化选项,其生成的优化后的汇编代码,在原创 2011-10-16 10:43:12 · 797 阅读 · 0 评论 -
linux静态库和共享库
1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程转载 2010-02-28 10:22:00 · 535 阅读 · 0 评论 -
Linux内核配置系统浅析
随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。众所周知,Linu转载 2010-03-07 11:01:00 · 544 阅读 · 0 评论 -
一个系统调用(SCI)的简化流程
SCI Linux 中系统调用的实现会根据不同的架构而有所变化,而且即使在某种给定的体架构上也会不同。例如,早期的 x86 处理器使用了中断机制从用户空间迁移到内核空间中,不过新的 IA-32 处理器则提供了一些指令对这种转换进行优化(使用 sysenter 和 sysexit 指令)。由于存在大量的方法,最终结果也非常复杂,因此本文将着重于接口细节的表层讨论上。更详尽的内容请参看本文转载 2010-03-06 10:21:00 · 998 阅读 · 0 评论 -
Linux内核简介
Linux 内核简介现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。图 2. GNU/Linux 操作系统的基本体系结构 系统调用接口(SCI)的方法实际上,体系结构可能并不像图 2 所示的一样清晰。例如,处理系统调用(从用户空间切换到内核空间)的机制可能在各个转载 2010-03-06 14:16:00 · 882 阅读 · 0 评论 -
linux文件系统体系结构 和 虚拟文件系统(VFS)
图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开、读取、写和关闭)提供用户接口。系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。VFS 是底层文件系统的主要接口。这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能差异很大。有两个转载 2010-03-06 14:23:00 · 2175 阅读 · 0 评论 -
shell中获取本机ip地址
<br />shell中获取本机ip地址<br />方法一:<br />/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"<br />or<br />/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:/([0-9.]/{7,15/}/) .*//1/p'<br /> <br />方法二: <br />local_host="`hostname转载 2010-06-30 14:39:00 · 3535 阅读 · 1 评论 -
linux共享库命名规则
<br />linux有一套规则来命名系统中的每一个共享库, 它规定共享库的文件命名规则必须如下:<br />libname.so.x.y.z<br />最前面使用前缀"lib", 中间是库的名字,后缀是".so", 最后面跟着的是三个数字组成的版本好。<br />x表示主版本号, y表示此版本号, z表示发布版本号。<br />三个版本号含义不同:<br /> <br />1。 主版本号: 表示库的重大升级, 不同主版本号的库之间是不兼容的, 依赖于旧的主版本号的程序要改动相应的部分,<br />并且重新原创 2010-07-07 21:21:00 · 2387 阅读 · 1 评论 -
进程和线程编程
<br />进程和线程编程 <br />目 录<br />进程和线程编程<br />原始管道<br />pipe() <br />dup() <br />dup2() <br />popen()和pclose() <br />命名管道<br />创建FIFO <br />操作FIFO <br />阻塞FIFO <br />消息队列<br />msgget() <br />msgsnd() <br />msgrcv() <br />msgctl() <br />信号量<br />semget() <br />转载 2010-07-27 17:10:00 · 892 阅读 · 0 评论 -
Linux进程间通信总结
<br />下面是IBM developerworks上的关于进程间通信的好文章,拿出来分享:<br />序言:<br />http://www.ibm.com/developerworks/cn/linux/l-ipc/index.html<br />1,管道和命名管道:<br />http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/index.html#listing1<br />2,信号机制:<br />http://www.ibm.com/d转载 2010-08-07 15:44:00 · 678 阅读 · 0 评论 -
Micro kernel和Monolithic kerne-单内核和微内核
<br /><br />1、Kernel是OS的核心,提供了硬件级的抽象。Monolithickernel对底层硬件进行了丰富的抽象;Microkernel只提供了最小的硬件抽象层,此时的OS拥有多个处在用户空间的Server,用来处理每个特定的任务,这些Server之间采用IPC进行通信。<br /> <br />2、Monolithic kernel优点:高效。缺点:各module混和在一起,难于维护。一个module中的bug将可能导致整个系统的崩溃。改进:如今的Monolithic内核支持动态载入m转载 2010-06-22 10:50:00 · 1295 阅读 · 0 评论 -
error while loading shared libraries的解決方法
<br />./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory<br /><br /><br />那就表示系統不知道xxx.so 放在哪個目錄下。<br /><br />這個時候就要在/etc/ld.so.conf中加入xxx.so所在的目錄。<br /><br /> 一般而言,有很多so檔會在/usr/local/lib這個转载 2010-09-16 21:00:00 · 542 阅读 · 0 评论 -
用Diff和Patch工具维护源码
<br />http://www.ibm.com/developerworks/cn/linux/l-diffp/index.html<br />级别: 初级<br />杨沙洲 (pubb@163.net)国防科技大学计算机学院<br />2004 年 3 月 01 日在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具就完全可以完成代码的简单备份和升级工作。<转载 2010-09-08 09:42:00 · 568 阅读 · 0 评论 -
linux shell 对两个文件的处理
<br /> <br />(1)两个文件的交集,并集<br />前提条件:每个文件中不得有重复行<br />1. 取出两个文件的并集(重复的行只保留一份)<br />cat file1 file2 | sort | uniq > file3<br />2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)<br />cat file1 file2 | sort | uniq -d > file3<br />3. 删除交集,留下其他的行<br />cat file1 file2 | sort | uni转载 2010-10-10 15:58:00 · 1879 阅读 · 0 评论 -
[转帖]linux笔试题
<br />一.填空题:<br />1. 在Linux系统中,以 文件 方式访问设备 。<br />2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。<br />3. Linux文件系统中每个文件用 i节点 来标识。<br />4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。<br />5. 链接分为: 硬链接 和 符号链接 。<br />6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。<br />7. 某文件的权限为:d转载 2010-10-18 21:10:00 · 657 阅读 · 0 评论 -
深入理解linux i节点(inode)
<br />对于Unix系列的操作系统,大多都有v节点。但是对于linux来说,只有通用的i节点,却没有v节点。<br />下面来探讨一下,linux下的i节点。<br /><br />--------------------------------------------------------------------------------<br /> linux中,文件查找不是通过文件名称来查找的。实际上是通过i节点来实现文件的查找定位的。我们可以形象的将i节点看做是一个指针fip。当文件存转载 2010-10-18 20:59:00 · 936 阅读 · 2 评论 -
使用gdb调试异常
有时程序中有未捕获的异常会导致程序异常的行为甚至导致程序的直接退出。 这对服务器程序来说是不可接受的。可以使用gdb的catch命令来帮助我们调试异常。使用gdb捕获异常的扔出点(相当于在扔出异常的地方添加断点):catch throw使用gdb捕获线程退出(相当于在线程退出的时候添加断点):catch pthread_exit这样,如果相应的事件发生,转载 2014-04-23 13:42:19 · 8958 阅读 · 0 评论