
linux
文章平均质量分 66
xueli1991
这个作者很懒,什么都没留下…
展开
-
把块存放在页高速缓存中
一、概述 Linux支持的文件系统大多以块的形式组织文件,为了减少对物理块设备的访问,在文件以块的形式调入内存后,使用块高速缓存(buffer_cache)对它们进行管理。每个缓冲区由两部分组成,第一部分称为缓冲区首部,用数据结构buffer_head表示,第二部分是真正的缓冲区内容(即所存储的数据)。由于缓冲区首部不与数据区域相连,数据区域独立存储。因而在缓冲区首部中,有一个指向数据的指转载 2016-06-23 23:06:55 · 472 阅读 · 0 评论 -
在应用程序菜单里添加软件
比如想把Eclipse添加到系统的“应用程序”菜单里,方法如下:sudo gedit /usr/share/applications/Eclipse.desktop//文件名可以随意起然后在里面添加如下内容:[Desktop Entry]Name=EclipseComment=EclipseExec=/home/gcc/work/eclipse/eclipse/原创 2016-07-18 17:38:44 · 319 阅读 · 0 评论 -
chmod命令
chmod----改变一个或多个文件的存取模式(mode)chmod [options] mode files只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以who opcode permission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。原创 2016-07-19 09:39:47 · 2887 阅读 · 0 评论 -
ubuntu 14.04/14.10下安装VMware Workstation 11图文教程
Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程[日期:2015-01-14]来源:Linux公社 作者:GuiltyMan[字体:大 中 小] VMware workstation 是一个可以进行桌面操作的虚拟软件。它可以让我们在一台电脑转载 2016-11-29 16:16:20 · 454 阅读 · 0 评论 -
Linux系统下怎么安装.deb文件?
deb 是 ubuntu 、debian 的格式。rpm 是 redhat 、fedora 、suse 的格式。他们不通用(虽然可以转换一下)。deb是debian发行版的软件包ubuntu是基于debian 发行的 所有可以用.deb是solaris系统下的安装包后缀名。安装方法如下cd 到安装包的目录dpkg -i 安装包名字如果你使用的转载 2016-11-30 10:04:01 · 15690 阅读 · 0 评论 -
卸载linux上的DEB包
首先使用下面的命令查询要卸载的文件名:dkpg -l然后再通过下面的命令卸载:dkpg -r *比如我们要卸载google的chrome浏览器:首先执行dkpg -l:root@lqm:/home/lqm# dpkg -lDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/U转载 2016-11-30 10:53:08 · 940 阅读 · 1 评论 -
VirtualBox上安装Ubuntu 12.04/Ubuntu 14.04
NOTE: 一开始安装的Ubuntu12.04,后来又重新安装了14.04。截图基本使用了安装12.04时的截图,后来安装14.04时又补充了几张。该安装过程对Ubuntu12.04和14.04都是适用的。 1. 选择版本1.1 Ubuntu桌面版与服务器版的区别桌面版与服务器版,只要发布版本号一致,这两者从核心来说也就是相同的,唯一的差别在于它们的预期用途。桌面版转载 2016-11-30 20:48:44 · 725 阅读 · 0 评论 -
linux内核源码目录
2015年9月刚入学,就开始学习有关内核源码的知识,那时候定期上课,定期讨论,定期交作业,中间遇到了很多困难,虽然最后还是没有坚持下来,但是看到这些东西的时候,还是觉得很有感觉。来和大家一起分享。一.源码目录二.系统总体流程:系统从boot开始动作,把内核从启动盘装到正确的位置,进行一些基本的初始化,如检测内存,保护模式相关,建立页目录和内存页表,GDT表,IDT表。然后进入m转载 2017-01-04 20:03:32 · 6675 阅读 · 0 评论 -
bochs调试最常用的指令
这个表格中的指令是目前我们进行bochs调试最常用的指令:Table 1. 部分Bochs调试指令行为指令举例在某物理地址设置断点b addrb 0x30400显示当前所有断点信息info breakinfo break继续执行,直到遇转载 2017-01-04 20:05:00 · 701 阅读 · 0 评论 -
bochs调试FAQ
bochs调试FAQ:1. Q:如何从引导扇区开始设置断点?A: BIOS被载入内存中运行,其引导扇区的地址一般都是在0x7c00,因为在实模式下,逻辑地址和物理地址是一一对应的, 所以我们可以在启动bochs调试的命令行下输入 pb 0x7c00 或者 vb 0:0x7c00就着输入 cbochs就会在0x7c00处停下 2原创 2017-01-04 20:05:55 · 282 阅读 · 0 评论 -
git入门
1. 简介 * 版本控制工具 * 由Linus Tovards开发 * 重要性2. GIT基本用法 * 安装:apt-get install git * 创建:mkdir repo_name cd repo_name git init原创 2017-01-04 20:08:45 · 274 阅读 · 0 评论 -
linux常见的20条命令
1. ls命令ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。?1234567root@tecmint:~# ls Android-Games原创 2017-02-20 11:01:16 · 779 阅读 · 0 评论 -
bash的内置的unix命令
bash内置Unix命令.:执行当前进程环境中的程序。同source。. file:dotUnix命令从文件file中读取命令并执行。: 空操作,返回退出状态0。alias:显示和创建已有Unix命令的别名。bg:把作业放到后台。bind:显示当前关键字与函数的绑定情况,或将关键字与readline函数或宏进行绑定。break:从最内层循环跳出。builtin转载 2017-02-20 11:32:12 · 410 阅读 · 0 评论 -
设置环境变量
Linux下的环境变量分为系统级别和用户级别。系统级别的会影响所有系统用户,而用户级别的只会影响某个单独用户。这种分级别的设置是很好的一种系统架构,不确定windows下是不是也有类似的机制。env显示系统级别环境变量set显示用户级别环境变量set 变量名称,设置用户级别环境变量 set PATH=/usr/local/jre-1.5.6/bin:$PATHuns原创 2016-07-18 17:17:10 · 230 阅读 · 0 评论 -
进程概述和内存分配
进程一个进程的内存布局是什么样的?每个进程所所分配的内存由很多部分组成,通常我们称之为段,一般会有如下段:文本段 包含了进程执行的程序机器语言指令,文本段具有只读属性,以防止进程通过错误指针意外修改自身的指令。初始化数据段包含了显示初始化的全局变量和静态变量,当程序加载到内存时,从可执行文件中读取这些变量的值未初始化数据段包含了未进行显式初始化的全局变量和静态变量,程序启动转载 2016-06-16 17:28:08 · 143127 阅读 · 0 评论 -
内存管理之堆和栈
原创 2016-06-14 陶琛嵘 一、内存关于程序的运行,不得不提到内存方面的内容,那么首先就对一个进程虚拟地址空间的布局用一张图来看清楚这张图基于32位Linux系统,即起始地址为0x08048000,可以看到顺序为只读段(代码段等)、读写段(数据段、bss段等)、堆(向上即高地址扩展)、用于堆扩展的未使用空间、动态库的映射位置(0x4000转载 2016-06-15 09:28:55 · 656 阅读 · 0 评论 -
运行库到底做了些什么?
//这是我今天看到的一篇文章,里面的内容进行了一下补充。1、入口函数与程序初始化main真的是程序的起始吗?我们编写每一个C程序都需要编写main函数,之前也一直都说main函数是程序的开始,但是真的是这样吗?其实程序执行到main函数的第一行时候,很多事情都已经完成,比如全局变量的初始化,比如命令行的参数传递,比如堆和栈的初始化,更比如一些系统I/转载 2016-06-15 10:22:07 · 703 阅读 · 0 评论 -
动态链接
一、动态链接的好处前面说了静态链接的流程,提到了静态链接与动态链接的不同之处以及各自的优势:静态链接的优势在于其优秀的可移植性,但是相对应的其所占空间大小也很大,且还有在对程序的更新、维护方面也有着问题。 动态链接则消除了这方面的问题,即使得空间不再浪费,更新一个程序也变得不再麻烦。浪费内存问题的解决假设有两个程序a和b,如果两个都依赖于Libc.o这个模块,那么当转载 2016-06-15 11:41:07 · 732 阅读 · 0 评论 -
进程的关系
注:结合《UNIX环境高级编程》的第9章一起看进程组的概念每一个进程除了有一个进程ID之外,还属于一个进程组,进程组通常是一个或多个进程的集合。这些进程通常是与一个作业相关的。例如:ps axu|grep bash|wc -l 这是三个进程,他们直接通过管道传递数据,为了是完成一个作业,对于这个整体来说是一个进程组,其中ps进程是进程组的组长进程。进程组也是由一个id来转载 2016-06-15 16:40:01 · 257 阅读 · 0 评论 -
bzero
原型:extern void bzero(void *s, int n);参数说明:s 要置零的数据的起始地址; n 要置零的数据字节个数。用法:#include 功能:置字节字符串s的前n个字节为零且包括‘\0’。说明:bzero无返回值,并且使用string.h头文件,string.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数原创 2016-06-16 16:58:21 · 543 阅读 · 0 评论 -
sizeof
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为转载 2016-06-16 21:47:39 · 259 阅读 · 0 评论 -
calloc&malloc&kmalloc&vmalloc
头文件:#include calloc() 函数用来动态地分配内存空间并初始化为 0,其原型为: void* calloc (size_t num, size_t size);calloc() 在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是0。原创 2016-06-17 11:38:58 · 639 阅读 · 0 评论 -
Mtrace
对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。使用Mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能。1. 在需要跟踪的程序中需要包含原创 2016-06-17 10:29:41 · 2089 阅读 · 0 评论 -
strrchr
strrchr() 函数查找字符在指定字符串中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回 false。与之相对应的是strchr()函数,它查找字符串中首次出现指定字符的位置。语法strrchr(string,char)参数描述string转载 2016-06-16 22:00:48 · 773 阅读 · 0 评论 -
readlink
相关函数: stat, lstat, symlink表头文件: #include 定义函数:int readlink(const char *path, char *buf, size_t bufsiz);函数说明:readlink()会将参数path的符号连接内容到参数buf所指的内存空间,返回的内容不是以NULL作字符串结尾,但会将字符串的字符数返回。若参数bufsiz小于原创 2016-06-16 17:31:54 · 433 阅读 · 0 评论 -
mcheck
文章出处:http://book.chinaitlab.com/linux/777316.html mcheck是Glibc提供函数,声明如下: int mcheck (void (*abortfn) (enum mcheck_status status)) 此函数通知malloc进行一致性检查。它可以检查出内存分配不匹配的情况。 enum转载 2016-06-17 16:10:56 · 2564 阅读 · 0 评论 -
文件系统对页高速缓存的操作
本文从read函数入手,主要讲述从页缓冲,一直到具体的块请求被提交给块设备驱动程序的过程,以下是本文讲述的一张概图,也是对本文的一个概括,可以结合本图,首先由一个从全局上有个清楚的认识,然后再去查看具体的代码,当然本文只是从大体流程上对页缓冲的处理流程进行分析,还有很多小的细节没有搞清楚,后面还需要继续研究。 1.具体文件系统我们知道通用文件系统也就是虚拟文件系转载 2016-06-17 20:24:47 · 846 阅读 · 0 评论 -
执行sudo命令时command not found的解决办法
问题的原因: 在编译sudo包的时候默认开启了- -with-secure-path选项。 方法1: 在/etc/sudoers文件内增加这么一行:Defaults secure_path=”/bin:/usr/bin:/usr/local/bin:…”, 把要用的命令path包括进去。 方法2: 用命令的绝对路径。 方法3: 使用sudo的env选项,像这样sudo en转载 2017-05-31 11:33:19 · 132042 阅读 · 2 评论