
linux学习
文章平均质量分 78
tqyou85
这个作者很懒,什么都没留下…
展开
-
Busybox内置的tftpd, ftpd, telnetd, udhcpd, udhcpc配置
<br />Busybox内置的tftpd, ftpd, telnetd, udhcpd, udhcpc配置<br /><br />Tftpd,ftpd可以由inetd来管理,telnetd理论上也可以由inetd来管理,但是目前开发板上我还没调通,只能telnetd独立运行。<br />1. Tftpd<br />配置步骤:<br />#mkdir /tftp_ftp_dir //创建tftp server的根目录<br />#vi /etc/inetd.conf //配置i原创 2011-03-11 19:03:00 · 11583 阅读 · 0 评论 -
Linux 2.6内核中新的锁机制--RCU
<br />本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用。<br />一、 引言<br />众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度转载 2010-07-28 21:43:00 · 398 阅读 · 0 评论 -
原子操作atomic_t
原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。 原子操作主要用于实现资源计数,很多引用计数(refcnt)就是通过原子操作实现的。原子类型定义如下:typedef struc转载 2010-07-27 10:10:00 · 1433 阅读 · 0 评论 -
Linux下如何查看CPU信息, 包括位数和多核信息
Linux下如何查看CPU信息, 包括位数和多核信息# uname -aLinux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux(查看当前操作系统内核信息)# cat /etc/issue | grep LinuxRed转载 2010-03-26 09:46:00 · 843 阅读 · 0 评论 -
使用rsync命令同步数据
考虑到服务器数据的安全,我考虑增加一台备份服务器,通过数据同步,达到较好的冗余。 linux下有非常好的一个命令rsync可以实现差异备份,下面就说说它的用法:▲合适系统:红旗DC 4.1 or 5.0或其他linux、FreeBSD系统▲测试环境:红旗DC 5.0一、通过rsh或ssh命令 在没有建立rsync服务器的情况下,我们可以利用rsync命令直接进转载 2009-09-24 15:19:00 · 384 阅读 · 0 评论 -
Linux系统下ifconfig命令使用及结果分析
Linux下网卡命名规律:eth0,eth1。第一块,第二块以太网卡。lo为环回接口,它的IP地址固定为127.0.0.1,掩码8位。它代表你的机器本身。 1、ifconfig是查看网卡的信息。 ifconfig [Interface] Interface是可选项,如果不加此项,则显示系统中所有网卡的信息。如果添加此选项则显示所指定的网卡信转载 2009-06-09 11:08:00 · 388 阅读 · 0 评论 -
RIP源码分析
转载地址:http://blog.chinaunix.net/u3/94761/showart_1905542.html Int main (int argc, char **argv){ char *p; int daemon_mode = 0; char *progname; struct转载 2009-08-11 11:19:00 · 1534 阅读 · 0 评论 -
quagga安装和使用
测试环境-Fedora7.01. 下载源码quagga-0.99.10.tar.gz 2. 解压缩 tar xzvf quagga-0.99.10.tar.gz3. 配置cd quagga-0.99.10 ./configure --prefix =/usr --sysconfdir=/etc/转载 2009-08-10 09:57:00 · 6142 阅读 · 0 评论 -
深入分析 Linux 内核链表
抽象是软件设计中一项基本技术,如上所述,在众多数据结构中,选取双向链表作为基本数据结构,这就是一种提取和抽象。1. 简约而又不简单的链表定义于双向链表而言,内核中定义了如下简单结构: struct list_head { struct list_head *next, *prev; };转载 2009-05-08 15:38:00 · 347 阅读 · 0 评论 -
链表API之应用
如前文所述,Linux内核中的代码,经过稍加改造后,可以在用户态下使用。 linclude/linux/list.h 中的函数和宏,是一组精心设计的API,有比较完整的注释和清晰的思路。在用户态下使用list.h,查看改造后的list.h1. 举例 下面是用户态下的例子,用以创建、增加、删除和遍历一个双向链表。#include #include #inclu转载 2009-05-08 15:43:00 · 441 阅读 · 0 评论 -
Linux TCP/IP协议栈笔记 路由缓存
<br />转载:http://blog.163.com/s_xli1/blog/static/783579622008416091770/<br /> <br />内核版本:2.6.12<br /> <br /> <br />1、什么是路由缓存<br />当数据包进入网络层后,需要做的第一件事情,就是进行路由查找,也即根据数据包的目标地址,查找需要转发的目的网关,当然,实际情况比这个要复杂,查找条件并不仅限于目的地址。<br /><br />为了提高路由查找的效率,路由子系统引入了路由缓存的概转载 2010-07-28 21:47:00 · 1624 阅读 · 0 评论 -
linux内核likely() 与 unlikely()
<br />内核中的 likely() 与 unlikely()<br />在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? <br />首先要明确:<br /> if(likely(value)) 等价于 if(value)<br /> if(unlikely(value)) 也等价于 if(value)<br />也就是说 likely() 和 unlikely() 从阅转载 2010-08-01 13:16:00 · 516 阅读 · 0 评论 -
Linux中EXPORT_SYMBOL的用法
<br />EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。<br />您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。<br /><br /><br />Linux symbol export method:<br /><br />[1] If we want export the symbol in a module,转载 2010-08-30 17:11:00 · 4881 阅读 · 0 评论 -
使用busybox定制自己的应用程序
使用busybox定制自己的应用程序1. Busybox配置首先在网上下载一个稳定的busybox版本,我用的版本是busybox-1.18.2,然后解压到工作目录。Busybox的配置方法和标准的linux内核的配置方法非常类似,我们只要切换到busybox的根目录下,使用make menuconfig命令就可以轻松定制出适合特定用途的一组应用程序。#make menuconfig#make#make install安装后,会发现busybox的bin目录下只有一个busybox原创 2011-04-06 19:02:00 · 2589 阅读 · 0 评论 -
UNIX 高手的10 个习惯
采用 10 个能够提高您的 UNIX®命令行效率的好习惯——并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术,这些技术非常好,但是通常被忽略。了解常见错误和克服它们的方法,以便您能够确切了解为何值得采用这些 UNIX 习惯。 引言当您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的转载 2010-10-13 14:30:00 · 643 阅读 · 0 评论 -
linux下gdb单步调试(中)(转摘)
<br />一、设置断点( BreakPoint )<br /><br />我们用 break 命令来设置断点。正面有几点设置断点的方法:<br /><br />break <function><br />在进入指定函数时停住。 C++ 中可以使用 class::function 或 function(type,type) 格式来指定函数名。<br /><br />break <linenum><br />在指定行号停住。<br /><br />break +offset<br />转载 2010-10-08 17:14:00 · 866 阅读 · 0 评论 -
linux下gdb单步调试(上)转载
<br />用 GDB 调试程序<br /><br />GDB 概述<br />————<br /><br />GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。<br /><br />一般来说, GDB 主要帮忙你转载 2010-10-08 17:12:00 · 502 阅读 · 0 评论 -
linux下gdb单步调试(下)(转摘)
四、源代码的内存你可以使用 info line 命令来查看源代码在内存中的地址。 info line 后面可以跟 “ 行号 ” , “ 函数名 ” , “ 文件名 : 行号 ” , “ 文件名 : 函数名 ” ,这个命令会打印出所指定的源码在运行时的内存地址,如:(gdb) info line tst.c:funcLine 5 of "tst.c" starts at address 0x8048456 and ends at 0x804845d .还有一个命令( disass转载 2010-10-08 17:22:00 · 639 阅读 · 0 评论 -
linux ln命令详解
<br />ln是linux中一个非常重要命令。它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: <br /><br />ln -s 源文件 目标文件 -s 是 symbolic的意思。 <br />例:ln -s /lib/lsb /usr/lj<br />即:在usr目录下建立指向/lib/lsb目录的lj文件。<br /><br />当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必转载 2010-09-27 09:16:00 · 612 阅读 · 0 评论 -
Linux内核模块参数权限
<br />在进行linux内核模块编程时,常常需要给模块传递参数,其作用是从使用的设备号到驱动应当任何操作的几个方面. 例如, SCSI 适配器的驱动常常有选项控制标记命令队列的使用,<br />IDE 驱动允许用户控制 DMA 操作. 如果你的驱动控制老的硬件, 还需要被明确告知哪里去找硬件的 I/O 端口或者 I/O 内存地址.<br />内核通过在加载驱动的模块时指定可变参数的值, 支持这些要求.<br /> 参数常常被声明为一个静态全局变量,如static int num=转载 2010-09-09 14:38:00 · 1007 阅读 · 0 评论 -
kmalloc, vmalloc分配的内存结构
<br />kmalloc, vmalloc分配的内存结构<br /><br />对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。<br /> 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。<br /> 内核空间中,从3G到vmallo转载 2010-09-13 11:36:00 · 544 阅读 · 0 评论 -
__read_mostly变量
<br />__read_mostly原语将定义为存放在.data.read_mostly段中<br /> include/asm/cache.h<br />#define __read_mostly __attribute__((__section__(".data.read_mostly")))<br /><br /> 由此可见,我们可以将经常需要被读取的数据定义为 __read_mostly类型, 这样Linux内核被加载时,该数据将自动被存放到Cache中,以提高整个系统的执行效率.<br转载 2010-08-30 18:19:00 · 5478 阅读 · 0 评论 -
system函数讨论
三个程序:test1.c test2.c test3.c gcc test1.c –o test1 在test2.c中调用system(“./test1”);gcc test2.c –o test2在test2.c中调用popen(“./test2”,”r”);gcc test3.c –o test3./test3发现test2.cz中的syst原创 2009-04-04 13:40:00 · 730 阅读 · 0 评论 -
wait,waitpid详解
#include /* 提供类型pid_t的定义 */#include pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。转载 2009-04-01 11:25:00 · 1537 阅读 · 1 评论 -
Linux内核编译全过程详解(kernel2.6.7)
我原来的系统是redhat9.0,内核2.4.20-8,编译的内核2.6.7,仅供参考. 共分为四部分:编译前准备->编译配置->编译过程->运行内核的常见问题 一 编译前准备 1)下载一份内核源代码,我下的是linux-2.6.7.tar.bz2,你可在如下地址下载它或者是更新的版本. http://kernel.org/pub/linux/kernel/v2.6/ 2) 下载转载 2008-11-14 10:05:00 · 372 阅读 · 0 评论 -
LINUX 命令集合
更改telnet登录慢的问题: cd /etc vi resolv.conf 将里面内容清空 更改root用户不能直接远程登录问题: cd /etc cd pam.d vi login 注释掉这行 #auth required pam_securetty.so //该行注释掉 挂接USB移动硬盘 将移动硬盘挂上. #df 查看Linux下硬盘盘符 mount /dev/sd转载 2008-11-13 17:15:00 · 492 阅读 · 0 评论 -
linux内核编译过程
首先,您要确定您有一台装有Linux的系统,编译内核可以在本机上直接对本机内核进行编译,也可以从网上下载内核在其基础上进行编译.我们这里详细讲一下升级内核的方法,您可以从www.kernel.org下载到最新的Kernel版本,我们这里以redHat9为例(其他版本其实也都一样,只是在make menuconfig中有点不同),详细讲一下内核编译的步骤 : 确认您是以root 用户转载 2008-11-13 17:25:00 · 276 阅读 · 0 评论 -
linux系统命令(网络通信)
转载连接:http://linux.chinaunix.net/bbs/viewthread.php?tid=1044310&pid=6813630&page=1&extra=page%3D1#pid6813630功能说明:与其他用户交谈。语 法:ytalk [-isxY][-h][用户名称...]补充说明:通过ytalk指令,你可以和其他用户线上交谈,如果想和其他主机的用户交谈,在用户转载 2008-11-11 16:17:00 · 302 阅读 · 0 评论 -
使用 /proc 文件系统来访问 Linux 内核的内容
/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux®内核空间和用户空间之间进行通信。在 /proc文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。本文对/proc 虚拟文件系统进行了介绍,并展示了它的用法。最初开发 /proc 文件系统是为了提供有关系统中进程转载 2008-12-30 13:08:00 · 274 阅读 · 0 评论 -
linux常见命令的列表
linux常见命令的列表命令 描述 $GusVpFs#I^Y4_ • apropos word 显示和word相关的命令。 参见线程安全 7t+EM(e)Y which command 显示命令的完整路径名 ,lm^jP"/!q time command 计算命令运行的时间 qh.|cV)BTA]Q • time cat 开始转载 2008-11-06 14:00:00 · 716 阅读 · 0 评论 -
linux 命令学习
1.更改telnet登录慢的问题:cd /etcvi resolv.conf将里面内容清空2.更改root用户不能直接远程登录问题:cd /etccd pam.dvi login注释掉这行#auth required pam_securetty.so //该行注释掉3.挂接USB移动硬盘将移动硬盘挂上. #df 查看Linux下硬盘盘符mount /dev/sda1 /mn转载 2008-10-27 11:26:00 · 338 阅读 · 0 评论 -
[转] 发现一个好东西----Linux平台下常用工具描述:/var/cache/man/whatis [D开头]
D开头:d2i_509_CRL_fp [d2i_X509_CRL] (3ssl) - PKCS#10 certificate request functionsd2i_ASN1_OBJECT (3ssl) - ASN1 OBJECT IDENTIFIER functionsd2i_DHparams (3ssl) - PKCS#3 DH parameter funct转载 2008-10-22 13:19:00 · 1924 阅读 · 0 评论 -
DHCP 服务器简单配置
1.下载安装包download dhcp-3.0.3.tar.gz (http://www.bind9.net/download-dhcp)#tar zxvf dhcp*#cd dhcp-3.0.3#./configure#make#make install2.配置#vi /etc/dhcpd.conf(典型配置)//增加以下内容ddns-update-st转载 2008-10-21 12:34:00 · 1002 阅读 · 0 评论 -
ifconfig
[root@localhost ~]# ifconfig eth0 down [root@localhost ~]# ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 [root@localhost ~]# ifconfig eth0 up [root@localhost ~]# ifcon转载 2008-11-14 13:49:00 · 850 阅读 · 0 评论 -
Linux系统启动过程详解
1)BIOS自检2)启动Grub/Lilo3)加载内核4)执行init进程5)通过/etc/inittab文件进行初始化6)登陆Linux1)BIOS自检 a)POST(Power On Self Test),对硬件进行检测 计算机在通电后首先由BIOS进行自检,即所谓的POST(Power On Self Test),对硬件进行检测 依据BIOS内设置的引导顺序从硬盘、软盘或CDROM转载 2008-11-20 13:56:00 · 413 阅读 · 0 评论 -
VMware下升级linux内核篇
一.由于linux在教育网下不借助任何加速工具,上网真叫一个慢,所以想在linux下与Windows共享文件夹,来使用先前下好的一些东东!要做到这点,你需要以下几步: 1. mount /dev/cdrom /mnt/cdrom 2. VM菜单有一个install vm tools进行安装 3. 之后/mnt/cdrom里面就会有两转载 2009-01-20 11:17:00 · 591 阅读 · 0 评论 -
编写Linux系统下Daemon程序的方法步骤
一、引言 Daemon程序是一直运行的服务端程序,又称为守护进程。本文介绍了在Linux下编写Daemon程序的步骤,并给出了例子程序。 二、Daemon程序简介 Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我转载 2009-04-02 10:32:00 · 388 阅读 · 0 评论 -
Linux系统进程控制编程(六)——wait和waitpid函数
zieckey (http://zieckey.cublog.cn) wait(等待子进程中断或结束)表头文件 #include #include定义函数 pid_t wait (int * status);函数说明 wait()会暂时停止目前进程的执行,直到有信号来到或子进程结 束。如果在调用 wait()时子进程已经结束,则 wait()会立即返转载 2009-03-31 15:56:00 · 504 阅读 · 0 评论 -
popen函数调用
摘要:本文介绍了popen函数的使用方法和行为机理,并给出实际的例子来辅助说明了popen函数的使用方法。文件中还介绍了几个文件操作的函数,如fopen,fread,fwrite等 作者:zieckey (http://zieckey.cublog.cn) All Rights Reserved!popen使用FIFO管道执行外部程序。#include FILE *popen(const转载 2009-03-30 11:16:00 · 2097 阅读 · 1 评论 -
vi中高级替换
将所有出现logInfo的行注释掉::g#logInfo#s#^#//#g删除文件中所有空行::g/^ *$/d所有出现foobar的行,然后替换bar为 baz:g/foobar/s/bar/baz/gvi基本的字符串替换如下:":%s/oldstring/newstring/g" 这个是在全文替换oldstring为newstri转载 2009-02-27 14:54:00 · 370 阅读 · 0 评论