文档库 最新最全的文档下载
当前位置:文档库 › 自己整理的linux内存管理子系统

自己整理的linux内存管理子系统

自己整理的linux内存管理子系统
自己整理的linux内存管理子系统

4-4 linux内存管理子系统

4-4-1 linux内存管理(参考课件)

物理地址:cpu地址总线上寻址物理内存的地址信号,是地址变换的最终结果

逻辑地址:程序代码经过编译后,出现在汇编程序中的地址(程序设计时使用的地址)线性地址:又名虚拟地址,32位cpu架构下4G地址空间

CPU要将一个逻辑地址转换为物理地址,需要两步:

1、首先CPU利用段式内存管理单元,将逻辑地址转换成线性地址;

2、再利用页式内存管理单元,把线性地址最终转换为物理地址

相关公式:

逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)(通用的)

16位CPU:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)

线性地址=段寄存器的值×16+逻辑地址的偏移部分

物理地址=线性地址(没有页式管理)

32位CPU:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)

线性地址=段寄存器的值+逻辑地址的偏移部分

物理地址<——>线性地址(mapping转换)

ARM32位:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)

逻辑地址=段内偏移量(段基地址为0)

线性地址=逻辑地址=段内偏移量(32位不用乘以32)

物理地址<——>线性地址(mapping转换)

************************!!以下都是x86模式下!!********************************* 段式与页式存储管理的比较如下表所示。

段式

页式

分段由用户设计划分,每段对应一个相应的的程序模块,有完整的逻辑意义。分页用户看不见,由操作系统为内存管理划分。

段面是信息的逻辑单位

页面是信息的物理单位

便于段的共享,执行时按需动态链接装入。

页一般不能共享

段长不等,可动态增长,有利于新数据增长。

页面大小相同,位置不能动态增长。

二维地址空间:段名、段中地址;段号、段内单元号

一维地址空间

管理形式上象页式,但概念不同

往往需要多次缺页中断才能把所需信息完整地调入内存

实现页(段)的共享是指某些作业的逻辑页号(段号)对应同一物理页号(内存中该段的起始地址)。页(段)的保护往往需要对共享的页面(段)加上某种访问权限的限制,如不能修改等;或设置地址越界检查,对于页内地址(段内地址)大于页长(段长)的存取,产生保护中断。

一、段式管理

1.1、16位CPU:(没有页式管理)

1.1.1、段式管理的由来:

16位CPU内部有20位地址总线,可寻址2的20次方即1M的内存空间,但16位CPU 只有16位的寄存器,因此只能访问2的16次方即64K。因此就采用了内存分段的管理模式,在CPU内部加入了段寄存器,这样1M被分成若干个逻辑段,每个逻辑段的要求如下:

1、逻辑段的起始地址(段地址)必须是16的整数倍,即最后4个二进制位须全是0 (因此不必保存)。

2、逻辑段的最大容量为64K。

段寄存器是为了对内存进行分段管理而增加的,16位CPU有4个段寄存器,程序可同时访问4个不同含义的段。

1、CS+IP:用于代码段的访问,CS指向存放程序的段基地址,IP指向下条要执行的执行在CS端的偏移量,用这2个寄存器就可以得到一个内存物理地址,该地址存放着一条要执行的指令。

2、SS+SP:用于堆栈段的访问,SS指向堆栈段的基地址,SP指向栈顶了,可以通过SS和SP两个寄存器直接访问栈顶单元的内存物理地址。

3、DS+BX:用于数据段的访问。DS中的值左移4位得到数据段起始地址,再加上BX中的偏移量,得到一个存储单元的物理地址。

4、ES+BX:用于附加段的访问。ES中的值左移4位得到附加段起始地址,再加上BX中的偏移量,得到一个存储单元的物理地址。

三、32位CPU

2种工作模式:实模式和保护模式

1、实模式下,32位内存管理和16位CPU是一致的。

2、段基地址长达32位,每个段的最大容量4G,段寄存器的值是段地址的“选择器”,用该选择器从内存中得到一个32位的段地址,存储器单元的物理地址就是该段地址加上段内偏移量。得到线性地址空间。

从管理和效率的角度出发,线性地址被分为固定长度的组,成为页,例如32位机器,线性地址最大可为4G,如果用4KB为一个页来划分,这样整个线性地址就被划分为2的20次方个页。

线性地址通过映射关系得到物理地址。

四、linux段管理

所有段的基地址为0,每个段的逻辑地址空间范围为0~4G,因为每个段的基地址为0,因此,逻辑地址到线性地址映射不变,在Linux中所提到的逻辑地址和线性地址指的也就是同一地址。看来,linux巧妙的把段机制给绕过去了,完全利用了分页机制。

linux2.6.29采用四级页管理架构。

1.1.2、物理地址的形成方式:

段地址:将段寄存器中的数值左移4位补4个0(乘以16),得到实际的段地址。

段偏移:在段偏移寄存器中。

1)逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)

2)由逻辑地址得到物理地址的公式为:(因为没有页式管理,所以这一步就得到了物理地址)物理地址PA=段寄存器的值×16+逻辑地址的偏移部分(注意!!)(段与段可能会重叠)

按段式管理能访问2的32次方共4GB 的空间(2的16次方个段,每个段可以为2的16次方byte的大小),但是只有20位地址总线,因此只能访问1M的内存。

1.2、32位CPU:

1)实模式:

与16位时是一样的

段寄存器的值×16就是段地址

2)保护模式:

段寄存器的值是一个选择器,间接指出一个32位的段地址

段基地址长达32位,每个段的最大容量可达4G,段寄存器的值是段地址的“选择器”(segment selector),用该“选择器”从内存(segment descriptor)中得到一个32位的段地址,存储单元的线性地址就是段地址加上段内偏移量,这与32位CPU的物理地址的计算方式完全不同。

!!!线性地址=段基地址+段内偏移量/逻辑地址(段选择器指向的内存中存储的基地址+段偏移寄存器)!!! 这里不用乘以16或者32,因为段基址寄存器可以完全存下段地址。

32位CPU得到线性地址后,再经过页式管理就能得到物理地址

二、页式管理

2.1页:线性地址被分为固定长度的组,称为页。例如32位的机器,每页4KB,可划为2的20次方个页(划分虚拟单元),32位机器的线性地址空间为4G。

2.2物理页:也称为页框、页桢;分页单元把所有的物理内存也划分为固定长度的管理单位(划分实在的单元),它的长度一般与线性地址页是相同的。

二者的区别:页划分的是线性地址,物理页划分的是实际的物理地址

二者的联系:1、页的长度一般相同,2、通过mapping转换,存在映射关系。

通过分页管理模型,由线性地址得到物理地址

1、分页单元中,页目录的地址存放在CPU的cr3寄存器中,是进行地址转换的开始点。

2、每个进程,都有其独立的虚拟地址空间,运行一个进程,首先要将它的页目录地址放到cr3寄存器中,将其他进程的页目录地址保存下来。

3、每个32位的线性地址被划分为三部分:页目录索引(10位);页表索引(10位);偏移(12位)

(mapping映射关系由下图反映)

上图中页的大小为2的12次方,即4K。两级分页模型(页不算在内)

******************************!!以上都是x86模式!!*********** *******************

Linux内存管理

Linux有限度地使用了Intel的段式管理机制,而完全采用了页式管理机制。(也可以说没有采用段式管理)

所有段的基地址全部为零(那么所有段都重合,相当于只有一个段)

又因为"线性地址=段基地址+段内偏移量/逻辑地址偏移部分",

所以"线性地址=逻辑地址"。

在linux系统中,逻辑地址=线性地址=虚拟地址

物理地址<——>线性地址(mapping转换)

linux页式管理

linux2.6.29内核采用了四级页式管理架构,来兼容二级、三级管理架构的CPU。

页全局目录、页上级目录、页中间目录、页表(四级时,线性地址为64位)

4-4-2进程地址空间(参考课件)

linux操作系统采用虚拟内存管理技术,使得每个进程的地址空间都是独立的。该空间大小是3G,用户看到的都是虚拟地址,无法看到实际的物理地址。

虚拟内存管理的优点:1、保护操作系统,

2、用户程序可以使用比实际物理内存更大的地址空间。

linux将4G的虚拟地址空间划分为用户空间和内核空间。

用户空间:0~0xbfffffff(0~3G):用户进程通常情况下只能访问用户空间。

内核空间:0xc0000000~0xffffffff(3G-4G)

用户空间对应进程,所以每当进程切换,用户空间就会跟着变化。每个进程的地址空间都是独立的。每个进程的页目录、页表不一样,因此通过页式转换就可以得到不同的物理地址。例如:

同一个用户程序运行多次,产生多个进程,每个进程访问的虚拟地址(逻辑地址、线性地址)都是一样的,但是每个进程都有一套独立的页目录、页表,因此得到的实际物理地址是不同的。每个进程的页目录和页表就可以理解为进程独立的用户空间。

Fork(),execve(),malloc()等进程相关操作分配的内存,都是虚拟地址。只有当进程去访问新获取的虚拟地址时,才会由“请页机制”去分配实际的物理地址。

实际的物理内存只有当进程真的去访问新获取的虚拟地址时,才会由“请页机制”产生

“缺页”异常,从而进入分配实际页框的程序。该异常是虚拟内存机制赖以生存的基本保证——它会告诉内核去为进程分配物理页,并建立对应的页表,这之后虚拟地址才实实在在地映射到了物理地址上。

动态分配——Linux内核中,动态分配内存使用函数kmalloc()

头文件:#include

原型:void *kmalloc(size_t size,int flags) ——kfree,适用于分配小于128KB的内存

功能:分配实际的物理页框,虽然返回的是虚拟地址,但已经有对应的物理页了。

参数:Flags取值为:

1、GFP_KERNEL,分配实际的内存,分配不到时睡眠。返回虚拟地址,但对应有实

际的物理单元。(16M-896M)

2、GFP_ATOMIC,用来在进程上下文之外的代码(包括中断处理)中分配内存,

从不睡眠。

3、__GFP_DMA,要求分配能够DMA的内存(物理地址在16M以下的页桢)

4、__GFP_HIGHMEM,分配的内存位于高端内存。(896M以上)

当用完这些页,需要使用下列函数之一来释放它们:

◎kfree函数

按页分配

◎get_zeroed_page(unsigned int flags)——free_page

返回指向新页面的指针,并将页面清零。

◎__get_free_page(unsigned int flags)——free_page

和get_ zeroed _page类似,但不清零页面。

◎__get_free_pages(unsigned int flags,unsigned int order)——free_pages

分配若干的连续的页面,返回指向该内存区域的指针,但也不清零这段内存区域。

当用完这些页,需要使用下列函数之一来释放它们:

◎void free_page(unsigned long addr)

◎void free_pages(unsigned long addr,unsigned long order)

如果释放的页面和先前分配的页面数目不等,会导致系统错误。

4-4-3内核地址空间(参考课件)

内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核映射的这一套页目录、页表是固定不变的。内核空间:3G-4G。

高端内存:物理内存896M以上的内存。

1、直接内存映射区:线性地址=3G+物理地址。从3G开始,最大896M的线性地址区间,我们称作直接内存映射区,这是因为该区域的线性地址和物理地址之间存在线性转换关系。

2、动态内存映射区:最小120M。由内核函数vmalloc()来分配。线性空间连续,物理空间不一定连续。分配一段虚拟地址,仅仅是一个地址,并不对应实际的物理地址。分配的虚拟地址在动态内存映射区,但可能处于低端内存,也可能处于高端内存(因为直接映射区最大为896M)。

3、永久内存映射区:4M。(PKMAP)896M以上的高端内存,可以使用该区域来访问。访问方法:

1)使用alloc_page(__GFP_HIGHMEM)分配高端内存页(得到物理页)

2)使用kmap函数将分配到的高端内存映射到该区域。(得到线性地址)

4、固定内存映射区:4M。每个地址项都服务于特定的用途,如ACPI_BASE等。映射关系做好了,不能改变。

4-4-4内核链表(参考课件)

链表数据结构:一般包含两个域:数据域和指针域。

链表数据结构的定义:

struct list_head

{

struct list_head *next,*prev;

}

内核链表具备双链表功能,通常它都组织成双向循环链表,在[include/linux/list.h]中。

传统链表和linux链表的比较:

1、传统链表:单向链表,指针指向下一节点,指针为下一节点数据类型的指针。

缺点,节点类型变化,则指针类型也要变化,不通用。

2、linux链表:双向循环链表,指针类型固定为struct list_head,链表头也为struct list_head

类型,但是不含数据。通用。

链表操作:

1、初始化链表头

INIT_LIST_HEAD(list_head *head)

2、插入节点

list_add(struct list_head *new,struct list_head *head):插入的节点位于head之后。

list_add_tail(struct list_head *new,struct list_head *head):插入的节点位于链表尾。

3、删除节点

list_del(struct list_head *entry):entry为要删除的节点。

4、提取数据结构

list_entry(ptr,type,member)

根据已知的数据结构中的节点指针ptr,找出数据结构和数据。

ptr:指向本节点struct list_head结构的指针

type:要提取的数据的类型(包含struct list_head结构和数据)

member:struct list_head结构在整个数据结构中的成员名

返回值:指向整个数据结构的指针。

例如:list_entry(aup,struct autofs,list)

5、遍历链表——list_for_each和list_for_each_safe

list_for_each(struct list_head *pos,struct list_head *head):实际上是一个循环,是一个宏。

head:指定要遍历哪一个链表;

pos:获取值,每一次遍历时指向不同的节点的list_head,第一次指向第一个节点。

例如:

struct list_head *entry;

struct list_head cs46xx_devs;//链表头

srtuct cs_card card;

list_for_each(entry,&cs46xx_devs)

{

card = list_entry(entry,srtuct cs_card,list); //寻找srtuct cs_card类型的结构

if(card->dev_midi = = minor) //利用srtuct cs_card类型结构的指针再访问里面的数据break;

}

编译在arm平台运行的内核模块时,makefile的编写:

ifneq ($(KERNELRELEASE),)

obj-m := myhello.o //编译多个内核模块时直接在后面加

myhello-objs := file1.o file2.o file3.o

else

KDIR := /lib/modules/2.6.18-53.el5/build //指定内核模块所依赖的内核源代码(运行环境)all:

make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-

//其他都一样,就这里不一样

clean:

rm -f *.ko *.o *.mod.o *.mod.c *.symvers

endif

4-4-5内核定时器(参考课件)

时钟中断:由系统的定时硬件以周期性的时间间隔产生,这个时间间隔(即频率)由内核根据HZ来确定,HZ是一个与体系结构无关的常数,默认值为1000。

Jiffies:(unsigned long)每当时钟中断发生时,全局变量jiffies就加1。

(jiffies记录了linux系统自启动发生时钟中断的次数),可以用来计算时间间隔。例如:

unsigned long j=jiffies + jit_delay*HZ;

while(jiffies

{

/*do nothing*/ //延时jit_delay秒

}

内核定时器的作用:

用于控制某个函数(定时器处理函数)在未来的某个特定的时间执行。

内核定时器注册的处理函数只执行一次,

通过使用内核函数mod_timer修改超时时间,可以实现多次使用内核定时器。

struct timer_list结构:

一个struct timer_list结构只描述一个内核定时器(内核定时器被组织成双向链表)。

struct timer_list

{

struct list_head entry; //内核使用,用来串连定时器链表。

unsigned long expires; //超时的jiffies的值,指定定时器在何时超时

void (*function)(unsigned long); //超时处理函数

unsigned long data; //超时处理函数的参数

struct tevc_base *base; //内核使用

}

初始化定时器分为两个步骤:1、内核使用的两个参数不用管,2、其他三个参数需要在,初始化定时器队列结构之后,启动定时器之前,自己去初始化的。

操作定时器有如下函数:

1、void init_timer(struct timer_list *timer);

初始化定时器队列结构

2、void add_timer(struct timer_list *timer);

启动定时器

3、int del_timer(struct timer_list *timer);

在定时器超时之前将它删除。当定时器超时后,系统会自动地将它删除。

linux常用命令

新手刚刚接触Linux的时候可能处处感到不便,不过没有关系,接触新的事物都有这样的一个过程,在你用过Linux一段时间后,你就会逐渐了解Linux其实和Windows一样容易掌握。 由于操作和使用环境的陌生,如果要完全熟悉Linux的应用我们首先要解决的问题就是对Linux常用命令的熟练掌握。本章我们就来介绍Linux的常用基本命令。 Linux常用命令 1.Linux命令基础 Linux区分大小写。在命令行(shell)中,可以使用TAB键来自动补全命令。即可以输入命令的前几个字母,然后按TAB键,系统自动补全命令,若不止一个,则显示出所有和输入字母相匹配的命令。 按TAB键时,如果系统只找到一个和输入相匹配的目录或文件,则自动补全;若没有匹配的内容或有多个相匹配的名字,系统将发出警鸣声,再按一下TAB键将列出所有相匹配的内容(如果有的话)以供用户选择。 首先启动Linux。启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中―系统管理员‖拥有最高权限。 在启动Linux后屏幕出现如下界面显示:Red Hat Linux release 9 (Shrike) Kernel 2.4.20.8 on an i686

login: 输入:root(管理员名)后,计算机显示输口令(password:),输入你的口令即可。当计算机出现一个―#‖提示符时,表明你登录成功! 屏幕显示Linux提示符:[root@localhost root]#_ 这里需要说明的是―Red Hat Linux release 9 (Shrike)‖表示当前使用的操作系统的名称及版本。―2.4.20.8‖表示Linux操作系统的核心版本编号。―i686‖表示该台电脑使用的CPU的等级。 下面我们来介绍常用基本命令 一,注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout

linux内核之内存管理

Linux内核之内存管理 作者:harvey wang 邮箱:harvey.perfect@https://www.wendangku.net/doc/4d8720031.html, 新浪博客地址:https://www.wendangku.net/doc/4d8720031.html,/harveyperfect,有关于减肥和学习英语相关的博文,欢迎交流 把linux内存管理分为下面四个层面 (一)硬件辅助的虚实地址转换 (二)内核管理的内存相关 (三)单个进程的内存管理 (四)malloc软件 (一)处理器硬件辅助的虚实地址转换(以x86为例) 在x86中虚实地址转换分为段式转换和页转换。段转换过程是由逻辑地址(或称为虚拟地址)转换为线性地址;页转换过程则是将线性地址转换为物理地址。段转换示意图如下 X86支持两种段,gdt和ldt(全局描述段表和局部描述符段表),在linux中只使用了4个全局描述符表,内核空间和用户空间分别两个gdt,分别对应各自的代码段和数据段。也可以认为在linux中变相地disable了x86的段式转换功能。 页转换示意图如下

在linux中x86 的cr3寄存器(页表基地址寄存器)保存在进程的上下文中,在进程切换时会保存或回复该寄存器的内容,这样每个进程都有自己的转换页表,从而保证了每个进程有自己的虚拟空间。 (二)内核管理的内存相关 从几个概念展开内存管理:node、zone、buddy、slab 1、Node SGI Altix3000系统的两个结点 如上图,NUMA系统的结点通常是由一组CPU(如,SGI Altix 3000是2个Itanium2 CPU)和本地内存组成。由于每个结点都有自己的本地内存,因此全系统的内存在物理上是分布的,每个结点访问本地内存和访问其它结点的远地内存的延迟是不同的,为了优化对NUMA 系统的支持,引进了Node 来将NUMA 物理内存进行划分为不同的Node。而操作系统也必须能感知硬件的拓扑结构,优化系统的访存。

Linux常用命令大全.pdf

Linux常用命令学习 1、ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文件,包含以.开始的隐藏文件 ls -A 列出除.及..的其它文件 ls -r 反序排列 ls -t 以文件修改时间排序 ls -S 以文件大小排序 ls -h 以易读大小显示 ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来 实例: (1) 按易读方式按时间反序排序,并显示文件详细信息 ls -lhrt (2) 按大小反序显示文件详细信息 ls -lrS (3)列出当前目录中所有以“t”开头的目录的详细内容 ls -l t* (4) 列出文件绝对路径(不包含隐藏文件) ls | sed "s:^:`pwd`/:" (5) 列出文件绝对路径(包含隐藏文件) find $pwd -maxdepth 1 | xargs ls -ld 2、cd命令 (changeDirectory),命令语法:cd [目录名]。说明:切换当前目录至dirName 实例: (1)进入要目录 cd /

(2)进入"家"目录 cd ~ (3)进入上一次工作路径 cd - (4)把上个命令的参数作为cd参数使用。 cd !$ 3、pwd命令 查看当前工作目录路径 实例: (1)查看当前路径 pwd (2)查看软链接的实际路径 pwd -P 4、mkdir命令 创建文件夹 可用选项: -m: 对新建目录设置存取权限,也可以用chmod命令设置; -p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录; 实例: (1)当前工作目录下创建名为t的文件夹 mkdir t (2)在tmp目录下创建路径为test/t1/t的目录,若不存在,则创建 mkdir -p /tmp/test/t1/t 5、rm命令 删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用rm 来删除文件,通常仍可以将该文件恢复原状 rm [选项] 文件… 实例:

linux内存管理子系统 笔记

4-4 linux内存管理子系统 4-4-1 linux内存管理(参考课件) 物理地址:cpu地址总线上寻址物理内存的地址信号,是地址变换的最终结果 逻辑地址:程序代码经过编译后,出现在汇编程序中的地址(程序设计时使用的地址) 线性地址:又名虚拟地址,32位cpu架构下4G地址空间 CPU要将一个逻辑地址转换为物理地址,需要两步: 1、首先CPU利用段式内存管理单元,将逻辑地址转换成线性地址; 2、再利用页式内存管理单元,把线性地址最终转换为物理地址 相关公式: 逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)(通用的) 16位CPU:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器) 线性地址=段寄存器的值×16+逻辑地址的偏移部分 物理地址=线性地址(没有页式管理) 32位CPU:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器) 线性地址=段寄存器的值+逻辑地址的偏移部分 物理地址<——>线性地址(mapping转换) ARM32位:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器) 逻辑地址=段内偏移量(段基地址为0) 线性地址=逻辑地址=段内偏移量(32位不用乘以32) 物理地址<——>线性地址(mapping转换) ************************!!以下都是x86模式下!!********************************* 一、段式管理 1.1、16位CPU:(没有页式管理) 1.1.1、段式管理的由来: 16位CPU内部有20位地址总线,可寻址2的20次方即1M的内存空间,但16位CPU 只有16位的寄存器,因此只能访问2的16次方即64K。因此就采用了内存分段的管理模式,在CPU内部加入了段寄存器,这样1M被分成若干个逻辑段,每个逻辑段的要求如下: 1、逻辑段的起始地址(段地址)必须是16的整数倍,即最后4个二进制位须全是0 (因此不必保存)。 2、逻辑段的最大容量为64K。 1.1.2、物理地址的形成方式: 段地址:将段寄存器中的数值左移4位补4个0(乘以16),得到实际的段地址。 段偏移:在段偏移寄存器中。 1)逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器) 2)由逻辑地址得到物理地址的公式为:(因为没有页式管理,所以这一步就得到了物理地址)物理地址PA=段寄存器的值×16+逻辑地址的偏移部分(注意!!)(段与段可能会重叠)

Linux常用命令详解(配合示例说明,清晰易懂)

Linux常用命令详解 (常用、详细) BISTU 自动化学院 刷碗小工(frisen.imtm) 2010年11月 开源社区,造福大家,版权所有,翻录不究(初次接触Linux命令可能对以下说明有不少疑问,可待看完一遍后再回头细看) (配合Ctrl + F可快速查找你想了解的命令)

索引:(待完善) 文件说明:Linux命令很多,但最常用的80个左右 文档内容充实,用示例说明命令如何使用笔者力求语言简洁,清晰易懂 由于忙于其他事情,改进排版的工作只能搁置了 最后,望此文档能为大家Linux学习之路献微薄之力 一、路径: 执行命令前必须要考虑的一步是命令的路径,若是路径错误或是没有正确的指定,可能导致错误的执行或是找不到该命令。要知道设置的路径,可执行以下命令: 一般而言,本书的命令位于/bin、usr/bin、/sbin、/usr/sbin之中。若读者执行了命令却出现“command not find”或是“命令不存在”的字样,就必须要确定该命令的位置是否在命令的路径中,或是系统上根本没有安装该套件。 二、命令顺序: 若在shell内置的命令/bin以及/usr/bin之下都出现了命令pwd,那当我们执行该命令时,会执行哪一个?答案是第一优先执行shell内置的命令,再执行路径中的设置;因此若有相同名称的命令时,必须要注意顺序设置,或是直接输入完整路径。 三、参数(或称选项)顺序: 一般除了特殊情况,参数是没有顺序的。举例而言,输入“–a –v”与输入“–v –a”以及“–av”的执行效果是相同的。但若该参数后指定了要接的文件或特殊对象,如“–a cmd1 –v cmd2”,则不能任意改变选项顺序。 四、常用参数: 下面所列的是常见的参数(选项)意义: --help,-h 显示帮助信息 --version,-V 显示版本信息 -v 繁琐模式(显示命令完整的执行过程) -i 交谈模式(指定界面) -l 长列表输出格式 -q,-s 安静模式(不显示任何输出或错误信息) -R 递归模式(连同目录下所有文件和子目录一起处理) -z 压缩 五、命令的结合与定向: 命令中除了一般命令外,还有管道(或称途径)(|)与定向(>或>>)。 管道(途径)的用法: “命令一[选项]”| “命令二[选项]”,也就是将“命令一[选项]”的输出结果传到“命令二[选项]”,通过命令二的处理之后才输出到标准输出(屏幕)上。比如“ls /etc”会列出etc下的所有文件,若加上“| less”,也就是“ls /etc | less”,则会将“ls /etc”的结果通过less分页输出。 定向的用法: 将结果定向到命令的输出设备,一般不加文件名意为将结果输出到屏幕,若是在定向后加上文件名,则会将命令的执行结果输出到定向的文件,例如“ls > temp.txt”,就会将ls 的结果输出到文件temp.txt中。“>”与“>>”的差异在于前者是覆盖,而后者是附加。 六、命令中的命令: 许多命令在执行后,会进入该命令的操作模式,如fdisk、pine、top等,进入后我们必须要使用该命令中的命令,才能正确执行;而一般要退出该命令,可以输入exit、q、quit或是按【Ctrl+C】组合

《深入理解LINUX内存管理》学习笔记.

引子 为什么要写这个笔记: 1,这本书的中文版翻译了太垃圾,没法阅读。阅读英文原版,可以很好的理解作者的思路。作此笔记备忘 2,一直以来学习LINUX kernel的知识缺乏系统化,借对这本书的学习,系统化的学习一下LINUX kernel。 3,自己一直在做一个too small,too simple的单进程,特权模式,64bit保护模式的称不上OS的OS,已经做完了bootloader, 构思kernel的实现的时候,困惑在内存管理的实现上,阅读这本书,希望能有利于自己的OS的编写。 4,克服惰性,多读书,希望一天能阅读5页,争取半年内阅读完这本原版700多页的巨著。 不足: 我不可能完全理解LINUX 内存管理的精髓,肯定有很多地方理解错误。希望大家能够指正,以便提高,谢谢。 学习方法: 可能您第一次阅读的时候很多地方都不理解,不用担心。那您可能需要阅读一些文件系统的知识。 或者阅读全部笔记后,再回头阅读,有些地方您就理解了。 言归正传: 一、概要 可用工具 CodeViz: 生成代码调用关系图的工具,这个工具我现在还没有去使用,有兴趣的可以自己试试去建立调用关系图。 http://www.csn.ul.ie/~mel/projects/codeviz/ Linux cross reference (LXR): 以web的方式阅读和查找LINUX内核源代码的工具。这个工具安装相当麻烦,我建议直接到它的官方网站直接读代码。 http://lxr.linux.no/linux+v2.6.24/ 模块 LINUX内存管理代码模块主要分为4个部分: 1.Out of memory 代码在mm/oom_kill.c 貌似用于杀进程的时候对内存的操作 2.虚拟内存的分配代码在mm/vmalloc.c

Linux基本命令大全

下面我们来介绍常用基本命令 一、注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout Red Hat Linuxrelease 9(Shike) Kernel 2.4.20.8 on an i686 Login: ←回到登陆的画面 2,关机或重新启动的shutdown命令 Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。 参数说明如下: λ立即关机:-h 参数让系统立即关机。范例如下: [root@localhost root]#shutdown –h now ←要求系统立即关机 λ指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下: [root@localhost root]#shutdown now ←立刻关机 [root@localhost root]#shutdown +5 ←5分钟后关机 [root@localhost root]#shutdown 10:30 ←在10:30时关机 关机后自动重启:-rλ参数设置关机后重新启动。范例如下: [root@localhost root]#shutdown -r now ←立刻关闭系统并重启 [root@localhost root]#shutdown -r 23:59 ←指定在23:59时重启动 3,重新启动计算机的reboot命令 顾名思义,reboot命令是用来重新启动系统的。常用的参数如下: λ-f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。 -Iλ参数:在在重新启动之前关闭所有网络接口。 虽然reboot命令有个参数可以使用,但是一般只需要单独运行reboot命令就可以了 二、文件与目录的操作 列出文件列表的ls命令 1,ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例如下: ? 显示当前目录的内容: [tony@free tony]$ ls Desktop mail myinstall.log test.txt ←有两个目录及两个文件夹 ? 当运行ls命令时,并不会显示名称以―.‖开头的文件。因此可加上―-a‖参数指定要列出这些文件。范例如下: [tony@free tony]$ ls –a ? 以―-s‖参数显示每个文件所有的空间,并以―-S‖参数指定按所有占用空间的大小排序。范例如下: [tony@free tony]$ ls –s –S 总计36 4 Desktop 4 mail 24 myinstall.log 4 test.txt ? 在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下: [tony@free tony]$ ls –l/usr/games 2,切换目录的cd命令

Red_Hat_Linux常用命令汇总

[资料] Red Hat Linux常用命令汇总 Linux 常用命令汇总 ls命令: 1. ls //列出当前目录的文件和文件夹 2. ls –a //列出当前目录的文件和文件夹,包含隐藏文件 3. ls –l //列出详细信息 4. ls 目录 //列出某目录下的文件 pwd命令 //查看当前所在位置 du 命令 1. du 目录 //查看目录的总容量以及子目录的容量 2. du –s 目录 //查看目录总容量 cd 命令 1.cd .. //回上一级目录 2.cd / //回根目录 3. cd //回用户主目录 4.cd 目录路径 //去某目录 mkdir 目录名 //创建目录 rmdir 空目录名 //删除空目录 rm 文件名 //删除文件 rm –rf 目录名 //删除目录以及目录下所有文件 mount 命令 1.mount /dev/cdrom /mnt/cdrom //挂载光驱到 /mnt/cdrom目录下2.mount -t vfat /dev/sda1 /mnt/u //挂载U盘到 /mnt/u目录下

3. umount /mnt/cdrom //卸载光驱 fdisk –l //查看本机存储设备 file 文件名 //查看文件类型 find 目录名–name “*.c” //在某目录下查找文件为*.c的文件 whereis 文件名 //查找文件在哪些目录下 cat 文件名 //显示文件内容 cat 文件名 | grep 文字 //只显示包含文字相关的内容 cat 文件名 | more //分页显示文件内容 tail 文件名 //查看文件末尾 head 文件名 //从头查看文件 cp 命令: cp 文件1 文件2 //复制文件1 到文件2 cp 文件1 目录1 //复制文件1到目录1下 cp 目录1/文件1 目录2 //复制目录1下的文件1到目录2下 cp –r 目录1 目录2 //复制目录1下所有内容到目录2 mv 命令: mv 文件1 文件2 //重命名文件1为文件2 mv 文件1 目录1 //移动文件1到目录1下 mv 目录1/文件1 目录2 //移动目录1下的文件1到目录2下 mv –r 目录1 目录2 //移动目录1下所有内容到目录2 chmod 命令: chmod u+x g+r o-w 文件名 //为文件设置权限(用户,组,其他人)chmod 744 文件名 //为文件设置权限(1-执行,2-写,4-读) chown 命令: chown 用户文件名 //把文件改为用户所有

Linux内存管理实验

1 《unix 操作系统教程》课程实验报告 实验名称 Linux 内存管理实验 实验序号 5 姓 名 系院专业 班 级 学 号 实验日期 2012.11.28 指导教师 成 绩 一、实验目的 1. 通过在Linux 环境下对内存管理的基本操作,感性认识Linux 如何对内存进行管理。 2. 利用readelf 和objdump 观测 linux 下的内存地址映射过程以及进程的虚拟地址空间。 二、实验内容与要求 (1)按照实验内容完成实验操作步骤,学习内存管理中的一些常用命令 (2)理解linux 中逻辑地址、线性地址的概念。 (3)提交实验报告。 三、实验设备 地点: 实验实训中心A4-2 设备:计算机一台 linux 操作系统

2 四、实验步骤与测试 实验一 free 命令显示显示内存的使用情况(使用的和空闲的),包括物理内存、交换区内存、内核缓冲区内存。不包括共享内存。free 命令默认选项为-k 语法: free [-bkmotV] [-s <间隔秒数>]选项介绍: -b: 以Byte 为单位显示内存使用情况; -k: 以KB 为单位显示内存使用情况; -m: 以MB 为单位显示内存使用情况; -o: 不显示缓冲区调节列; -s<间隔秒数>: 每间隔指定时间执行一次free 命令; -t: 显示内存总和列; -V: 显示版本信息; (1)free -k: 以KB 为单位显示内存使用情况; 解释:total: 内存总量: 3355508(k) used: 已经使用的内存量: 490664(k) free: 空闲的内存量: 2864844(k) shared: 当前已经废弃不用,总量是0(k) buffers: 25164(k) Buffer Cache 内存量: 263480(k) cached: Page Cache 内存量: 21436(k) (2)free –m -s 5:以M 为单位,5秒显示以下内存信息 解释:以上为每隔5秒显示内存信息,由以上图可知:两次内存使用情况没有变化。 (3)free -o: 不显示缓冲区调节列; 解释:由以上可知Buffer Cache 这一列没有显示出来。 (4)free -t: 显示内存总和列;

Linux操作系统内存管理

Linux操作系统内存管理 摘要: Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。这对用户全透明:运行于Linux的程序只看到大量的可用内存而不甘心哪部分在磁盘上。当然,读写硬盘比真的内存慢(慢千倍),所以程序运行较慢。用做虚拟内存的这部分硬盘叫对换空间。 Linux可以使用文件系统中的普通文件或单独的分区作为对换空间。对换分区更快,但对换文件更易于改变大小(无须对硬盘重分区)。如果知道要多少对换空间,应该用对换分区;如果不能确认,可以先用对换文件,用一段时间后再根据所需空间建立对换分区。 Linux允许同时使用多个对换分区和/或对换文件。即如果偶尔需要更多的对换空间,可以随时建立一个额外的对换文件。 Linux是一个遵循POSIX(Portable Operating System Interface)标准的操作系统,它继承了UNIX系统优秀的设计思想,拥有简练、容错强、高效而且稳定的内核。此外Linux还具备其他操作系统所不能比拟的优点。①:完全免费; ②:内核源代码完全公开。 Linux内核拥有一个功能完备的内存管理子系统,它增加了对NUMA(非均匀存储结构)体系结构的支持并且使用了基于区(ZONE)的物理内存管理方法,从而保持了物理上连续分布、而逻辑上统一的内存模式和传统的共享内存编程模型,使得系统的性能得以极大的扩展。这样Linux不仅能够满足传统的桌面应用,而且还能满足高端服务器市场的需要。目前,Linux不仅在Internet服务器上表现出色,而且还可以胜任大型数据库系统的服务器。 关键字:虚拟内存,物理内存管理,虚拟内存管理 一、Linux存储管理的基本框架 Linux内核采用虚拟页式存储管理,采用三次映射机制实现从线性地址到物理地址的映射。其中PGD为页面目录,PMD为中间目录,PT为页面表。具体的映射过程为: ⑴从CR3寄存器中找到PGD基地址; ⑵以线性地址的最高位段为下标,在PGD中找到指向PMD的指针;

入门学习Linux常用必会60个命令实例详解

入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。 ◆安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last; ◆文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup; ◆系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; ◆其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。immortality按:请用ctrl+f在本页中查找某一部分的内容或某一命令的用法。 -------------------------------------------------------------------------------- Linux必学的60个命令(1)-安装与登陆命令 login 1.作用 login的作用是登录系统,它的使用权限是所有用户。 2.格式 login [name][-p ][-h 主机名称] 3.主要参数

Linux基本命令(带参考答案)

实训项目2 Linux基本命令 一、实训目的 ●掌握Linux各类命令的使用方法; ●熟悉Linux操作环境。 二、实训内容 练习使用Linux常用命令,达到熟练应用的目的。 三、实训步骤 子项目1.文件和目录类命令的使用 (1)启动计算机,利用root用户登录到系统,进入字符提示界面。练习使用cd命令 (2)用pwd命令查看当前所在的目录。 pwd命令用于显示用户当前所在的目录。如果用户不知道自己当前所处的目录,就可以使用这个命令获得当前所在目录 (3)用ls命令列出此目录下的文件和目录。 然后,使用ls命令,并用-a选项列出此目录下包括隐藏文件在内的所有文件和目录。 最后,用man命令查看ls命令的使用手册。 补充说明浏览信息内容:(以下面图片为例) 1 2 3 4 5 6 7 8 9 10 11 1属性:- 代表文件,l代表链接文件,d代表目录 2 所有者权限(文件权限):具有r 读w 写没有x 执行

3 同组用户权限(文件权限):只读r 4 其他人权限(文件权限):只读r 5 链接数:1 6 文件拥有者:root 7 文件所属组:root 8 文件大小:8字节 9 创建或修改日期:2月21日 10 创建或修改时间:18:42 11 文件或目录名称 (4)在当前目录下,创建测试目录test。利用ls或ll命令列出文件和目录,确认test 目录创建成功。然后进入test目录,利用pwd查看当前工作目录。 mkdir命令用于创建一个目录。 该命令的语法为:mkdir [参数] 目录名 常用参数–p:如果父目录不存在,则同时创建该目录及该目录的父目录。 (5)利用cp命令复制系统文件/etc/profile到当前目录下。 # cp /etc/profile . (6)复制文件profile到一个新文件profile.bak,作为备份。 # cp profile profile.bak (7)用ll命令以长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。 (8)用less命令分屏查看文件profile的内容,注意练习less命令的各个子命令,如b、p、q等,并对then关键字查找。 注意:可以通过less - -help 命令查看帮助 less命令是more命令的改进版,比more命令的功能强大。more命令只能向下翻页,而less命令可以向下、向上翻页,甚至可以前后左右的移动。 执行less命令后,进入了less状态,按【Enter】键可以向下移动一行,按【space】键可以向下移动一页;按【b】键可以向上移动一页;也可以用光标键向前、后、左、右移动;按【q】键可以退出less命令。

linux常用命令集(PDF版)

常用命令集 LINUX常用命令集

cal (10) 使用权限 (10) 使用方式 (10) 说明 (10) 参数 (10) 范例 (10) crontab (11) 使用权限 (11) 使用方式 (11) 说明 (11) 参数 (11) 例子 (11) 注意 (12) date (12) 使用权限 (12) 使用方式 (12) 说明 (12) 参数 (13) 例子 (13) 注意 (14) sleep (14) 使用权限 (14) 使用方式 (14) 说明 (14) 参数 (14) 例子 (14) time (15) 使用权限 (15) 使用方式 (15) 说明 (15) 使用方式 (15) 范例 (17) uptime (17) 使用权限 (17) 使用方式 (18) 说明 (18) 参数 (18) 范例 (18) chfn (18) 使用权限 (18) 用法 (18) 说明 (18) LINUX常用命令集

chsh (19) 使用权限 (19) 用法 (19) 说明 (19) 范例 (19) finger (20) 使用权限 (20) 使用方式 (20) 说明 (20) 范例 (20) last (21) 使用权限 (21) 使用方式 (21) 说明 (21) 参数 (21) login (21) passwd (22) 使用权限 (22) 使用方式 (22) 说明 (22) 参数 (22) who (22) 使用权线 (22) 使用方式 (22) 说明 (23) 参数 (23) cat (23) 使用权限 (23) 使用方式 (23) 说明 (23) 参数 (23) 范例 (23) cd (24) 使用权限 (24) 使用方式 (24) 说明 (24) 范例 (24) chmod (24) 使用权限 (24) 使用方式 (24) 说明 (25) 参数 (25) LINUX常用命令集

LINUX系统基本的内存管理知识讲解

内存是Linux内核所管理的最重要的资源之一。内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。 一、内存使用情况监测 (1)实时监控内存使用情况 在命令行使用Free命令可以监控内存使用情况 代码如下: #free total used free shared buffers cached Mem: 256024 192284 63740 0 10676 101004 -/+ buffers/cache: 80604 175420 Swap: 522072 0 522072 上面给出了一个256兆的RAM和512兆交换空间的系统情况。第三行输出(Mem:)显示物理内存。total列不显示核心使用的物理内存(通常大约1MB)。used列显示被使用的内存总额(第二行不计缓冲)。 free列显示全部没使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对对换空间,显示的信息类似上面。如果这行为全0,那么没使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。可以使用—h参数以字节为单位显示内存使用情况,或者可以使用—m参数以兆字节为单位显示内存使用情况。还可以通过—s 参数使用命令来不间断地监视内存使用情况: #free –b –s2 这个命令将会在终端窗口中连续不断地报告内存的使用情况,每2秒钟更新一次。 (2)组合watch與 free命令用来实时监控内存使用情况: 代码如下: #watch -n 2 -d free

Linux常用系统命令及其使用详解

计算机高手必背 之 Linux 系统命令及其使用详解(大全) 名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 说明:把档案串连接后传到基本输出(萤幕或加> fileName 到另一个档案) 参数: -n 或--number 由 1 开始对所有输出的行数编号 -b 或--number-nonblank 和-n 相似,只不过对于空白行不编号 -s 或--squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 -v 或--show-nonprinting 范例: cat -n textfile1 > textfile2 把textfile1 的档案内容加上行号后输入textfile2 这个档案里cat -b textfile1 textfile2 >> textfile3 把textfile1 和textfile2 的档案内容加上行号(空白行不加)之后将内容附加到textfile3 名称:cd 使用权限:所有使用者 使用方式:cd [dirName] 说明:变换工作目录至dirName。其中dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory (也就是刚login 时所在的目录).另外,"~" 也表示为home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。 范例:跳到/usr/bin/: cd /usr/bin 跳到自己的home directory: cd ~ 跳到目前目录的上上两层: cd ../..

linux内存管理实验报告

操作系统实验报告 院别:XXXXXX 班级:XXXXXX 学号:XXXXXX 姓名:稻草人

实验题目:内存管理实验 一、实验目的 1、通过本次试验体会操作系统中内存的分配模式; 2、掌握内存分配的方法(FF,BF,WF); 3、学会进程的建立,当一个进程被终止时内存是如何处理被 释放块,并当内存不满足进程申请时是如何使用内存紧 凑; 4、掌握内存回收过程及实现方法; 5、学会进行内存的申请释放和管理; 二、实验内容 附源代码: /*宏定义*/ #include #include #include #define PROCESS_NAME_LEN 32 /*进程名称的最大长度*/ #define MIN_SLICE 10 /*最小碎片的大小*/ #define DEFAULT_MEM_SIZE 1024 /*默认内存的大小*/ #define DEFAULT_MEM_START 0 /*默认内存的起始位置*/ /* 内存分配算法 */ #define MA_FF 1 #define MA_BF 2 #define MA_WF 3 int mem_size=DEFAULT_MEM_SIZE; /*内存大小*/ int ma_algorithm = MA_FF; /*当前分配算法*/ int flag = 0; /*设置内存大小标志*/ static int pid = 0; /*初始pid*/ int algorithm;

/*描述每一个空闲块的数据结构*/ struct free_block_type{ int size; int start_addr; struct free_block_type *next; }; /*指向内存中空闲块链表的首指针*/ struct free_block_type *free_block; /*每个进程分配到的内存块的描述*/ struct allocated_block{ int pid; int size; int start_addr; char process_name[PROCESS_NAME_LEN]; struct allocated_block *next; }; /*进程分配内存块链表的首指针*/ struct allocated_block *allocated_block_head = NULL; struct allocated_block *find_process(int id) { struct allocated_block *p; p=allocated_block_head; while(p!=NULL) { if (p->pid==id) return p; } return NULL; } void swap(int *p,int *q) { int temp; temp = *p; *p = *q; *q = temp; return;

Linux常用命令和实例大全

Linux常用命令和实例大全 在启动Linux后屏幕出现如下界面显示: …… Red Hat Linux release 9 (Shrike) Kernel 2.4.20.8 on an i686 login: 输入:root(管理员名)后,计算机显示输口令(password:),输入你的口令即可。当计算机出现一个“#”提示符时,表明你登录成功! 屏幕显示Linux提示符: [root@localhost root]#_ 这里需要说明的是“Red Hat Linux release 9 (Shrike)”表示当前使用的操作系统的名称及版本。“2.4.20.8”表示Linux操作系统的核心版本编号。“i686”表示该台电脑使用的CPU的等级。 下面我们来介绍常用基本命令 一、注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout 命令即可: [root@localhost root]#logout Red Hat Linuxrelease 9(Shike) Kernel 2.4.20.8 on an i686 Login: ←回到登陆的画面 2,关机或重新启动的shutdown命令 Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。 参数说明如下: ? 立即关机:-h 参数让系统立即关机。范例如下: [root@localhost root]#shutdown –h now ←要求系统立即关机 ? 指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下: [root@localhost root]#shutdown now ←立刻关机 [root@localhost root]#shutdown +5 ← 5分钟后关机 [root@localhost root]#shutdown 10:30 ←在10:30时关机 ? 关机后自动重启:-r 参数设置关机后重新启动。范例如下: [root@localhost root]#shutdown -r now ←立刻关闭系统并重启 [root@localhost root]#shutdown -r 23:59 ←指定在23:59时重启动 3,重新启动计算机的reboot命令 顾名思义,reboot命令是用来重新启动系统的。常用的参数如下: ? -f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。 ? -I 参数:在在重新启动之前关闭所有网络接口。 虽然reboot命令有个参数可以使用,但是一般只需要单独运行reboot命令就可以了二、文件与目录的操作 列出文件列表的ls命令 1,ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例如下:

Linux常用命令大全及其使用详解

Linux常用命令大全及其使用详解 1 man 在线查询man ls 2 ls 查看目录与档案ls -la 3 more 分页显示more 文件名称 4 cd 切换目录cd /usr/local/apache 5 touch 建立空白文档 6 mkdir 建立新的目录mkdir /usr/temp 7 rmdir 删除目录rmdir /usr/temp 8 rm 删除目录或档案rm -f 文件名称(如果要删除目录.需要加-r ) 9 cp 复制目录或档案cp 来源档案目标档案 10 pwd 显示目前的工作目录 11 mv 目录或档案更名或搬移mv 来源档案目标档案 12 find 寻找目录或档案find /etc -name 文件名称 13 chmod 变更档案使用权限chmod -R 755 /usr/local/etc 14 chown 变更档案所有者chown -R lin.wheel /usr/local/etc 15 gzip/tar 压缩或解压缩档案或目录tar -czvf 压缩档名.tar.gz 目录名称 16 mount 挂上档案系统或是设备mount /cdrom 17 umount 卸下档案系统或是设备umount /cdrom 18 df 查询系统的可使用档案空间df

19 du 显示目录或档案所占的磁盘空间du -a 檔名(du -sh 可以获取当前文件夹下的磁盘使用空间) 20 ps 查询系统process状态ps -aux|grep apach* 21 kill 砍除一个process kill pid 22 su 变换身份su - root 23 adduser 新增使用者 24 userdel 删除使用者 25 vipw 编辑使用者账户 26 passwd 变更密码 27 ping 侦测计算机之联机状态ping 210.240.6.9 28 ifconfig 网络接口的设定与管理ifconfig -a 29 route 可以设定routing table 30 traceroute 列出所经过的route traceroute 210.240.8.1 31 netstat 可以查询网络的使用及联机情形 32 pkg_add 安装package pkg_add bash-2.04.tgz 33 pkg_delete 移除已安装的package pkg_delete bash-2.04 34 pkg_info 查询安装纪录 35 sync 强迫系统将快取数据写回硬盘 36 reboot重新启动系统 37 halt 关闭系统 38 shutdown 通知使用者系统将关闭

相关文档