
2006年11月9日
内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分。对于Linux的初学者来说,熟悉Linux的内存管理非常重要。
进程是运行于虚拟地址空间的一个程序。可以说,任何在Linux系统下运行的程序都是进程。Linux系统中包括交互进程和批处理进程。交互进程是由Shell控制和运行的,既可以在前台运行,也可以在后台运行。批处理进程不属于某个终端,被提交到一个队列中以便顺序执行。大多数的进程都需要虚拟内存。
一般需要多少内存
对于典型的Linux应用系统,128MB内存是合理的选择。如果不运行X-Window系统,那么在一台特殊用途的机器(比如用于调试设备驱动程序的“崩溃和烧毁”系统)上仅用8MB内存就可以工作。
笔者曾经做过实验,在128MB和256MB下编译内核所需的时间几乎一样,都少于3分半钟(笔者的Linux发行版本是Mandrake Linux 9.1,内核2.4.21)。在一个只有8MB内存的系统上,编译需要的时间会更长一些。类似Web浏览器这样的多媒体应用软件,在内存充足时会运行得更流畅,特别是在一边编译程序,一边上网浏览的时候更是如此。因此,如果只有128MB内存,则预期的性能会有所降低。类似地,如果要开发消耗大量内存的应用程序,可能会要求更多的内存。所以,需要多少内存由工作需求来决定。
实时监控内存使用情况
1.在命令行使用“Free”命令监控内存使用情况
#free
total used free shared buffers cached
Mem: 256024 192284 63740 0 10676 101004
-/+ buffers/cache: 80604 75420
Swap: 522072 0 522072
上面代码给出了一个256MB的RAM和512MB交换空间的系统情况。第三行输出(Mem:)显示物理内存。Total列不显示核心使用的物理内存(通常大约1MB)。Used列显示被使用的内存总额(第二行不计缓冲)。Free列显示全部没有使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对换空间,显示的信息类似上面。如果这行为全0,那么就没有使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。使用-h参数,以字节为单位显内存使用情况;或者使用-m参数,以兆字节为单位显示内存使用情况。还可以通过-s参数,使用命令来不间断地监视内存使用情况:
#free -b -s5
这个命令将会在终端窗口中连续不断地报告内存的使用情况,每5秒钟更新一次。
2.使甩vmstat命令监视虚拟内存使用情况
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 63692 10704 101008 0 0 239 42 126 105 48 45 7 0
vmstat()命令是一个通用监控程序,是Virtual Meomory Statistics(虚拟内存统计)的缩写。如果使用vmstat命令的时候没有使用任何命令行参数,将会得到一个一次性的报告。vmstat命令报告主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区(以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数),以及中央处理单元(CPU)分配给用户、系统和空闲时分别占用的比例。
虚拟内存实现的机制
存储管理子系统是操作系统中最重要的组成部分之一。在早期计算时代,由于人们所需要的内存数目远远大于物理内存,因此设计出了各种各样的策略来解决此问题,其中最成功的就是虚拟内存技术,它使得系统中有限的物理内存竞争进程所需内存空间得到满足。虚拟内存通过在各个进程之间共享内存,而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其它目的。当原来的内容又要使用时,再读回内存。运行于Linux的程序只看到大量的可用内存,而不关心哪部分在磁盘上。当然,读写硬盘比真的内存慢(大约慢千倍),所以程序运行较慢。用做虚拟内存的这部分硬盘叫对换空间。
虚拟内存技术不仅仅让我们可以使用更多的内存,它还提供了下面这些功能:
1.巨大的寻址空间
操作系统让系统看上去有比实际内存大得多的内存空间。虚拟内存可以是系统中实际物理空间的许多倍。每个进程运行在其独立的虚拟地址空间中,这些虚拟空间相互之间都完全隔离开来,所以进程间不会互相影响。同时,硬件虚拟内存机构可以将内存的某些区域设置成不可写,这样可以保护代码与数据不会受恶意程序的干扰。
2.公平的物理内存分配
内存管理子系统允许系统中每个运行的进程公平地共享系统中的物理内存。
3.共享虚拟内存
尽管虚拟内存允许进程有其独立的虚拟地址空间,但有时也需要在进程之间共享内存。例如,有可能系统中有几个进程同时运行BASH命令外壳程序。为了避免在每个进程的虚拟内存空间内都存在BASH程序的拷贝,较好的解决办法是系统物理内存中只存在一份BASH的拷贝,并在多个进程间共享。动态库则是另外一种进程间共享执行代码的方式。共享内存可用来作为进程间通信(IPC)的手段,多个进程通过共享内存来交换信息。Linux支持SYSTEM V的共享内存IPC机制。
4.进程的保护
系统中的每一个进程都有自己的虚拟地址空间。这些虚拟地址空间是完全分开的,这样一个进程的运行不会影响其它进程,并且硬件上的虚拟内存机制是被保护的,内存不能被写入。这样可以防止迷失的应用程序覆盖代码的数据。
5.Linux虚拟内存实现机制
Linux虚拟内存的实现需要6种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。
内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。当用户程序运行时,如果发现程序中要用的虚地址没有对应的物理内存,就发出了请求页要求。如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制)。如果没有足够的内存可供分配,那么就调用交换机制;腾出一部分内存。另外,在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中,也要修改页表来映射文件地址。Linux虚拟内存实现原理见图1。
<img src="http://tech.ccidnet.com/pub/attachment/2004/10/347128.jpg">
图1 Linux虚拟内存实现原理
6.虚拟内存容量设定
也许有人说,虚拟内存容量的设定应该分配2倍于物理内存,但这只是个规律。如果物理内存比较小,可以这样设定。如果有256MB物理内存或更多的话,就可以缩小虚拟内存。Linux会把大量的内存用做Cache,但在资源紧张时会收回。只要看到swap为0,或者该数很小就可以放心了,内存放着不用才是最大的浪费。
内存泄露和回收内存的方法
1.内存泄漏的定义
一般常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存。应用程序一般使用malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块。否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
2.内存泄露的危害
从用户使用程序的角度来看,内存泄漏本身不会产生什么危害。作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积。而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。
3.内存泄露的检测和回收
对于内存溢出之类的麻烦,大家可能在编写指针比较多的复杂程序时就会遇到。在Linux或Unix下,C和C++语言是最常使用的工具。但是C++程序缺乏相应的手段来检测内存信息,只能使用top指令观察进程的动态内存总额。而且程序退出时,我们无法获知任何内存泄漏信息。
(1)使用Linux命令回收内存,可以使用ps、kill两个命令检测内存使用情况和进行回收。在使用超级用户权限时使用命令“ps”,它会列出所有正在运行的程序名称和对应的进程号(PID)。kill命令的工作原理是向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID)。
下面举例说明,为了高效率回收内存可以使用命令ps参数v:
#ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
2530 vc/1 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty1
2531 vc/2 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty2
2532 vc/3 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty3
2533 vc/4 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty4
2534 vc/5 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty5
2535 vc/6 S 0:00 104 6 1325 408 0.1 /sbin/mingetty tty6
2639 pts/1 S 0:00 545 16 2643 968 0.3 [su]
2684 pts/1 S 0:00 361 586 2501 1592 0.6 bash
2711 pts/0 S 0:00 545 16 2643 968 0.3 [su]
2714 pts/0 S 0:00 361 586 2501 1592 0.6 bash
2754 pts/2 S 0:00 545 16 2643 968 0.3 [su]
2757 pts/2 S 0:00 361 586 2501 1592 0.6 bash
2818 pts/1 S 0:00 120 29 1478 480 0.1 ping 192.168.1.7
2939 pts/2 R 0:00 156 58 2469 644 0.2 ps -v
如果想回收ping命令的内存的话,可以使用下面命令:
# kill -9 2818
(2)使用工具软件
Memprof是一个非常具有吸引力且易于使用的软件,它由Red Hat的Owen Talyor创立。这个工具用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。这个工具直接就可以执行,并且其工作起来无需对源代码进行任何修改。在程序执行时,这个工具会以图形化的方式显示内存的使用情况,工作界面见图2。
<img src="http://tech.ccidnet.com/pub/attachment/2004/10/347130.jpg">
图2 内存回收工具Memprof
但是,该工具目前只能运行于x86和PPC体系结构的Linux系统之中,需要一个完整的GNOME环境。这样就使得其不能灵活用于所有的地方。此外,该工具的开发工作进展得也比较缓慢,现在是0.5.1版。
上面讲述了Linux内存的概念、需要多少内存、实时监控内存使用情况、虚拟内存实现的机制,以及内存泄露和回收方法等五个方面内容,希望能对Linux初学者高效率使用内存系统有所帮助.
posted @ 2006-11-09 13:17 Alex’Sky 阅读(256) 评论(0)
编辑
一、系统设置与管理
1.alias
说明:为命令设置别名、显示别名设置。
语法:alias [别名]=[指令名称]:为[指令名称]起一个别名。
alias [别名]:显示出[别名]所对应的命令。
alias:显示所有别名设置。
2.apmsleep
说明:进入挂起或等待状态。
语法:apmsleep hh:mm
参数:hh:mm指定进入挂起或等待状态的时间。
3.authconfig
说明:向用户提供一个配置/etc/sysconfig/network中的NIS的图形界面。
语法:authconfig --back --test --nostart
参数:--back将authconfig中的Cancel按钮改成Back按钮;--test使authconfig只能够被root运行,其他用户无法保存修改;--nostart使authconfig更改的设置在系统重启后生效。
4.aumix
说明:改变音效设置。
语法:aumix [-][+|-][<-amount>]]|[[]|R|P|q][-d][-f][-h][-I][-L][-q] [-S]
参数:-频道参数,对于每个频道,+/-选项用于增加/减少原来的强度:(图)
-d指定音效设备文件,默认是/dev/mixer;-f指定存放/读取设备的文件;-h使用时显示信息;-I以互动方式运行aumix,使用图形界面;-L从S|HOME/.aumixrc或/etc/aumixrc读入设置;-q查询所有设备,并且显示它们的位置;-S将设置存放到S|HOME/.aumixrc。
5.bg
说明:将命令放置后台运行。
语法:bg [job]
参数:job命令作业号。
6.cardmgr
说明:PCMCIA设备管理程序,管理PCMCIA插槽的插入和拔除。
语法:cardmgr [-Vqdofv][-c configpath][-m modpath][-p pidfile][-s stabfile]
参数:-V显示版本信息;-q设置为安静模式;-d在加载设备驱动程序时检查模块间的依赖关系;-o配置当前的PCMCIA卡;-f在前台执行,而不作为一个deamon程序运行;-v显示命令运行的详细信息;-c configpath在configpath目录下搜索PCMCIA卡的配置数据库和配置脚本,默认值为/etc/pcmcia;-m modpath在modpath目录下搜索可加载的内核模块;-p pidfile将cardmgr的PID写入pidfile文件,默认为/var/lib/pcmcia/stab;-s stabfile将当前插槽信息写入stabfile文件,默认为/var/lib/pcmcai/stab。
7.chage
说明:设置用户密码期限。该命令仅能被root用户运行。
语法:chage [-m mindays][-M maxdays][-d lastday][-I inactive][-E expiredate][-W warndays] 用户名
参数:-m mindays两次密码更改之间的最小时间间隔;-M maxdays密码有效期,maxdays+lastday小于当前日期,那么就需要修改密码;-d lastday最后一次更改密码的日期;-I inactive在密码过期inactive天以后才封锁账号;-E expiredate设置用户账号使用时间段;-W warndays在用户需要更改密码的warndays天前开始提示用户修改。
8.chkconfig
说明:检查、设置系统的各种服务。
语法:chkconfig [--add][--del][--list][系统服务]
chkconfig [--level<等级代号>][系统服务][on/off/reset]
参数:--add增加所指定的服务,让chkconfig能够管理它;--del删除所指定的服务,不再由chkconfig管理它;--list列出目前可由chkconfig管理的所有系统服务;--level<等级代号>指定该系统服务要在哪一个执行等级中开启或关闭,等级代号是0~7;on在指定的执行等级,开启该系统服务;off在指定的执行等级,关闭该系统服务;reset在指定的执行等级,重置该项系统服务。
9.chroot
说明:改变根目录。
语法:chroot [目的目录][执行指令…]
10.depmod
命令:分析可载入模块的依赖性。
语法:depmod [-adeisvV][-m<文件>][模块名称]
参数:-a分析所有可用的模块;-d执行排错模式;-e输出无法参照的符号;-i不检查符号表的版本;-s在系统记录中记录错误;-v执行时显示详细的信息;-V显示版本信息;-m<文件>使用指定的符号表文件。
11.exec
说明:执行指定的命令,exec执行命令以后,控制权不会交给原来的shell,所以将退出登录。
语法:exec [-cl][-a name][指令<指令参数>]
参数:-c在空环境下执行命令;-l在最开始的参数前加上破折号,然后再传送到命令;-a name将name作为最开始的参数传送给命令。
12.export
说明:设置或显示环境变量。
语法:export [-fnp][变量名称]=[变量设置值]
参数:-f代表[变量名称]中为函数名称;-n删除指定变量,变量实际未删除,只是不输出到后续指令的执行环境中;-p列出所有shell赋予程序的环境变量。
13.fg
说明:将程序或指令切换到前台执行。
语法:fg [job]
参数:job命令作业号。 14.free
说明:显示内存状态,包括物理内存、虚拟内存、共享内存区段等信息。
语法:free [-bkmotV][-s<间隔秒数>]
参数:-b以Byte为单位显示内存使用情况;-k以KB为单位显示内存使用情况;-m以MB为单位显示内存使用情况;-o不显示缓冲区调节列;-t显示内存总和;-s<间隔秒数>持续观察内存使用情况,设置每几秒检查一次。
15.groupadd
说明:建立新用户组。
语法:groupadd [-g gid [-o]][-r][-f]组名
参数:-g gid指定组ID-GID值;-o重复使用组ID;-r用来建立系统账号;-f强制建立新用户组。
16.groupdel
说明:删除用户组。
语法:groupdel 组名
17.groupmod
说明:修改用户组信息。
语法:groupmod [-g gid [-o]][-n group_name]组名
参数:-g gid重新指定组ID值;-o重复使用组ID;-n group_name更改用户组名。
18.grub
说明:Linux下除LILO外另一个多操作系统引导管理器。
语法:grub [--batch][--boot-device=DRIVE][--config-file=FILE][--device-map=FILE][--hold][--no-config-file][--no-curses][--no-floppy][--probe-second-floppy][--read-only]
参数:--batch允许执行批处理;--boot-device=DRIVE设置启动分区,默认是0x0;--config-file=FILE设置配置文件名,默认是/boot/grub/grub.conf;--device-map=FILE使用指定的设备掩码文件;--hold等待调试器的启动;--no-config-file不使用配置文件; --no-curses不支持鼠标;--no-floppy不支持软驱;--probe-second-floppy探测第二软驱;--read-only设备只读。
19.halt
说明:关闭系统。
语法:halt [-dfinpw]
参数:-d不要在wtmp(Login记录文件)中记录;-f不论目前的runlevel为何,不调用shut down,即强制关闭系统;-i在关闭系统之前,关闭全部的网络接口;-n关闭系统前,不用先执行sync(将缓存中的所有数据写入硬盘);-p关闭系统后,关闭电源;-w仅在wtmp中记录,而不实际结束系统。
20.kill
说明:将正在执行的程序(进程)终止。
语法:kill [-s <消息名或编号>][程序]
kill [-i <消息编号>]
参数:-s <消息名或编号>指定要送出的消息;[程序]程序的进程号,可以用ps命令获得;-i <消息编号>列出消息名称,如果指定了消息编号则只显示该消息名称。
21.last
说明:列出登录过系统的用户信息。
语法:last [-aRx][-n <个数>][用户账号名…][终端号…]
参数:-a把登录系统用户所在主机的主机名或IP地址显示在最后一行;-R不显示登录系统用户所在的主机名或IP地址;-x显示系统关机、重新启动、改变运行等级等信息;-n <个数>指定要查看最近多少个登录用户;[用户账号名…]指定查看某个用户账号的登录记录;[终端号…]指定查看从某个终端登录的记录。
22.lilo
说明:Linux最常用的多操作系统引导管理器。
语法:lilo [-clqtV][-b<外围设备代号>][-C<配置文件>][-d<延迟时间][-D<识别标签][-f<几何参数文件>][-i<开机扇区文件>][-I<识别标签>][-m<映射文件>][-P][-r<根目录>][-R<执行指令>…][-s<备份文件>][-S<备份文件>][-uU<外围设备代号>][-v…]
参数:-c使用紧凑模式,本参数将所有系统启动所需文件放置在连续的扇区中;-l产生线性扇区地址;-q列出映射的系统核心文件;-t仅做测试,不修改启动扇区和映射文件;-b<外围设备代号>指定安装lilo之处的外围代号;-C<配置文件>指定lilo的配置文件,默认为/etc/lilo.conf;-d<延迟时间>设置开机的延迟时间,默认为5秒;-D<识别标签>指定开机后预设启动的操作系统;-f<几何参数文件>指定磁盘的几何参数配置文件,默认为/etc/disktab;-i<开机扇区文件>指定要使用的开机的扇区文件,默认为/boot/boot.b;-I<识别标签>显示系统核心存放的位置;-m<映射文件>指定映射文件,默认为/boot/map;-P决定要修复或忽略分区表的错误;-r<根目录>设置系统启动时欲挂入成为根目录的目录;-R<执行指令>设置下次启动系统时,首先执行的指令;-s<备份文件>lilo在产生新的引导扇区以前先将旧的引导扇区内容写到指定的备份文件;-S<备份文件>如果指定的备份文件存在,强行覆盖,-s参数则不覆盖;-u<外围设备代号>卸载指定外围设备上的lilo,并检查时间戳;-U<外围设备代号>同-u功能相同,但不检查时间戳;-v显示指令执行过程。
23.lsmod
说明:显示已载入系统的内核模块。
语法:lsmod
24.lspci
说明:显示所有系统PCI设备的总线、设备信息。
语法:lspci [-bmMnt][-v[v]][-x[xx]][-s][[:][][.[]]][-d []:[]][-i][-p
]
参数:-b显示IRQ和I/O地址;-m复制PCI设备数据信息;-M搜索所有PCI设备;-n显示PCI厂商的代码;-t以树状图表显示所有的总线、桥、设备以及它们之间的关系;-v显示详细信息;-vv显示更详细信息;-x以十六进制方式显示PCI配置空间的前64字节内容;-xx以十六进制方式显示PCI配置空间的所有内容;-s[[]:][][.[]]显示符合指定总线,插槽和功能的设备;-d[]:[]显示符合厂商ID和设备ID的设备;-i设置file作为PCI ID数据库,默认为/usr/share/pci.ids;-p
设置dir作为包含PCI信息的目录,默认为/proc/bus/pci。
25.mkbootdisk
说明:制作一张与当前系统版本相同的Linux启动软盘。
语法:mkbootdisk [--device <设备名>][Kernel版本]
参数:--device <设备名>指定软盘所在软驱的设备名,通常是/dev/fd0;[Kernel版本]当前系统的内核版本。
26.modinfo
说明:显示内核模块信息。
语法:modinfo [-adphV][-f format_string] 模块文件名
参数:-a显示该内核模块的作者;-d显示该内核模块的描述;-p显示该内核模块所支持的参数;-h显示帮助信息;-V显示版本信息;-f format_string指定任意格式的字符串,用于从module_file的ELF部分提取模块信息。
27.mouseconfig
说明:图形化的鼠标配置工具。
语法:mouseconfig [--expert][--noprobe][--kickstart][--device ][--emulthree][mousetype][--test]
参数:--expert允许用户手动设置相应的参数,忽略系统的自动设置;--noprobe不检测鼠标;--kickstart快速模式;--device 指定在快速模式中所使用的硬件端口;--emulthree用两键鼠标模拟三键鼠标;mousetype指定在快速模式中使用的鼠标类型;--test允许非root用户使用mouseconfig,但不能够用于设置。
28.ps
说明:查看当前运行的进程。
语法:ps [-aeHuwx][--group<用户组名>][--tty<终端号>][--user<用户账号名>]
参数:-a显示所有终端下执行的进程;-e显示所有程序;-H显示树状结构,表示进程间的相互关系;-u以用户为主的格式来显示进行状态;-w用宽阔的显示模式;-x显示所有程序,不区分终端机;--group<用户组名>只显示指定用户组启动的进程;--tty<终端号>只显示在指定终端上启动的进程;--user<用户账号名>只显示在指定用户启动的进程。
29.reboot
说明:重新启动Linux系统。
语法:reboot [-dn]
参数:-d不将重新启动写入日志/var/tmp/wtmp;-n重新启动前不检查是否用未结束的程序,马上重新启动。 30.shutdown
说明:关闭Linux系统及计算机。
语法:shutdown [-fFhr][-t <称数>][时间][警告信息]
参数:-f重新启动时不执行fsck检查磁盘;-F重新启动时执行fsck检查磁盘;-h关闭Linux系统后关机;-r关闭Linux系统后重新启动;-t<秒数>几秒钟后开始执行shutdown命令;[时间]以hh:mm或+mm方式来设定执行shutdown命令的时间,也可以用now表示现在就执行;[警告信息]可以通过它把要关机的信息发给登录在系统上的每一个用户。
31.su
说明:可以通过su让用户暂时换成另一个用户账号登录。
语法:su [-fl][-c <指令>][用户账号]
参数:-f用另一个用户账号登录后,不去读该用户的.profile等启动设置文件;-l用户账号改变后,也改变工作目录,就像该用户账号新登录一样;-c<指令>执行完指定的指令后,就回到原来的用户账号。
32.who
说明:显示出所有现在已经登录到系统里的用户信息。
语法:who [-Hiq]
参数:-H显示出各个信息的标题;-i显示用户的idle时间,一分钟之内没有动作,标记为“.”,一天之内没有动作,标记为“old”;-q只显示出当前登录到系统的用户总数。
二、文件与磁盘操作
1.cat
说明:将一个或多个文件的内容显示在屏幕上。 语法:cat [-bEn][文件…]
参数:-b在每一行(空行除外)的开头加上行号(从1开始);-E在每一行的最后加上符号“S|”;-n在每一行的开头加上行号(从1开始计);[文件…]要显示的文件名列表。
2.chattr
说明:改变Linux系统中Ext2文件的属性。
语法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录]
参数:-R递归处理,将指定目录下的所有文件及子目录一并处理;-V显示指令执行过程;-v<版本编号>设置文件或目录版本;+/-/=<属性>开启/关闭/指定文件或目录的该项属性;[文件或目录]包括a:让文件或目录只能以append模式修改,而不能直接编辑写入;A:不更新文件或目录的最后存取时间;c:将文件或目录压缩后存放;d:将文件或目录排除在Dump操作之外;i:一经设置,该文件或目录将无法删除、更名、修改;s:保密性删除文件或目录;S:即时更新文件或目录,不经过Buffer缓冲区;u:预防意外删除。
3.cd
说明:切换当前目录。
语法:cd [目的目录]
参数:[目的目录]想要切换到的目录名,可以是相对路径,也可以是绝对路径。
4.chgrp
说明:修改文件或者目录所属的用户组。
语法:chgrp [-fR][所属用户组][文件/目录名…]
chgrp [-fR][--reference=<参考文件/目录>][文件/目录名…]
参数:-f不显示错误信息;-R指定目录下的所有文件和子目录都将被修改成为指定用户组;--reference=<参考文件/目录>把指定的文件或目录的所属用户组,全部设成和参考文件/目录所属的用户组。
5.chmod
说明:修改文件/目录的权限。
语法:chmod [-fR][<权限范围>+/-/=<权限设置>,…][文件/目录…]
chmod [-fR][数字代号][文件/目录…]
chmod [-fR][--reference=<参考文件/目录>][文件/目录…]
参数:-f不显示错误信息;-R指定目录下的所有文件和子目录的权限都会被修改;<权限范围>+<权限设置>:开启相应权限?lt;权限范围>-<权限设置>:关闭相应权限;<权限范围>=<权限设置>:设置相应权限;--reference=<参考文件/目录>把指定的文件或目录的权限,全部设成和参考文件/目录相同的权限;<权限范围>包括u:文件/目录的所有者;g:文件/目录所属的用户组;o:其他用户;a:全部用户,即ugo;<权限设置>包括r:读取权限,相应的数字代号为“4”;w:写入权限,相应的数字代号为“2”;x:执行权限,相应的数字代号为“1”;-:不具备权限,相应的数字代号为“0”。
6.chown
说明:修改文件/目录的所有者以及所属用户组。
语法:chown [-fR][所有者<所属用户?gt;][文件/目录…]
参数:-f不显示错误信息;-R指定目录下的所有文件和子目录的所有者、所属用户组都将被修改。
7.cmp
说明:比较两个文件是否有差异。
语法:cmp [-clsv][-i <字符数目>][第1个文件][第2个文件]
参数:-c除了标明差异处的十进制字码之外,一并显示该字码所对应字符;-l标出所有不一样的地方;-s不显示错误信息;-v显示版本信息;-i<字符数目>忽略指定“字符数目”字节以前的差异。
8.cp
说明:用来拷贝文件或目录。
语法:cp [-bfipR][-S <备份字尾字符串>][源文件/目录…][目标文件/目录…]
参数:-b当文件拷贝时遇到要删除、覆盖目标文件之前自动备份,备份文件名为原文件名+指定的备份字尾字符串;-f强行复制文件或目录,无论目标文件或目录是否存在;-i当文件拷贝时遇到要覆盖原有文件时,先询问用户;-p保留源文件或目录的属性(所有者、所属用户组、权限、时间);-R指定目录下的所有文件及子目录都会被拷贝。
9.df
说明:用来查看磁盘的文件系统以及使用情况。
语法:df [-ahkmT][文件/设备]
参数:-a显示全部的文件系统;-h以更直观的方式显示使用情况;-k以KB为单位统计;-m以MB为单位统计;-T显示文件系统的类型;[文件/设备]磁盘是以设备文件表示,如果给出文件,那么就是指该文件所在的磁盘。
10.du
说明:用来统计目录或文件所占的磁盘空间大小。
语法:du [-chkmsS][--exclude=<目录/文件>][--max-depth=<目录层数>][文件/目录]
参数:-c不仅显示每个文件/目录的大小,还显示所有目录和文件的总和;-h以KB、MB、GB为单位,提高输出信息的可读性;-k以KB为单位统计;-m以MB为单位统计;-s仅显示统计值;-S显示个别目录的大小时,不包括该目录的子目录的大小;--exclude=<目录/文件>略过指定的目录和文件;--max-depth=<目录层数>超过指定层数的目录后,予以忽略。
11.e2defrag
说明:Ext2文件系统的数据整理程序,但不能对已经mount上来的分区进行整理。
语法:e2defrag [-dnrsv][-b bad-inode][-I inode-list][-p pool-size] /dev/name
参数:-d运行在调试模式下;-n运行在非图形模式下;-r只读模式;-s显示文件系统信息以及e2defrag的执行统计;-v运行时显示详细信息;-b bad-inode指定在整理数据时存放坏道的I节点,这个I节点指向的数据全是坏道;-I inode-list inode-list是一个文件,指定了文件系统I节点的优先级;-p pool-size指定e2defrag程序运行时使用的缓冲池大小。
12.e2fsck
说明:检查Ext2文件系统的正确性。 语法:e2fsck [-acCdfFnprsStvVy][-b][-B<区块大小>][-l<文件>][-L<文件>][设备名称]
参数:-a不询问使用者,自动修复文件系统;-c一并执行badblocks,以标示损坏的区块;-C将检查过程的信息完整记录在file descriptor中,使整个检查过程都能监控;-d显示排错信息;-f即使文件系统没有错误迹像,仍强制地检查正确性;-F执行前先清除设备的缓冲区;-n以只读模式开启文件系统,并采取非互动方式执行,所有问题均回答N;-p不询问使用者意见,便自动修复文件系统;-r此参数只为了兼容性而存在,并无实际作用;-s如果文件系统的字节顺序不适当,就交换字节顺序,否则不做任何动作;-S不管理文件系统的字节顺序,一律交换字节顺序;-v执行时显示详细的信息;-V显示版本信息;-y采取非互动方式执行,所有的问题均回答Y;-b指定superblock,而不使用预设superblock;-B<区块大小>指定区块的大小,单位为字节;-l<文件>将文件中指定的区块加到损坏区列表;-L<文件>先清除损坏区列表,再将文件中指定的区块加到损坏区块列表。
13.fdformat
说明:低级格式化软盘。
语法:fdformat[-n] device
参数:-n关闭在格式化后进行检查的功能。
14.fdisk
说明:Linux下的磁盘分区工具。
语法:fdisk [-b<分区大小>][-uv][外围设备代号]
fdisk [-l] [-b<分区大小>][-uv] [外围设备代号…]
fdisk [-s<分区编号>]
参数:-b<分区大小>指定每个分区的大小;-l列出指定的外围设备之分区表状况;-s<分区编号>将指定的分区大小输出至标准输出上,单位为Block;-u用分区数目取代柱面数目,来标示每个分区的起止地址;-v显示版本信息。
15.find
说明:查找某个文件或者目录。
语法:find [目录…][-amin<分钟>][-atime<24小时数>][-ctime<24小时数>][-cmin<分钟>][-group<用户组名>][-mmin<分钟>][-mtime<24小时数>][-name<样式>][-print][-user<用户名>]
参数:-amin<分钟>查找在指定分钟内被访问过的文件或目录;-atime<24小时数>查找在指定小时内被访问过的文件或目录;-ctime<24小时数>查找在指定小时内创建的文件或目录;-cmin<分钟>查找在指定分钟内创建的文件或目录;-group<用户组名>查找属于该用户组的文件或目录;-mmin<分钟>查找在指定分钟内被修改过的文件或目录;-mtime<24小时数>查找在指定小时内被修改过的文件或目录;-name<样式>查找文件/目录名与样式相吻合的文件或目录;-print将查找结果显示在屏幕上;-user<用户名>查找属于该用户的文件或目录。
16.ls
说明:列出目录内容,包括文件和子目录名称。
语法:ls [-acGhlrRu][--color=<颜色方案>][--show-control-chars][文件/目录]
参数:-a显示所有文件和目录;-c按修改时间排序;-G不显示所属用户组信息;-h用KB、MB、GB为单位显示文件或目录的大小;-l显示详细信息,包括文件大小、修改时间等信息;-r反向排序;-R列出指定目录下所有的文件及子目录;-u按最后访问时间排序;--color=<颜色方案>使用不同颜色来区分不同的内容;--show-control-chars遇到控制字符也显示,若有中文名称时可用此参数。
17.mkdir
说明:新建一子目录。
语法:mkdir [-p][-m<目录属性>][目录名]
参数:-p如果要建立的目录的上一级目录尚未建立,则先建立这一级目录;-m<目录属性>建立目录时,同时设置其目录权限,格式与chmod命令同。
18.mount
说明:将文件系统加载到“/”中来。
语法:mount [-anrw][-t<文件系统>][设备名称][载入点]
参数:-a载入在/etc/fstab中描述的所有设备;-n载入信息不记录到日志文件/etc/mtab文件中;-r以只读的模式载入设备;-w以可读写模式载入设备;-t<文件系统>指定载入文件系统的类型,包括minix:Linux最早用的文件系统;ext2:Linux最常用的文件系统;msdos:MS-DOS的FAT16;vfat:Windows下的FAT32;nfs:网络文件系统;iso9660:CDROM文件系统格式;ntfs:Windows NT的文件系统;hpfs:OS/2的文件系统;auto:自动检测文件系统类型;[载入点]其实就是一个目录,请建立一个空目录,该目录中的内容就是你载入的文件系统内容。
19.mv
说明:将文件、目录移动到另一个目录中,或将其改名。
语法:mv [-bfiu][-S<字符串>][源文件或目录][目标文件或目录]
参数:-b当遇到要覆盖其他文件或目录时,将自动备份,备份文件名为原文件名加上-S参数指定的字符串,若未设置则加上“~”;-f出现重复情况,直接覆盖而不备份;-i当遇到要覆盖文件或目录时,总是询问用户;-u当要覆盖的文件或目录比源文件要新,则不覆盖目标文件;-S<字符串>指定备份文件名后要加上的字符串。
提示:当目标文件或目录与源文件或目录在同一目录下时,其实就成为了改名命令。
20.passwd
说明:设置用户账号密码。
语法:passwd [-dlSu][用户名称]
参数:-d删除密码;-l锁住账号;-S列出与密码相关的信息;-u解开已上锁的账号;[用户名称]要设置密码的用户账号,如果没有指定,则代表设置当前登录用户的密码。
注意:该命令只有root才能够使用。
21.pwd
说明:显示当前目录。
语法:pwd
22.quota
说明:显示磁盘已使用情况和磁盘限制信息。
语法:quota [-guvq]
quota [-uvq] user
quota [-gvq] group
参数:-g显示用户所属组的磁盘限制信息;-u显示用户的磁盘限制信息;-v显示在所有挂入文件系统的磁盘上的磁盘限制信息;-q只显示超过限制的部分。
23.rm
说明:用来删除文件、目录。
语法:rm [-fr]
参数:-f强制删除,不询问;-r递归处理,将会删除指定目录下的所有文件及子目录。
24.split
说明:分割文件。
语法:split [-b SIZE] [-C SIZE] [-l NUMBER] [-NUMBER] 源文件 目标文件
参数:-b SIZE设置输出文件的大小,以字节为单位,SIZE可以是数字+单位;-C SIZE设置每行的最大长度,以字节为单位;-l NUMBER设置输出文件的大小,以行为单位;-NUMBER作用与-l NUMBER一样。
25.umount
说明:用来将mount载入的文件系统卸载出去。
语法:umount [-ar][-t<文件系统类型>][文件系统]
参数:-a卸载/etc/mtab中记录的所有已载入文件系统;-r若卸载失败,则重新尝试将其mount成为只读模式;-t<文件系统类型>仅卸载指定类型的文件系统;[文件系统]文件系统mount时的载入点。
三、网络通讯
1.arp
说明:处理系统的ARP缓存,可以清除缓存中的地址映射,建立新的地址映射;
语法:arp [-v][-n][-H type][-i if] -a [hostname]
arp [-v][-i if] -d hostname [pub]
arp [-v][-H type][-i if] -s hostname hw_addr [temp]
arp [-v][-H type][-i if] -s hostname hw_addr [netmask nm] pub
arp [-v][-H type][-i if] -Ds hostname ifa [netmask nm] pub
arp [-v][-n][-D][-H type][-i if] -f [filename]
参数:-v显示详细信息;-n以数字地址形式显示;-i If选择界面;-H type设置和查询arp缓存时检查type类型的地址;-a [hostname]显示指定hostname的所有入口;-d hostname删除指定hostname的所有入口;-D使用ifa硬件地址界面;-s hostname hw_addr手工加入hostname的地址映射;-f filename从指定文件中读入hostname和硬件地址信息。
2.arping
说明:从源地址通过ping命令检查设备上的硬件地址。
语法:arping [-D][-U][-A][-c count][-w timeout][-q][-s source] -I interface address
参数:-D复制地址监测信息;-U用ARP REQUEST包更新网络邻居上的ARP缓存;-A与-U参数作用一样,区别为-A采用ARP REPLY包;-c count设置ping命令探测的次数;-w timeout经过timeout秒后停止ping命令;-q不显示任何信息;-s source设置ping的源地址;-I interface设置ping使用的网络接口;address设置目标地址。
3.arpsnmp
说明:对以太网卡地址和IP地址的匹配性进行监测,将结果记录在系统日志中。
语法:arpsnmp [-d][-f datefile]
参数:-d启动调试标志;-f设置记录以太网/IP地址数据库的文件,默认为arp.dat。
4.biff
说明:邮件监视程序。当邮件到达后,biff命令提醒用户,并显示邮件来源。
语法:biff [n][y]
参数:n当邮件到达以后,不提醒用户;y当邮件到达以后,提醒用户。
5.ftpcount
说明:显示目前登入FTP服务器的用户数。
语法:ftpcount
6.ftprestart
说明:重新启动FTP服务器。
语法:ftprestart
7.ftpshut
说明:在指定时间内关闭FTP服务器。
语法:ftpshut [-V][-l min][-d min] time [“警告信息”]
参数:-l min设置停止FTP登录的时间,默认是10分钟;-d min设置在几分钟后切断所有FTP连接,默认是5分钟;time让FTP服务器在time时间内关闭,now代表马上,数字代表分钟。
8.ifconfig
说明:显示网络设备的状态、设置网络设备的属性。
语法:ifconfig [网络设备][down up][io_addr ][irq ][netmask <子网掩码>][IP地址]
参数:[网络设备]说明要显示或设置的网络设备名,如eth0,第一张网卡;down将指定的网络设备停止工作;up将指定的网络设备重新启动到工作状态;[io_addr ]设置该设备的I/O地址;[irq ]设置该设备的IRQ地址;netmask <子网掩码>设置该设备的子网掩码;[IP地址]设置该设备的IP地址。
9.inetd
说明:网络服务器,inetd在系统启动时由/etc/rc启动,然后负责监听特定的网络端口,当某个端口出现了连接请求,inetd判断该端口对应于何种网络服务,然后调用相应的服务程序。
语法:inetd [-d][-R rate][configuration-file]
参数:-d允许调试;-R rate指定服务程序最大调用频率(次/每分钟),默认值是1000。
10.netstat
说明:显示网络状态。
语法:netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数:-a显示所有连接中的Socket;-c持续列出网络状态;-C显示路由配置的快取信息;-e显示网络其他相关信息;-F显示FIB,此为默认值;-g显示多重广播功能用户组名单;-h在线帮助;-i显示网络接口信息清单;-l显示监控中之服务器的Socket;-M显示伪装的网络连线;-n直接使用IP地址,而不通过域名服务器;-N显示网络硬件外围设备之符号连接名称;-o显示计时器;-p显示正在使用Socket的程序识别码和程序名称;-r显示路由表;-s显示网络工作信息统计表;-t显示TCP传输协议的连线情况;-u显示UDP传输协议的连线情况;-v显示指令执行过程;-w显示RAW传输协议的连线情况;-x此参数等于-A unix;-A<网络类型>列出该网络类型连线中的相关地址;--ip些参数等于-A inet。
11.ping
说明:可以用来检查是否可以与网络上的一台主机连通。
语法:ping [-fn][-c<连接次数>][-i<间隔时间>][-I<网络设备>]
参数:-f产生ping风暴,会对网络带来严重负担,仅限root用户使用,可用来统计数据包的丢包、误码率;-n只输出数值,不尝试获取主机名;-i<间隔时间>设定2个Ping信息包发出的间隔时间,单位为秒;-I<网络设备>当系统有多个设备时,可以用该参数指定某一网络设备。
12.rup
说明:显示主机状态,包括本地主机、网络主机及本地网络上的所有主机状态。
语法:rup [-dhlt][host…]
参数:-d显示网络主机的本地时间;-h按主机名的字母顺序显示信息;-l按主机的平均负载排序;-t按主机的系统运行时间排序。
13.traceroute
说明:显示数据包从本地主机到远程主机之间的路径。
语法:traceroute [-dFInrvx][-f first_ttl][-g gateway][-i iface][-m max_ttl][-p port][-q nqueries][-s src_addr][-t tos][-w waittime] host [packetlen]
参数:-d允许套接口级调试;-F设置禁止分隔标志位;-I用ICMP ECHO应答代替UDP数据报;-n直接用IP地址显示逐跳地址;-r绕过通常的路由表,直接和远程主机连接;-x开启/关闭对数据包的检查;-f first_ttl设置第一个对外发送数据包的TTL,范围从1~256;-g gateway指定自由的源网关,最多可以指定8个;-i iface用指定的网络接口发送数据包;-m max_ttl设置向外发送的数据包的最大TTL值,默认是30;-p port设置基本的UDP端口,默认值是33434;-s scr_addr设置本地主机发送数据报的IP地址;-t tos设置数据包的服务类型,有效范围是0~255,默认值是0;-w waittime设置等待数据包返回的时间,以秒为单位。
四、其他常用工具
1.bzip2
说明:bzip2是.bz2文件的压缩工具。
语法:bzip2 [-cdfkqstvVL][-1|-2|-3|-4|-5|-6|-7|-8|-9][filename]
参数:-c将文件压缩/解压缩到标准输出设备上;-d解压缩;-f如果现有的文件和解压缩的输出文件重名,强制覆盖已存在的文件;-k在解压缩以后保留输入文件(就是源文件);-q禁止不必要的警告信息;-s降低命令运行所需要的内存;-t检查文件的完整性;-v工作时显示详细信息;-V显示版本信息;-L显示License信息;-1~-9设置压缩的块大小,即100K~900K,不影响压缩过程。
2.cal
说明:显示简单日历。
语法:cal [-mjy][[mouth] year]
参数:-m视星期一为每周的第一天,默认为周日;-j以Julina形式显示,即不分月份,以每年1月1日为第一天;-y显示今年的所有月份的日历。
3.cdplay
说明:Linux下的播放工具。
语法:cdplay [-c device][-lns][play ][stop][table]
参数:-c device指定播放设备;-l等待外围设备初始化;-n禁止自动播放;-s禁音模式;play 从num轨道开始自动播放CD;stop停止播放CD;table从数据库中显示CD内容。
4.compress
说明:compress是.Z文件的压缩/解压缩工具。
语法:compress [-cdfrvV][-b<压缩效率>][文件或目录…]
参数:-c把压缩后的文件输出到标准输出设备,不去更改原始文件。默认情况compress指令会将文件直接压缩后,加上.Z扩展名,不保留原文件;-d对文件进行解压缩;-f强制保存压缩文件;-r递归处理,将指定目录下的所有文件和子目录一并处理;-v显示指令执行过程;-V显示指令版本及程序预设值;-b <压缩效率>9~16之间,默认为16,数字越大压缩出来的文件就越小,时间也越多。
5.grep
说明:在文件中查找符合条件的字符串。
语法:grep [-qrv][样式][文件/目录名…]
参数:-q不显示中间过程的任何信息;-r如果使用该选项,则会查找指定目录下的所有文件和子目录中的内容;-v反义查找,也就是找不包含的“样式”指定的字符串的列。
6.gzip
说明:压缩/解压缩文件,生成的压缩文件后缀名为“.gz”。
语法:gzip [-dfl][-<压缩效率>][文件…]
gzip [-dflr][-<压缩效率>][目录]
参数说明:-d解压缩;-f强行压缩文件,直接覆盖同名文件;-l列出压缩文件相关信息,包括压缩前后的大小、压缩率、压缩前的文件名等;-r将指定目录下所有的文件和子目录都压缩到该文件;-<压缩效率>是一个1~9的数值,数字越小、压缩越快,数字越大、压缩率越高。
7.tar
说明:是在Linux/Unix系统中最常用的一个建立、还原备份文件的工具。
语法:tar [-Acdkvx][-f <备份文件>][文件/目录…]
参数:-A新增文件到已存在的备份文件中;-c新建备份文件;-d比较备份文件中的与当前目录下的文件之间的差异;-k解开备份文件时,不覆盖已有文件;-v显示命令执行的过程;-x还原备份文件中的内容;-f <备份文件>指定备份文件名。
posted @ 2006-11-09 13:15 Alex’Sky 阅读(2510) 评论(0)
编辑
Windows CE 主要面向嵌入式开发,涉及硬件和底层的开发比较多,有很多工业级的设备,都是基于 Windows CE 的;Windows Mobile 主要面向移动计算的应用,用于智能手机和商用级的 Pocket PC 比较多,目前作为企业解决方案在移动领域的扩展;Windows XP Embedded 可以看成是 Windows XP 的可定制版本,目前我所了解的是,它在一些 POS 和银行终端应用比较多,它的优势是可以定制,企业可以根据自己的业务需要,将一些业务系统潜入到操作系统中,或者将一些 Windows 组件删除。
视频教料:
http://channel9.msdn.com/showpost.aspx?postid=252046
posted @ 2006-11-09 13:01 Alex’Sky 阅读(231) 评论(0)
编辑