搜索
您的当前位置:首页正文

GRUB

来源:爱go旅游网
GRUB

●Linux中常用的两个引导加载程序:GRUB和LILO。LILO是一直伴随Linux发布版本的,而GRUB是后来才引入的。从可用性上讲,GRUB更胜一筹。

●GRUB的工作原理:一般而言,GRUB包含两段引导加载程序:

1)stage1在MBR中安装(长度为446字节),它的目的是加载和执行下面的stage2。 2)stage2加载并执行内核(显示引导菜单,并提供一个简单的可用来指定内核位置等的Shell环境)

●GRUB的配置文件:grub.conf(视发布版本不同,其具体名称和位置可能不同,如SUSE中配置文件的名字是menu.1st)。可以通过配置该文件改变Linux的引导程序。配置文件每行以一个关键字开始,grub.conf中主要的四个关键字:

1)title:表示一个菜单选项,后面接着的文字显示在GRUB菜单上(通常是一些注释性信息)

2)root:指定引导目录所在分区

3)kernel:指定引导内核选项,包括内核的路径和其他一些启动选项 4)initrd:建立一个内存镜像文件

●在开机时怎样编辑GRUB菜单?

选中要修改的菜单项,然后按“e”键,这样你就可以编辑该菜单项了。完成编辑之后,按回车键即可返回(如果不需要保存编辑内容,则按“ESC”键返回)。如果要按新修改的配置继续引导系统,按“b”键就可以了。

●怎样通过GRUB进入单用户模式?

单用户模式很重要,比如当你忘记了系统密码的时候。在GRUB中要进入单用户模式很简单,只需要编辑菜单中的内核(kernel)行,在此行结尾添加single即可。Linux支持的另一种维护模式是紧急模式,进入它的操作方法与单用户模式类似,只是把single替换为emergency即可。

●怎样在GRUB中导入一个不在菜单上的内核?

有时候我们希望导入一个新的内核,而这个内核并不在菜单上,所以我们不能通过简单的选择来启动。GRUB提供了对此的支持,你只需要按“c”键就好了。按“c”键后,你可以自行输入新内核的root,kernel,initrd行(如果你不太记得清楚具体的分区或内核位置,你也用不着慌,因为在这里GRUB支持命令补全,试试Tab键吧)

●怎样创建GRUB引导盘?

当GRUB不能正常启动或者菜单无法正常显示时,你肯定很希望得到一张GRUB引导盘,否则你的系统就很难启动了。创建引导盘其实不难,你可以创建启动软盘或光盘。 1)创建软盘的方式: #cd usrsharegrubi386-pc

#dd if=stage1 of=devfd0 bs=512 count=1 #dd if=stage2 of=devfd0 bs=512 seek=1 2)创建光盘的方式: #mkdir iso

#mkdir -p isobootgrub

#cp usrlibgrubi386-pcstage2_eltorito isobootgrub

#mkisofs -R -b bootgrubstage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso

再将grub.iso刻录到CD。(注意GRUB的版本要求在0.97之上)

linux init详解

Linux init详解 一、什么是INIT:

init是Linux系统操作中不可缺少的程序之一。 所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结

构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一

个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/

sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也 会失败。 二、运行级别

那么,到底什么是运行级呢?

简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同 的功能。

不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab) # 0 - 停机(千万不能把initdefault 设置为0 ) # 1 - 单用户模式 # 2 - 多用户,没有 NFS

# 3 - 完全多用户模式(标准的运行级) # 4 - 没有用到 # 5 - X11 (xwindow)

# 6 - 重新启动 (千万不要把initdefault 设置为6 )

这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运

行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位

于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的 n 就是运行级0-6) 三、运行级别的配置

运行级别的配置是在/etc/inittab行内进行的,如下所示: 12 : 2 : wait : / etc / init.d / rc 2 第一个字段是一个任意指定的标签;

第二个字段表示这一行适用于运行那个级别(这里是2);

第三个字 段表示进入运行级别时,init应该运行第四个字段内的命令一次,而且init应

该等待该命令结束。/etc/init.d/rc命令运行启动和终止输入以便进入运行级别2时所需的任 何命令。

第四个字段中的命令执行设置运行级别时的一切“杂活”。它启动已经没有运行的服务

,终止不应该再在新运行级别内运行的服务。根据Linux版本的不同,采用的具体命令也不同

,而且运行级别的配置也是有差别的。

init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级别: id : 2 : initdefault :

你可以要求init在启动时,进入非默认运行级别,这是通过为内核指定一个“single”

或“emergency” 命令行参数来实现的。比如说,内核命令行参数的指定可通过LILO来执行

。这样一来,你就可以选择单用户模式了(即运行级别1)。

系统正在运行时,telinit命令可更改运行级别。运行级别发生变化时, init 就会从/

etc/inittab运行相应的命令。 四、/etc/inittab中的特殊配置

/etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是

用第三个字段中的特殊关键字标记出来的。比如: 1. powerwait

允许init在电源被切断时,关闭系统。其前提是具有U P S和监视U P S并通知init电源

已被切断的软件。 2. ctrlaltdel

允许init在用户于控制台键盘上按下C t r l + A l t + D e l组合键时,重新启动系统

。注意,如果该系统放在一个公共场所,系统管理员可将C t r l + A l t + D e l组合键配

置为别的行为,比如忽略等。 3. sysinit

系统启动时准备运行的命令。比如说,这个命令将清除/tmp。

上面列出的特殊关键字尚不完整。其他的关键字及其使用详情,可参考你的inittab手册 页。

五、在单用户模式下引导

一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使

用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务

(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能

的,除非所有的服务系统已被杀死。

一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核

启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也

为init指定命令行, init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入

方式和你启动系统的方式有关)。

有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装

入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为

分散,所以应该尽可能地运行fsck)。

如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样

做是为了防止系统使用不连贯的文件系统,这个文件系统是f s c k不能自动修复的。文件系

统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做

到防患于未然。

由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户

提供root密码。否则,它会简单地为L I L O输入合适的一行代码,以r o o t的身份登录(

当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对

付这种情况,你最好随时准备一张启动盘)。

不同的运行级有不同的用处,也应该根据自己的不同情形来设置。

例如,如果丢失了root口令,那么可以让机器启动进入单用户状态。在启动后的 lilo

提示符下输入:

init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有

系统认证,让你可以使用passwd 程序来改变root口令,然后启动到一个新的运行级。

绝对好用Linux操作系统的8个经典技巧

绝对好用Linux操作系统的8个经典技巧 1、处理特殊的文件名

假设Linux系统中有一个文件名叫“-ee”,如果我们想对它进行操作,例如要删除它,按照一般的删除方法在命令行中输入rm -ee命令,界计算机会提示我们是“无效选项”(invalid option),原来由于文件名的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这个问题,输入“rm -- -ee”命令便可顺利删除名为“-ee”的文件。如果是其他特殊字符的话可以在特殊字符前加一个“”符号,或者用双引号把整个文件名括起来。 2、直接进行Linux的安装工作

在安装Linux操作系统时,可以利用该系统光盘中的一个名为“loadlin.exe”的软件,将Linux核心直接调入内存,由Linux核心代替当前操作系统来接管计算机,并进入Linux的安装界面。在安装Linux时,我们只要在运行对话框中输入“loadlin E:imagesvmlinuz root=/dev/ram initrd=E:imagesinitrd.img”这个命令就可以直接安装Linux了;其中“E:imagesvmlinuz”为Linux的核心名。 3、消除Xwindows下的死机现象

我们可以用两个常用的方法来消除这种现象:第一,用键盘上的复合键“Ctrl+Alt+Backspace”来关闭当前正在运行的任务;第二,首先按住键盘上的“Ctrl+Alt+F2”复合键,让系统切换到另一个操作台,然后登录到系统,再执行“#ps -ax/grep startx”命令,这将会列出你的Xserver的进程标识,接着在命令行中输入如下命令就能消除Xwindows下的死机现象:#kill -9 PID_Number,最后通过“Alt+F1”复合键返回到原来的平台。 4、快速关闭Linux系统

最新版本的Linux/UNIX系统借鉴了大型机的技术,采用了抗掉电的日志式文件系统,可以自动跟踪保存用户数据,自动同步刷新文件系统,用户完全可以随手关闭电源,从而达到快速关闭系统的目的。 5、巧妙使用“rm”命令

我们可以使用计算机“-r”参数的“rm”命令来删除一个非空目录,例如我们在命令行中输入“rm -r bbb”这样的命令,表示系统将把bbb目录中包含的所有文件和子目录全部删除掉。 6、巧妙使用“Tab”键

大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个地输入字符,比较计算机烦。假设键入的字符足以确定该目录下一个惟一的文件时,我们只需按键盘上的“Tab”键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc下的文件“ddddddd-1.2.3.tar.gz”解包时,当我们在命令行中键入到“tar xvfz /ccc/d”时,如果该文件是该目录下惟一以“d”打头的文件的话就可以直接按下“Tab”键,这时命令会被自动补齐为:tar xvfz /ccc/ddddddd-1.2.3.tar.gz ,从而提高了输入效率。

7、多用鼠标拷贝与粘贴来提高操作速度

Linux系统安装后,每次启动到字符界面时都会自动运行一个叫“gpm”的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的地方突出显示,这时突出显示的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux 系统,拷贝与粘贴的操作与在Windows 9x系统下一样。 8、快速启动Linux系统

在DOS下,有一种简单快速启动Linux的方法,那就是load Linux。loadlin.exe是DOS下的可执行程序,它可以在纯DOS环境下迅速启动Linux,而且无需重启计算

机,通常我们可以在光盘的 “/kernels”目录下找到这个程序。如果不知这个程序被放置于安装盘的何处,可以使用“find -name loadlin*”命令来寻找。找到之后将其复制到DOS分区中,同时还需要复制一份你所使用的Linux内核文件。可以通过Windows直接从光盘复制,也可在Linux环境下使用“mcopy”命令将文件复制到DOS分区;接着再编写一个名为“Linux.bat”的批处理文件,文件内容如下:c: loadlin c:vmlinuz root=/dev/hda1 ro(我们假设loadlin.exe和vmlinuz这两个内核文件都在c盘根目录下,“root”为Linux的根设备,而且Linux处于硬盘第一分区,所以设备名为“/dev/hda1”,“ro”意为readonly)。以后在DOS下要启动Linux时,运行“Linux.bat”就可以了。 目录

第1部分 Linux基础 第1章 LINUX简介 1 1.1 Linux简介 1

1.1.1 UNIX操作系统的诞生 1 1.1.2 Minix操作系统 2 1.1.3 GNU早期简史 3 1.1.4 POSIX标准历史 3 1.1.5 Linux概述 4

1.1.6 Linux和开源软件的商业化 5 1.1.7 Linux和开源软件的商业模式 6 1.2 Linux内核和Linux发行版本 7 1.2.1 Linux发行版本概述 7 1.2.2 Linux内核的变迁 8 1.2.3 Linux主要发行版本 9 1.3 Linux的优势 12

1.4 小结 14

第2部分 从系统管理角度学习Linux命令 第2章 LINUX文件系统及其相关处理命令 15 2.1 Linux的文件系统介绍 15 2.1.1 文件系统定义 15

2.1.2 Linux文件系统的体系结构 15 2.1.3 Linux文件系统结构 16 2.1.4 /proc文件系统 18 2.1.5 Linux文件系统的组成 19 2.1.6 文件类型 20 2.1.7 文件系统的特性 21 2.1.8 Linux主流文件格式 22

2.2 查看当前Linux支持的文件类型 26 2.2.1 ls:显示文件名 26 2.2.2 cat:显示文本文件内容 28 2.2.3 rm:删除文件 30 2.2.4 less:分屏显示文件 30 2.2.5 cp:复制文件 31 2.2.6 mv:更改文件名 33 2.2.7 grep:查找字符串 33 2.2.8 head:显示文件头部 35 2.2.9 tail:显示文件尾部 35 2.2.10 sort:按顺序显示文件内容 36 2.2.11 uniq:忽略文件中的重复行 37

2.2.12 diff:比较两个文件 37 2.2.13 diffstat命令:diff结果的统计 2.2.13 信息 39

2.2.14 file:测试文件内容 39 2.2.15 echo:显示文本 40 2.2.16 date:显示日期和时间 41 2.2.17 script:记录Linux会话信息 42 2.2.18 apropos:搜索关键字 43 2.2.19 locate:搜索文件 43 2.2.20 rmdir:删除目录 44

2.2.21 basename:显示文件或者目录的 2.2.21 基本名称 44

2.2.22 chattr:改变文件的属性 45 2.2.23 cksum:文件的CRC校验 46 2.2.24 cmp:比较文件差异 47 2.2.25 split:分割文件 47

2.2.26 dirname:显示文件除名字外的 2.2.26 路径 48

2.2.27 find:查找目录或者文件 48 2.2.28 findfs:通过列表或用户ID查找 2.2.28 文件系统 49

2.2.29 ln:链接文件或目录 50 2.2.30 lndir:链接目录内容 51 2.2.31 lsattr:显示文件属性 51

2.2.32 od:输出文件内容 52 2.2.33 paste:合并文件的列 53 2.2.34 stat:显示inode内容 53 2.2.35 tee:读取标准输入到标准输出 2.2.35 并可保存为文件 54

2.2.36 tmpwatch:删除临时文件 54 2.2.37 touch:更新文件或目录时间 54 2.2.38 tree:以树状图显示目录内容 55 2.2.39 umask:指定在建立文件时预设 2.2.39 的权限掩码 56

2.2.40 chmod:设置文件或者目录的 2.2.40 权限 58

2.2.41 chgrp:改变文件或者目录所属的 2.2.41 群组 60

2.2.42 chown:改变文件的拥有者或者 2.2.42 群组 60 2.3 小结 61

第3章 LINUX磁盘管理及其相关命令 62 3.1 硬盘相关的概念 62 3.1.1 硬盘及其组成 62 3.1.2 硬盘的性能指标 64 3.1.3 硬盘接口方式 65

3.1.4 Linux服务器硬盘的选择 67 3.2 Linux磁盘分区 67

3.2.1 df:磁盘信息 69

3.2.2 du:显示目录或者文件所占的 3.2.2 磁盘空间 70

3.2.3 dd:磁带驱动操作 71 3.2.4 fdisk:磁盘分区 74 3.2.5 mount:加载文件系统 75 3.2.6 umount:卸载文件系统 77 3.2.7 mkfs:建立各种文件系统 77 3.2.8 1mkfs.ext2:建立一个ext2/ext3 3.2.8 文件系统 78

3.2.9 mkbootdisk:建立启动盘 79 3.2.10 fsck:检查文件系统 79 3.2.11 fsck.ext2:检查文件系统 80 3.2.12 hdparm:设置磁盘参数 81 3.2.13 mkswap:建立交换分区 82 3.2.14 dump:备份文件系统 83 3.2.15 restore:还原文件 84 3.2.16 sync:写入磁盘 84 3.2.17 e2label:设置卷标 85 3.2.18 badblock:检查磁盘 85 3.2.19 quota:显示磁盘已使用的空间 3.2.19 与限制 85

3.2.20 quotacheck:检查磁盘的使用 3.2.20 空间与限制 86

3.2.21 quotaoff:关闭磁盘空间限制 86 3.2.22 quotaon:开启磁盘空间限制 87 3.2.23 quotastats:显示磁盘空间的限制 87 3.2.24 repquota:检查磁盘空间限制的 3.2.24 状态 87

3.2.25 mdadm:RAID工具 88 3.2.26 parted:磁盘分区工具 90 3.3 Linux磁盘操作实战 91 3.3.1 为Linux添加新硬盘 91 3.3.2 Linux服务器磁盘配额配置 94 3.3.3 优化Linux系统硬盘 99 3.4 RAID和LVM 101

3.4.1 Linux下软件RAID配置 101 3.4.2 LVM基础 105 3.4.3 LVM配置实战 108 3.4.4 LVM和RAID配合使用 115 3.5 总结 119

第4章 LINUX进程及其管理命令 120 4.1 Linux进程的基础 120 4.1.1 进程的基本概念 120 4.1.2 进程的属性 120

4.1.3 理解Linux下进程的结构 121 4.1.4 进程状态 121 4.1.5 Linux进程的创建 121

4.1.6 进程的管理 122

4.1.7 Linux的第一个进程:init 123 4.1.8 Linux的线程简介 126 4.2 理解Linux守护进程 127 4.2.1 守护进程简介 127 4.2.2 查看守护进程的方法 128 4.2.3 100个最常见Linux守护进程 4.2.3 简介 128

4.2.4 Linux守护进程工作原理和方式 132 4.3 Linux进程管理命令详解 135 4.3.1 at:定时运行命令 135 4.3.2 bg:后台运行命令 136 4.3.3 fg:挂起程序 136 4.3.4 jobs:显示后台程序 137 4.3.5 kill:终止进程 137

4.3.6 crontab:安装、删除或列出 4.3.6 任务表 138 4.3.7 ps:查看权限 139

4.3.8 pstree:列出当前进程的树状 4.3.8 结构 141

4.3.9 top:显示进程 141 4.3.10 nice:改变权限优先级 143 4.3.11 renice:修改优先级 143 4.3.12 sleep:暂停进程 144

4.3.13 nohup:用户退出系统之后 4.3.13 继续工作 144

4.3.14 pgrep:查找当前进程并列出 4.3.14 匹配给定条件的进程pid 144 4.3.15 chkconfig:设置系统的各种服务 145 4.4 总结 146

第5章 LINUX网络体系及其相关命令 147 5.1 Linux网络体系简介 147 5.1.1 OSI模型 147 5.1.2 OSI七层功能说明 149 5.1.3 TCP/IP模型 152 5.1.4 IP寻址、子网和路由 154 5.2 Linux网络基础 157 5.2.1 Linux网络结构的特点 157 5.2.2 Linux下端口号分配 159 5.2.3 Linux的TCP/IP网络配置 161 5.3 Linux网络管理命令详解 162 5.3.1 arp:管理系统中的ARP高速 5.3.1 缓存 162

5.3.2 arpwatch:监听ARP记录 163 5.3.3 ADSL:调制解调器命令 164 5.3.4 ifconfig:设置网络接口 164 5.3.5 iwconfig:设置无线网卡 165 5.3.6 hostname:显示主机名 169

5.3.7 ifup:激活设备 170 5.3.8 ifdown:禁用网络设备 170 5.3.9 mii-tool:调整网卡模式 171 5.3.10 route:设置路由表 172 5.3.11 netstat:查看网络连接 173 5.3.12 ping:检测网卡接口 174 5.3.13 minicom:设置调制解调器 175 5.3.14 pppd:建立ppp连接 176 5.3.15 pppstats:显示ppp连接状态 177 5.3.16 chat:拨号命令 178

5.3.17 traceroute:显示数据包到主机间 5.3.17 的路径 178 5.3.18 rcp:远程复制 179

5.3.19 finger:查找并显示用户信息 179 5.3.20 tcpdump:网络数据分析器 180 5.3.21 ip:网络集成命令工具 181 5.3.22 yum:软件包管理 182 5.3.23 apt:管理套件的工具 186 5.4 通过Linux命令行进行网络操作 188 5.4.1 配置Linux的TCP/IP配置 188 5.4.2 Linux服务器的静态路由配置 193 5.4.3 Linux异构网络共享ADSL连接 5.4.3 及其故障排除 197

5.4.4 Linux命令行下发送带有附件的

5.4.4 邮件 204

5.4.5 掌握Linux命令行下载工具 206 5.4.6 掌握Linux命令行网络监控工具 213 5.5 掌握Linux 命令行嗅探器工具 223 5.5.1 Linux嗅探器简介 223 5.5.2 使用Tcpdump 225 5.5.3 嗅探器的防范 228

第6章 LINUX用户管理及其相关命令 232 6.1 Linux用户管理简介 232 6.1.1 Linux多用户、任务系统 232 6.1.2 Linux用户(user)和用户组 6.1.2 (group)概念 233

6.1.3 Linux用户、组及私有用户组 234 6.1.4 理解Linux用户配置文件 236 6.1.5 理解Linux用户组配置文件 237 6.1.6 Linux用户相关配置文件 239 6.1.7 定制Linux系统环境变量 241 6.2 Linux用户管理命令 243 6.2.1 useradd:建立用户 243 6.2.2 userdel:删除用户 244

6.2.3 usermod:修改已有用户信息 244 6.2.4 passwd:设置密码 245 6.2.5 chage:密码老化 246 6.2.6 groupadd:添加组 246

6.2.7 groupdel:删除组账户 247 6.2.8 groupmod:修改组 247

6.2.9 vipw:编辑/etc/passwd文件 247 6.2.10 vigr:编辑/etc/group文件 248 6.2.11 newgrp:转换组 248 6.2.12 groups:显示组 248 6.2.13 gpasswd:添加组 248

6.2.14 whoami:显示当前用户名称 249 6.2.15 who:显示登录用户 249 6.2.16 id:显示用户信息 250 6.2.17 su:切换身份 250 6.2.18 pwck:检测账户 251 6.2.19 grpck:检测用户组账号信息 6.2.19 完整性 251

6.2.20 chsh:设置shell 251 6.2.21 chfn:修改用户信息 252 6.3 Linux用户管理实例 253 6.3.1 Linux用户管理小技巧 253 6.3.2 配置sudo让Linux用户管理 6.3.2 更加安全 257

6.3.3 为Linux用户配置PAM 262 6.3.4 Linux用户安全策略 271 第7章 LINUX的备份和压缩及其相关 第7章 命令 276

7.1 Linux备份恢复基础 276 7.1.1 什么是备份 276 7.1.2 备份的重要性 276 7.1.3 备份前需考虑的因素 276 7.1.4 选择备份介质 277 7.1.5 Linux备份策略 278 7.1.6 确定要备份的内容 279 7.2 Linux下压缩文件格式简介 280 7.2.1 .arc格式 281 7.2.2 .arj格式 281 7.2.3 .lzh(.lha)格式 282 7.2.4 .rar格式 282 7.2.5 .zip格式 283

7.2.6 压缩文件相关网址 284

7.3 Linux的备份和压缩及其相关命令 285 7.3.1 tar:备份文件 285 7.3.2 dump:备份文件系统 287 7.3.3 cpio(copy in/out):备份文件 288 7.3.4 restore:还原备份下来的文件或 7.3.4 整个文件系统(一个分区) 290 7.3.5 ar:建立、修改或从档案文件中 7.3.5 提取文件 291

7.3.6 bunzip2:解压缩.bz2文件 292 7.3.7 bzip2:解压缩.bz2文件 293

7.3.8 unzip:解压缩zip文件 293 7.3.9 bzip2recover:损坏bz2文件的 7.3.9 修复 294

7.3.10 gzip:压缩文件 294

7.3.11 compress:压缩、解压文件 295 7.3.12 gzexe:压缩执行文件 296 7.3.13 lha:压缩或解压缩文件 296 7.3.14 unarj:解压缩文件 297 7.3.15 zip:压缩文件 297

7.3.16 zipinfo:显示压缩文件的信息 298 7.4 Linux命令行数据备份实例 299 7.4.1 Linux磁带机备份攻略 299 7.4.2 用mirrordir做硬盘分区镜像 309 7.4.3 使用partimage备份恢复Linux 7.4.3 分区 310

7.4.4 使用afio工具备份 311 7.4.5 在RHEL 5中使用Amanda实现 7.4.5 服务器及客户端备份 312 7.4.6 使用cfengine工具备份Linux 7.4.6 服务器 320

7.4.7 部署开源磁盘备份服务器rsync 330 第8章 LINUX系统管理命令 336 8.1 Linux启动过程 336 8.1.1 Linux的启动过程详解 336

8.1.2 Linux运行级 339 8.1.3 /etc/inittab文件详解 340 8.1.4 init和/etc/inittab 342 8.2 Linux引导加载程序:LILO和 8.2 GRUB 343 8.2.1 LILO 343 8.2.2 GRUB 347

8.3 Linux系统管理命令详解 359 8.3.1 apmd:高级电源管理 359 8.3.2 apmsleep:APM进入休眠状态 360 8.3.3 apropos:查找使用手册的名字 8.3.3 和相关描述 360

8.3.4 arch:输出主机的体系结构 360 8.3.5 alias:设置别名 361 8.3.6 batch:执行批处理命令 361 8.3.7 cd:切换目录 362 8.3.8 chkconfig:设置服务 362 8.3.9 clear:清除终端屏幕 363 8.3.10 clock:系统RTC时间设置 363 8.3.11 cal:显示日历 364 8.3.12 chroot:改变根目录 364 8.3.13 date:显示或设置系统时间 365 8.3.14 dmesg:显示开机信息 366 8.3.15 dircolors:设置ls命令在显示 8.3.15 目录或文件时所用色彩 367

8.3.16 depmod:分析模块 367 8.3.17 echo:显示文本行 367 8.3.18 exec:执行完命令后,交出 8.3.18 控制权 368 8.3.19 exit:退出shell 368 8.3.20 eject:弹出介质 369 8.3.21 enable:关闭shell命令 369 8.3.22 fgconsole:显示虚拟终端的数目 370 8.3.23 free:显示内存信息 370 8.3.24 fuser:使用文件或文件结构识别 8.3.24 进程 370

8.3.25 getty:设置终端机模式 371 8.3.26 gdialog:从shell显示文本信息 372 8.3.27 git:文件管理员 372 8.3.28 halt:关闭系统 372 8.3.29 history:显示历史命令 373 8.3.30 hwclock:显示与设定硬件时钟 374 8.3.31 init:进程处理初始化 374 8.3.32 last:显示登录用户信息 375 8.3.33 lilo:引导管理器 376 8.3.34 login:登录系统 376

8.3.35 local:显示本地支持的语言系统 8.3.35 信息 377

8.3.36 logname:显示登录账号的信息 377

8.3.37 logout:退出系统 378 8.3.38 lsmod:显示Linux内核的模块 8.3.38 信息 378

8.3.39 lsattr:显示文件在Linux第二 8.3.39 扩展文件系统上的特有属性 378 8.3.40 modinfo:显示内核信息 379 8.3.41 modprobe:自动处理可载入 8.3.41 模块 379

8.3.42 ntsysv:设置系统的各种服务 380 8.3.43 pmap:显示程序的内存信息 380 8.3.44 procinfo:显示系统状态 381 8.3.45 pwd:显示工作目录 382 8.3.46 reboot:重新启动系统 382 8.3.47 rlogin:远程登录 383 8.3.48 rmmod:删除模块 383 8.3.49 rpm:软件包管理 384 8.3.50 shutdown:系统关机命令 388 8.3.51 sleep:延迟指定数量的时间 388 8.3.52 suspend:暂停执行shell 389 8.3.53 swatch:系统监控程序 389 8.3.54 tload:显示系统负载 389 8.3.55 uname:显示系统信息 390 8.3.56 authconfig:配置系统的认证 8.3.56 信息 390

8.3.57 declare:显示或者设定shell 8.3.57 变量 392

8.3.58 enable:可用的shell内置命令 393 8.3.59 export:设置或者显示环境变量 393 8.3.60 hostid:打印出当前主机的标识 394 8.3.61 insmod:载入模块 394 8.3.62 rdate:显示其他主机的日期与 8.3.62 时间 394

8.3.63 runlevel:显示执行等级 395 8.3.64 set:设置shell 395

8.3.65 setconsole:设置系统终端 396 8.3.66 setenv:查询或显示环境变量 397 8.3.67 setserial:设置或显示串口的相关 8.3.67 信息 397

8.3.68 setup:设置公用程序 397 8.3.69 sync:将内存缓冲区内的数据 8.3.69 写入磁盘 398

8.3.70 startx:启动X Window 398 8.3.71 sysctl:设置系统核心参数 399 8.3.72 timeconfig:设置时区 399 8.3.73 ulimit:控制shell程序的资源 400 8.3.74 unalias:删除别名 401 8.3.75 unset:删除变量或函数 402 8.3.76 up2date:软件包升级工具 402

8.3.77 uptime:告知系统运行了多长 8.3.77 时间 403

8.3.78 mousconfig:设置鼠标相关参数 403 8.3.79 bind:显示或设置键盘按键与其 8.3.79 相关的功能 404

8.3.80 kbdconfig:设置键盘类型 405 8.3.81 snapscreenshot:命令行截图 405 8.3.82 mt:磁带机控制 405 8.3.83 cdrecord:刻录工具 406 8.3.84 dvdrecord:DVD刻录工具 407 8.3.85 lspci:查看硬件插槽 407

8.3.86 sane-find-scanner:扫描仪搜索 408 8.3.87 scanimage:检测扫描仪型号 409 8.3.88 mtools:命令集 409 8.3.89 whereis:查找文件 410 8.3.90 ytalk:与其他用户交谈 411 8.4 Linux系统性能监控 411 8.4.1 性能监控的重要性和方法 411 8.4.2 系统负载监测 413 8.4.3 Linux进程运行的监测 415 8.4.4 内存使用情况监测 416 8.4.5 中央处理器使用情况监测 418 8.4.6 使用iostat监测I/O性能 420 8.4.7 网络性能的监测 422

8.4.8 使用sar工具 424 8.4.9 使用nmon工具 428

8.4.10 Linux内存泄漏及其回收 434 第9章 LINUX服务器管理命令 437 9.1 Linux服务器市场近况 437 9.2 apache服务器应用命令 440 9.2.1 apache服务器管理命令 440 9.2.2 Apache服务器日志管理命令 450 9.2.3 Apache日志管理命令 453 9.3 dns服务器管理命令 459

9.3.1 dns服务器启动、停止、重新启动 9.3.1 命令 459

9.3.2 Bind DNS服务器管理、检查查询 9.3.2 命令 461

9.3.3 Bind DNS服务器辅助工具dlint 9.3.3 和dnstop 475 9.4 NFS服务器管理命令 478

9.4.1 nfsd:NFS服务器启动?停止命令 478 9.4.2 portmap:portmap守护程序将 9.4.2 RPC程序号转换成因特网端口号 478 9.4.3 rpcinfo:报告远程过程调用 9.4.3 (RPC)服务器的状态 479 9.4.4 showmount:显示远程已安装文件 9.4.4 系统的所有客户机的列表 480

9.4.5 umount:删除当前已挂载的远程 9.4.5 文件系统 481

9.4.6 mount:mount命令将已命名的 9.4.6 文件系统(本地或远程)连接到 9.4.6 指定的挂载点 481

9.4.7 automount:安装自动安装点 482 9.4.8 mountall:挂载一组文件系统 482 9.4.9 exportfs:重新分享/etc/exports 9.4.9 变更的目录资源 483 9.5 samba服务器管理命令 483 9.5.1 启动samba服务器 483 9.5.2 testparm:检查smb.conf配置 9.5.2 文件的内部正确性 484

9.5.3 smbd(samba daemon):samba 9.5.3 服务器程序 485

9.5.4 smbclient:类似FTP操作方式 9.5.4 的访问smb/cifs服务器资源的 9.5.4 客户端 485

9.5.5 smbstatus:报告当前samba的 9.5.5 连接状态 487

9.5.6 smbmount:装载一个smbfs文件 9.5.6 系统 488

9.5.7 smbpasswd:设置用户的SMB 9.5.7 密码 489

9.6 SSH服务器管理命令 490 9.6.1 SSH服务器启动停止命令 490 9.6.2 SSH客户端命令 494 9.7 squid服务器管理命令 498 9.7.1 squid:代理服务器squid守护 9.7.1 进程 498

9.8 DHCP服务器管理命令 500

9.8.1 dhcpd:DHCP服务器守护进程 500 9.8.2 dhclient:DHCPv6客户端守护 9.8.2 进程 501

9.8.3 dhcp6c:DHCPv6客户端守护 9.8.3 进程 501

9.9 FTP服务器管理命令 501 9.9.1 FTP服务器管理命令 501 9.9.2 FTP客户端命令 504 9.10 E-mail服务器管理命令 507 9.10.1 sendmail:为本地或网络交付 9.10.1 传送邮件 507

9.10.2 mail:E-mail管理程序 509 9.10.3 mailq:显示待寄邮件的清单 510 9.10.4 mailstats:显示关于邮件流量的 9.10.4 统计信息 511

9.10.5 mutt:E-mail管理程序 512 9.10.6 Sendmail邮件服务器性能控制 513

9.11 Linux防火墙管理工具iptables 515 9.11.1 iptables:Linux防火墙管理工具 515 9.11.2 ip6tables:ipv6版本的iptables 9.11.2 工具 521

9.11.3 iptables-save:iptables列表存储 521 9.11.4 iptables-restore:装载由iptables- 9.11.4 save保存的规则集 521 9.11.5 iptables配置企业应用 522 9.12 xinetd和Linux服务器工作方式 9.12 的关系 524 9.12.1 什么是xinetd 524 9.12.2 xinetd的特色 524

9.12.3 使用xinetd启动守护进程 525 9.12.4 解读/etc/xinetd.conf和/etc/ 9.12.4 xinetd.d/* 526 9.12.5 配置xinetd 527

9.12.6 Linux下服务器运行的两种模式 532 9.12.7 xinetd防止拒绝服务攻击 9.12.7 (Denial of Services)的原因 533 第10章 LINUX打印系统及其相关命令 535 10.1 Linux打印系统发展路线图 535 10.1.1 PostScript语言 535 10.1.2 BSD LPD打印系统 537 10.1.3 LPRng打印系统 538

10.1.4 通用UNIX打印系统(CUPS) 538 10.1.5 Linux打印过程 540 10.2 配置CUPS打印系统 541

10.2.1 打印机驱动程序查询和安装 541 10.2.2 配置CUPS打印系统 542 10.2.3 使用Red Hat Linux打印配置 10.2.3 管理工具 545 10.2.4 重要资料 550

10.3 Linux打印系统相关命令 551 10.3.1 redhat-config-printer-tui: 10.3.1 打印机配置字符界面工具 551 10.3.2 cupsd:通用打印程序守护进程 552 10.3.3 lpadmin:配置LP打印服务 553 10.3.4 lp:打印 554

10.3.5 lpstat:显示行式打印机状态 10.3.5 信息 555

10.3.6 lpr:排队打印作业 556 10.3.7 lprm:打印队列删除任务 556 10.3.8 Lpc:控制打印机 557 10.3.9 lpq:检查假脱机队列 558 10.3.10 lpinfo:显示驱动和设备 558 10.4 Linux打印技巧 559

10.4.1 为Linux添加虚拟PDF打印机 559 10.4.2 Linux下应用Windows打印机 561

10.4.3 Linux打印故障排除 563 10.5 总结 563

第3部分 Linux开发编程中 需要使用的命令

第11章 LINUX库应用及其相关命令 564 11.1 Linux库简介 564 11.1.1 Linux库的定义 564 11.1.2 Linux库的种类 564 11.1.3 Linux库的命名和编号 566 11.1.4 常用的Linux库 567 11.1.5 目标文件和库 568 11.2 Linux库命令 569

11.2.1 ldconfig:配置查找共享库 569 11.2.2 nm:列举目标文件中的符号名 571 11.2.3 ar:建立修改文件或从文件中 11.2.3 抽取成员 572

11.2.4 strip:去除目标文件中的无用 11.2.4 信息 574

11.2.5 objdump:展开目标文件、 11.2.5 静态库和共享库中的信息 575 11.2.6 ldd:显示共享库的依赖情况 576 12.2.7 diff:找出两个文件的不同点 577 11.2.8 patch:修补文件 579 11.3 Linux库编程应用 580

11.3.1 构建共享库 580 11.3.2 安装共享库 581 11.3.3 应用实例 582

11.3.4 新安装一个库后如何让系统 11.3.4 找到 583

11.3.5 可执行程序在执行的时候如何 11.3.5 定位共享库文件 583 11.3.6 深入了解共享库 583 11.3.7 保持库兼容的建议 583 11.3.8 在共享库中载入函数 584 11.4 Linux库升级 585 11.4.1 为什么要升级库 585 11.4.2 gcc库升级过程 586

第12章 LINUX开发常用命令GCC和 第12章 MAKE 589 12.1 gcc基础 589 12.1.1 gcc简介 589

12.1.2 gcc支持的基本语言 590 12.1.3 gcc支持平台 592 12.1.4 gcc安装 592 12.1.5 gcc基本应用 594

12.1.6 运行gcc时调用的程序和命令 596 12.2 gcc应用进阶 597

12.2.1 使用gcc处理多个文件 597

12.2.2 gcc命令详解 598 12.2.3 gcc函数库和包含文件 600 12.2.4 gcc警告提示功能 601 12.2.5 gcc的错误类型总结 603 12.3 gcc进阶应用 604 12.3.1 gcc调试选项 604

12.3.2 使用gcc编译Fortran程序 605 12.3.3 使用gcc编译Java文件 613 12.3.4 使用gdb 618 12.3.5 gcc优化 623 12.3.6 gcc环境变量 625 12.4 gnu make命令简介 627 12.4.1 make基础入门 628

12.4.2 make命令参数、调试、错误 12.4.2 机制 636

12.5 make的高级工具automake、 12.5 autoconf和libtool 642

12.5.1 automake、autoconf和libtool 12.5.1 定义 643

12.5.2 使用automake、libtool和 12.5.2 autoconf制作makefile文件 644 12.5.3 应用实例 647 12.6 本章参考资料 649

第13章 LINUX编辑器VI和EMACS 650

13.1 vi编辑器 650

13.1.1 Linux命令行编辑器简介 650 13.1.2 vi编辑器简介 654 13.1.3 vi编辑器的模式 654 13.1.4 vi三种模式的切换 655 13.1.5 vi编辑器基本操作 656 13.1.6 在vi编辑器移动光标 657 13.1.7 在文件中搜索、修改和删除 13.1.7 文本 659 13.1.8 vi进阶应用 660 13.1.9 vi总结 664

13.2 Emacs编辑器简介 664 13.2.1 GNU Emacs是什么 664 13.2.2 Emacs安装 665 13.2.3 Emacs的启动和退出 665 13.2.4 Emacs屏幕的结构 666 13.2.5 了解Emacs的键绑定 668 13.2.6 退出Emacs 670 13.3 使用Emacs进行编辑 670 13.3.1 移动光标 670 13.3.2 剪切和粘贴 671 13.3.3 复制文本 671 13.3.4 搜索和替换文本 671 13.3.5 Buffer缓冲区操作 672

13.3.6 窗口操作 673 13.3.7 获取帮助 673 13.3.8 其他功能键 673

13.3.9 Emacs中的鼠标操作 674 13.3.10 保存文档 674 13.3.11 Emacs的下编译 675 13.3.12 Emacs中的互联网操作 677 13.3.13 Emacs键绑定常用列表 678 第14章 使用SHELL 680 14.1 Shell简介 680 14.1.1 什么是Shell 680 14.1.2 Shell类型 681

14.1.3 Shell与Linux内核的交互作用 683 14.2 Linux Shell的功能 683 14.2.1 通配符 683 14.2.2 重定向 684 14.2.3 管道 685 14.2.4 别名 686 14.2.5 命令行补全 686 14.2.6 命令替换 687 14.2.7 命令历史 688 14.3 Linux Shell元字符 692 14.4 Shell变量和Shell环境 693 14.4.1 变量简介 693

14.4.2 常见的预定义变量详解 693 14.4.3 设置环境变量 697

14.5 Shell常用关键术语及应用技巧 699 14.5.1 Shell常用关键术语 699 14.5.2 Shell应用技巧 702 14.5.3 了解Shell的内置命令 704 第4部分 附录

附录A 解读LSB标准 708 命令索引 722 命 令 索 引 A

ab:apache http服务器性能测试工具 441 ADSL:调制解调器命令 164 alias:设置别名 361

apachectl:apache http服务器控制接口 440 ApacheTop:Web日志分析工具 454 apmd:高级电源管理 359 apmsleep:APM进入休眠状态 360

apropos:查找使用手册的名字和相关描述 360 apropos:搜索关键字 43 apt:管理套件的工具 186

ar:建立、修改或从档案文件中提取文件 291 ar:建立修改文件或从文件中抽取成员 572 arch:输出主机的体系结构 360

arp:管理系统中的ARP高速缓存 162 arpwatch:监听ARP记录 163 at:定时运行命令 135

authconfig:配置系统的认证信息 390 automount:安装自动安装点 482 B

badblock:检查磁盘 85

basename:显示文件或者目录的基本名称 44 batch:执行批处理命令 361 bg:后台运行命令 136

bind:显示或设置键盘按键与其相关的功能 404 bunzip2:解压缩.bz2文件 292 bzip2:解压缩.bz2文件 293

bzip2recover:损坏bz2文件的修复 294 C

cal:显示日历 364 cat:显示文本文件内容 28 cd:切换目录 362 cdrecord:刻录工具 406 chage:密码老化 246 chat:拨号命令 178 chattr:改变文件的属性 45 chfn:修改用户信息 252

chgrp:改变文件或者目录所属的群组 60

chkconfig:设置服务 362

chkconfig:设置系统的各种服务 145 chmod:设置文件或者目录的权限 58 chown:改变文件的拥有者或者群组 60 chroot:改变根目录 364 chsh:设置shell 251

ckconfig:检查FTP服务器的设置是否正确 503 cksum:文件的CRC校验 46 clear:清除终端屏幕 363 clock:系统RTC时间设置 363 cmp:比较文件差异 47 compress:压缩、解压文件 295 cp:复制文件 31

cpio(copy in/out):备份文件 288 crontab:安装、删除或列出任务表 138 cupsd:通用打印程序守护进程 552

customlog:用来对服务器的请求进行日志记录 451 D

date:显示或设置系统时间 365 date:显示日期和时间 41

dbmmanage:管理dbm格式的用户认证文件 447 dd:磁带驱动操作 71

declare:显示或者设定shell变量 392 depmod:分析模块 367

df:磁盘信息 69

dhclient:DHCPv6客户端守护进程 501 dhcp6c:DHCPv6客户端守护进程 501 dhcpd:DHCP服务器守护进程 500 diff:比较两个文件 37

diff:找出两个文件的不同点 577 diffstat命令:diff结果的统计信息 39 dig:发送域名查询信息包到域名服务器 463 dircolors:设置ls命令在显示目录或文件时所用 色彩 367

dirname:显示文件除名字外的路径 48 dmesg:显示开机信息 366

dnssec dnssec-signkey:DNSSEC密钥集签名 工具 472

dnssec-keygen:dnssec密钥生成工具 471 dnssec-makekeyset:DNSSEC区域签名工具 473 dnssec-signzone:DNSSEC区域签名工具 473 du:显示目录或者文件所占的磁盘空间 70 dump:备份文件系统 287 dump:备份文件系统 83 dvdrecord:DVD刻录工具 407 E

e2label:设置卷标 85 echo:显示文本 40

echo:显示文本行 367 eject:弹出介质 369 enable:关闭shell命令 369 enable:可用的shell内置命令 393

errorlog:指定了当服务器遇到错误时记录错误 日志的文件名 452

exec:执行完命令后,交出控制权 368 exit:退出shell 368

export:设置或者显示环境变量 393

exportfs:重新分享/etc/exports变更的目录资源 483 F

fdisk:磁盘分区 74 fg:挂起程序 136

fgconsole:显示虚拟终端的数目 370 file:测试文件内容 39 find:查找目录或者文件 48

findfs:通过列表或用户ID查找文件系统 49 finger:查找并显示用户信息 179 free:显示内存信息 370 fsck.ext2:检查文件系统 80 fsck:检查文件系统 79

FTP:FTP客户端工具在本地主机和远程主机 之间传送文件 504

ftpcount:连接数统计命令 503

ftprestart:重新启动ftp服务器 504 ftpshut:FTP关闭文件生成命令 503 ftpwho:在线用户查看命令 503

fuser:使用文件或文件结构识别进程 370 G

gdialog:从shell显示文本信息 372 getty:设置终端机模式 371 git:文件管理员 372 gpasswd:添加组 248 grep:查找字符串 33 groupadd:添加组 246 groupdel:删除组账户 247 groupmod:修改组 247 groups:显示组 248

grpck:检测用户组账号信息完整性 251 gzexe:压缩执行文件 296 gzip:压缩文件 294 H

halt:关闭系统 372 hdparm:设置磁盘参数 81 head:显示文件头部 35 history:显示历史命令 373

host:使用域名服务器查询主机名字 468 hostid:打印出当前主机的标识 394

hostname:显示主机名 169 htcacheclean:清理磁盘缓冲区 449 htdigest:管理用于摘要认证的用户文件 448 htpasswd:管理用于基本认证的用户文件 445 httpd:apache超文本传输协议服务器 444 hwclock:显示与设定硬件时钟 374 I

id:显示用户信息 250 ifconfig:设置网络接口 164 ifdown:禁用网络设备 170 ifup:激活设备 170 init:进程处理初始化 374 insmod:载入模块 394 ip:网络集成命令工具 181

ip6tables:ipv6版本的iptables工具 521 iptables:Linux防火墙管理工具 515

iptables-restore:装载由iptables-save保存的 规则集 521

iptables-save:iptables列表存储 521 iwconfig:设置无线网卡 165 jobs:显示后台程序 137 K

kbdconfig:设置键盘类型 405 kill:终止进程 137 L

last:显示登录用户信息 375 ldconfig:配置查找共享库 569 ldd:显示共享库的依赖情况 576 less:分屏显示文件 30 lftp:FTP客户端 506 lha:压缩或解压缩文件 296 lilo:引导管理器 376 ln:链接文件或目录 50 lndir:链接目录内容 51

local:显示本地支持的语言系统信息 377 locate:搜索文件 43

logformat:用于定义访问日志的记录格式 451 login:登录系统 376

loglevel:调整错误日志中信息的详细程度 453 logname:显示登录账号的信息 377 logout:退出系统 378

logresolve:解析Apache日志中的IP地址为 主机名 453 lp:打印 554

lpadmin:配置LP打印服务 553 Lpc:控制打印机 557 lpinfo:显示驱动和设备 558 lpq:检查假脱机队列 558 lpr:排队打印作业 556

lprm:打印队列删除任务 556 lpstat:显示行式打印机状态信息 555 ls:显示文件名 26

lsattr:显示文件在Linux第二扩展文件系统上的 特有属性 378

lsattr:显示文件属性 51

lsmod:显示Linux内核的模块信息 378 lspci:查看硬件插槽 407 M

mail:E-mail管理程序 509 mailq:显示待寄邮件的清单 510

mailstats:显示关于邮件流量的统计信息 511 mdadm:RAID工具 88 mii-tool:调整网卡模式 171 minicom:设置调制解调器 175 mkbootdisk:建立启动盘 79

mkfs.ext2:建立一个ext2/ext3文件系统 78 mkfs:建立各种文件系统 77 mkswap:建立交换分区 82 modinfo:显示内核信息 379 modprobe:自动处理可载入模块 379

mount:mount命令将已命名的文件系统(本地或 远程)连接到指定的挂载点 481 mount:加载文件系统 75

mountall:挂载一组文件系统 482 mousconfig:设置鼠标相关参数 403 mt:磁带机控制 405 mtools:命令集 409 mutt:E-mail管理程序 512 mv:更改文件名 33 N

named:域名服务器管理命令 459 named-checkconf:检查DNS配置 462

named-checkzone:named-checkzone:检查区域文件 的合法性 462

netstat:查看网络连接 173 newgrp:转换组 248

nfsd:NFS服务器启动?停止命令 478 nice:改变权限优先级 143 nm:列举目标文件中的符号名 571 nohup:用户退出系统之后继续工作 144 nslookup:交互式查询名称服务器 467 ntsysv:设置系统的各种服务 380 O

objdump:展开目标文件、静态库和共享库中的 信息 575

od:输出文件内容 52 P

parted:磁盘分区工具 90

passwd:设置密码 245 paste:合并文件的列 53 patch:修补文件 579

pgrep:查找当前进程并列出匹配给定条件的 进程pid 144

ping:检测网卡接口 174 pmap:显示程序的内存信息 380

portmap:portmap守护程序将RPC程序号转换成 因特网端口号 478 pppd:建立ppp连接 176 pppstats:显示ppp连接状态 177 procinfo:显示系统状态 381 ProFTP:服务器管理命令 502 ps:查看权限 139

pstree:列出当前进程的树状结构 141 pwck:检测账户 251 pwd:显示工作目录 382 Q

quota:显示磁盘已使用的空间与限制 85 quotacheck:检查磁盘的使用空间与限制 86 quotaoff:关闭磁盘空间限制 86 quotaon:开启磁盘空间限制 87 quotastats:显示磁盘空间的限制 87 R

rcp:远程复制 179

rdate:显示其他主机的日期与时间 394 reboot:重新启动系统 382

redhat-config-printer-tui:打印机配置字符界面 工具 551

renice:修改优先级 143

repquota:检查磁盘空间限制的状态 87 restore:还原备份下来的文件或整个文件系统 (一个分区) 290 restore:还原文件 84 rlogin:远程登录 383 rm:删除文件 30 rmdir:删除目录 44 rmmod:删除模块 383 rndc:DNS服务器控制 461

rotatelogs:滚动Apache日志的管道日志程序 453 route:设置路由表 172

rpcinfo:报告远程过程调用(RPC)服务器的 状态 479

rpm:软件包管理 384 runlevel:显示执行等级 395 S

sane-find-scanner:扫描仪搜索 408 scanimage:检测扫描仪型号 409

scp:文件拷贝到远程主机或本地主机 497 script:记录Linux会话信息 42

sendmail:为本地或网络交付传送邮件 507 Sendmail邮件服务器性能控制 513 set:设置shell 395

setconsole:设置系统终端 396 setenv:查询或显示环境变量 397 setserial:设置或显示串口的相关信息 397 setup:设置公用程序 397 sftp:安全互动FTP 496

showmount:显示远程已安装文件系统的所有 客户机的列表 480

shutdown:系统关机命令 388 sleep:延迟指定数量的时间 388 sleep:暂停进程 144

smbclient:类似FTP操作方式的访问smb/cifs 服务器资源的客户端 485

smbd(samba daemon):samba服务器程序 485 smbmount:装载一个smbfs文件系统 488 smbpasswd:设置用户的SMB密码 489 smbstatus:报告当前samba的连接状态 487 snapscreenshot:命令行截图 405 sort:按顺序显示文件内容 36 split:分割文件 47

squid:代理服务器squid守护进程 498 ssh:SSH命令行登录工具 494 sshd:OpenSSH守护进程 490

ssh-keygen:生成、管理和转换认证密钥 491 startx:启动X Window 398 stat:显示inode内容 53

strip:去除目标文件中的无用信息 574 su:切换身份 250

suexec:在执行外部程序之前切换用户 449 suspend:暂停执行shell 389 swatch:系统监控程序 389

sync:将内存缓冲区内的数据写入磁盘 398 sync:写入磁盘 84

sysctl:设置系统核心参数 399 T

tail:显示文件尾部 35 tar:备份文件 285

tcpdump:网络数据分析器 180

tee:读取标准输入到标准输出并可保存为文件 54 testparm:检查smb.conf配置文件的内部正确性 484 tfpd:传输文件 506 timeconfig:设置时区 399 tload:显示系统负载 389 tmpwatch:删除临时文件 54

top:显示进程 141

touch:更新文件或目录时间 54

traceroute:显示数据包到主机间的路径 178 tree:以树状图显示目录内容 55 U

ulimit:控制shell程序的资源 400

umask:指定在建立文件时预设的权限掩码 56 umount:删除当前已挂载的远程文件系统 481 umount:卸载文件系统 77 unalias:删除别名 401 uname:显示系统信息 390 unarj:解压缩文件 297 uniq:忽略文件中的重复行 37 unset:删除变量或函数 402 unzip:解压缩zip文件 293 up2date:软件包升级工具 402 uptime:告知系统运行了多长时间 403 useradd:建立用户 243 userdel:删除用户 244

usermod:修改已有用户信息 244 V

vigr:编辑/etc/group文件 248 vipw:编辑/etc/passwd文件 247 vsftpd:vsftpd守护进程 501 W

Webalizer:Web服务器日志分析程序工具 457 whereis:查找文件 410 who:显示登录用户 249 whoami:显示当前用户名称 249 Wu-FTP:Wu-FTP控制守护进程 502 ytalk:与其他用户交谈 411 yum:软件包管理 182 Z

zip:压缩文件 297

zipinfo:显示压缩文件的信息 298

linux分区格式 Ext2:

Ext2是GNU/Linux系统磁中标准的磁文件系统磁。这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有极快的速度和极小的CPU占用率。Ext2既可以用于标准的块设备(如硬盘),也被应用在软盘等移动存储设备上。 Ext3:

Ext3是Ext2的下一代,也就是保有Ext2的格式之下再加上日志功能。Ext3是一种日志式文件系统(Journal File System),最大的特点是:它会将整个磁盘的写入动作完整的记录在磁盘的某个区域上,以便有需要时回溯追踪。当在某个过程中断时,系统可以根据这些记录直接回溯并重整被中断的部分,重整速度相当快。该分区格式被广泛应用在Linux系统中。

Linux swap:

它是Linux中一种专门用于交换分区的swap文件系统。Linux是使用这一整个分区作为交换空间。一般这个swap格式的交换分区是主内存的2倍。在内存不够时,Linux会将部分数据写到交换分区上。 VFAT:

VFAT叫长文件名系统,这是一个与Windows系统兼容的Linux文件系统,支持长文件名,可以作为Windows与Linux交换文件的分区。 Linux系统分区

Linux的驱动器的标识方法:

对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样,不在多说。

我们从上面可以看到,Red Hat Linux的分区是不同于其它操作系统分区的,它的分区格式只有Ext2和Swap两种,Ext2用于存放系统文件,Swap则作为Red Hat Linux的交换分区。那么现在我们就可以知道Red Hat Linux至少需要两个专门的分区(Linux Native和Linux Swap)况且不能将Red Hat Linux安装在Dos/Windows分区。一般来说我们将Red Hat Linux安装一个或多个类型为“Linux Native”的硬盘分区,但是在Red Hat Linux的每一个分区都必须要指定一个“Mount Point”(载入点),告诉Red Hat Linux在启动时,这个目录要给哪个目录使用。对“Swap”分区来说,一般定义一个且它不必要定义载入点。下面我们先对“Linux Native”和“Linux Swap”有个初步的了解。

*SWAP分区是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定“Mout Point”(载入点),既然它作为交换分区,我们理所当然应给它指定大小,它至少要等于系统上实际内存的量,一般来说它的大小是内存的两倍,如果你是16MB的内存,那么SWAP分区的大小是32MB左右,以此类推。但必须还要注意一点,SWAP分区不要大于128MB,如果你是64MB的内存,那么SWAP分区最大也只能被定为127MB,再大就是浪费空间了,因为系统不需要太大的交换分区。以此类推,如果你是128MB或更大的内存,SWAP分区也只能最大被定为127MB。况且你还必须注意的是如果你是128MB(或更大)的内存,你必须提醒系统你有这么大的内存,要不然它可不认你这个128MB内存。具体如下:当顺利启动了安装过程后,会显示一个boot:提示符,这时你只要键入boot:linux mem=128MB就可以了。另外你也可以创建和使用一个以上的交换分区,最多16个。

*Linux Native是存放系统文件的地方,它只能用EXT2的分区类型,上面已说过。对Windows用户来说,操作系统必须装在同一分区里,它是商业软件吗!所以你没有选择的余地!对Red Hat Linux来说,你有了较大的选择余地,你可以把系统文件分几个区来装(必须要说明载入点),也可以就装在同一个分区中(载入点是“/”)。下面我们看看可以创建哪些分区(仅列常用几种)。

/boot分区,它包含了操作系统的内核和在启动系统过程中所要用到的文件,建这个分区是有必要的,因为目前大多数的PC机要受到BIOS的限制,况且如果有了一个单独的/boot启动分区,即使主要的根分区出现了问题,计算机依然能够启动。这个分区的大小约在50MB—100MB之间。但是如果想用LILO启动Red Hat Linux系统的话,含有/boot的分区必须完全在柱面1023以下。又由于8GB后的数据LILO不能读取,所以Red Hat Linux要安装在8GB的区域以内。

/usr分区,是Red Hat Linux系统存放软件的地方,如有可能应将最大空间分给它。

/home分区,是用户的home目录所在地,这个分区的大小取决于有多少用户。如果是多用户共同使用一台电脑的话,这个分区是完全有必要的,况且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。其实单用户也有建立这个分区的必要,因为没这个分区的话,那么

你只能以根用户的身份登陆系统,这样做是危险的,因为根用户对系统有绝对的使用权,可一旦你对系统进行了误操作,麻烦也就来了。

/var/log分区,是系统日志记录分区,如果设立了这一单独的分区,这样即使系统的日志文件出现了问题,它们也不会影响到操作系统的主分区。

/tmp分区,用来存放临时文件。这对于多用户系统或者网络服务器来说是有必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了错误的操作,文件系统的其它部分仍然是安全的。因为文件系统的这一部分仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。

/bin分区,存放标准系统实用程序。

/dev分区,存放设备文件。

/opt分区,存放可选的安装的软件。

/sbin分区,存放标准系统管理文件。

上面介绍了几个常用的分区,一般来说我们需要一个SWAP分区,一个/boot分区,一个/usr分区,一个/home 分区,一个/var/log分区。当然这没有什么规定,完全是依照你个人来定的。但记住至少要有两个分区,一个SWAP分区,一个/分区。下面我们来看看怎样分区。

用户可以使用两种分区工具:

1.Disk Druid:它是Red Hat Linux提供的硬盘管理工具,它最初是随Red HatLinux5一起发售的,它可以根据用户的要求创建和删除硬盘分区,另外还可以为每个分区管理载入点,这是一个不错的分区软件,建议读者使用。本文也将以此软件详细地介绍Red Hat Linux分区。

2.Fdisk:它是传统的Linux硬盘分区工具,比Disk Druid更强大,使用更加灵活。但是Fdisk要求用户对硬盘分区有一定经验,并能够适应且读懂简单的文本界面。如果你是第一次对一个硬盘驱动器进行分区操作的话,最好还是避免Fdisk这样的程序,它虽然强大但用起来的感觉不是太好的。

附注:此外Red Hat Linux还提供了一种叫fips的分区软件,但这种分区软件具有一定的危险性,不宜提倡操作。虽然有许多人已经成功地用fips对他们的硬盘进行了分区,但这不能保证fips将在你的系统中也能正常地运行。况且Red Hat Linux也不提供对fips的支持,劝你对这种分区软件还是慎用为好。

如果你希望将Red Hat Linux安装在已经含有其他操作系统的盘上,也就是多重操作系统,这个情况就比较复杂了,因为一个错误就可以毁掉你辛辛苦苦保存的数据,让你欲哭无泪。如果你想让Red Hat Linux与OS/2共存,那你必须使用OS/2的分区软件来创建硬盘分区,要不然OS/2将不能识别硬盘分区。另外你也可以用其它的一些分区软件来分区,下面列出了一些常见的这种分区工具软件:

*Partition Commander软件,从www.v-com.com处下载。

*partition It软件,从www.quarterdeck..com处下载。

*partition Magic软件,从www.powerquest.com处下载。

注意:硬盘分区是一个非常危险的步骤,你要想安全地在不丢失数据的情况下改变磁盘的分区有点不太现实,所以我建议大家对重要得数据进行备份,装多操作系统更要如此,以备不测。当然或许你是刚装系统或就准备重装,那也就是另外一回事了,但是大家对待分区一定要慎重又慎重,切记。

下面我们详细地了解一下Red Hat Linux7.1自带的Disk Druid分区软件所包含的一些信息。

1.Current Disk Partitions区域(这里每一行代表了一个硬盘分区)

Mount Point 指出Red Hat Linux启动并运行以后该分区的加载点,交换空间(Linux swap)是不需要加载点的。

Device 硬盘分区的设备名

Requeted 给这个分区定义时申请的最小空间

Actual 分配给该分区的实际空间

Type 说明了该分区的类型

2.Drive Summaries区域(这里每一行代表一个硬盘)

Drive 显示硬盘的设备名

Geom[C/H/S] 显示硬盘的物理信息,C(柱面),H(磁头),S(扇区)

Total 显示硬盘的可用空间

Used 显示硬盘中已分配的空间

Free 显示硬盘中末分配的空间

Bar Graph 该条图形化地显示当前硬盘使用的百分比,#号越少,空闲空间越多

3.Disk Druid按钮

Add 增加一个分区

Edit 修改在Current Disk Partitons中被选中的分区的属性,选中该按钮将出现一个对话框来进行修改,但只能修改该分区的载入点。如果你需要修改其它内容,请先删除该分区,而后再重新建这分区。

Delete 删除一个在Current Disk Partitons中被选中的分区 Ok 确认

Back 不作保存,返回

4.如果你想增加一个分区,请点击“add”按钮,这时会出现一对话框,内容说明如下:

Mount Point 分区载入点,说明分区

Size 分区的大小

Grow to fill disk 表明这个分区将添满一个硬盘的整个未分配空间。这时,这个分区的容量可以随着其它分区的修改增加或减少

Type 选择分区类型

Allowable Drives 选择这个分区将创建在哪个硬盘上

好了,通过上面的了解想必大家都能容易地创建出适合自己的分区。下一步我们所要做的工作就是要格式化所建的分区,选择你要格式化的分区并按Space键,如果想在格式化分区时检查有无坏块,选择“Check for bad blocks during format”,点击OK并按Space键。如果分区中已无你要所保存的数据,最好都格式化一下。

linux的分区

以前安装linux,一个比较困惑的地方,就是分区,该如何分区,为什么这样分区。那么现在谈谈我对这个的认识把。硬盘分区,可以分4个主分区,这个对linux,windows都是一样的,没有什么区别。在windows分区,分为c,d,e盘。这个大家已经很熟悉了。以xp为例,xp安装的时候,在的系统目录下,会产生几个文件夹,1:windows2:program files3:documnet and seting这3个文件夹是有不同的用途的,我们很多人有个习惯,装完系统后,把所有的软件都是安装在d盘里。那么其实我们有一个这样的需求,上面3个文件夹,如果分布在3个分区里,那么多好啊,互相不影响,如果安装的时候可以让你设定,那就非常不错了。还有windows,有一个交换分区,如果能把这个交换分区,单独给他一个分区,就更好。这其实是windows的一个不足的地方,当然现在是有办法可以做到,把document and seting 当地安装在d盘,甚至把program file 安装到e盘,都是可以实现。只是比较复杂。那么回到linux下,其实linux,你安装完后,你会发现linux根目录下有10几个文件夹,这些文件夹,都是不同的用途,如果放在一个分区,最大的一个问题,就是一个文件夹下出现问题,会影响到别的。这点就是linux高明的地方,在你安装的时候,就可以让你设置,那些根目录下的文件夹到底是不是给他分配一个单独的分区。甚至是不是需要给2级目录也给他一个单独的分区。linux分区,要求一定要给交换分区划分一个分区,swap分区,这是这就是windows的那个交换文件,只是linux比较聪明,可以在安装的时候,要求你直接给一个分区作为交换分区。关于交换分区的大小,一般的说法是内存的2倍,不过如果你是4g内存,难道要给8g空间swap吗?曾经有朋友说过,swap超过2g以后就不起作用了,他是测试过的,我想swap最大就2g就够了。这样你就能明白linux的分区。除了linux缺省的那些目录外,你也可以创建自己的目录,指定一个分区。linux的设备,都是以节点的形式,比如光驱,就是以一个设备,挂接在一个节点上,(我是这样理解的)比如nfs,我们使用一个远程的共享目录,使用mount,其实也是把远程的目录,挂接到本地的一个节点上,可以是你指定的节点,几乎所有关于分区的文章,都谈论到boot的分区,不能超过8g空间以外,不过我想这个限制,对

于现在的硬盘,已经是不存在的限制的,就算你把boot的分区分在80g以后,我想也是可以启动的。有机会我测试一下。

Linux下分区工具

[root@localhost gxlinux]# df -Th

#查看已经挂载上的文件分区大小以及格式(当然你的系统必须有空闲的空间不用了) 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda1 ext3 2.9G 2.2G 505M 82% / /dev/sda2 ext3 965M 22M 894M 3% /home tmpfs tmpfs 345M 12K 345M 1% /dev/shm [root@localhost gxlinux]# /sbin/fdisk /dev/sda #fdisk命令来进行磁盘分区

#如果你有第二块硬盘,那么后面的设备符号是/dev/sdb,第三块以此类推 The number of cylinders for this disk is set to 1044.

There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): m #查看fdisk命令的帮助 Command action a toggle a bootable flag b edit bsd disklabel

c toggle the dos compatibility flag d delete a partition #删除某个分区 l list known partition types m print this menu

n add a new partition #增加新的分区 o create a new empty DOS partition table p print the partition table #打印/查看分区表 q quit without saving changes #不保存退出 s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table

w write table to disk and exit #保存退出 x extra functionality (experts only)

Command (m for help): p #打印/查看已有的分区表 Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000e25d9

Device Boot Start End Blocks Id System /dev/sda1 * 1 382 3068383+ 83 Linux /dev/sda2 383 509 1020127+ 83 Linux

/dev/sda3 510 636 1020127+ 82 Linux swap / Solaris Command (m for help): n #开始增加新的分区 Command action e extended #扩展分区

p primary partition (1-4) #主分区,一块硬盘中可以有4个主分区 #例如:XP下C盘为主分区,DEF为逻辑分区(DEF合起来就是扩展分区)

e #增加扩展分区

Selected partition 4 #分区4作为扩展分区,分区4开始是未分配空闲空间 First cylinder (637-1044, default 637): Using default value 637 #分区的开头,1044是块结尾

Last cylinder or +size or +sizeM or +sizeK (637-1044, default 1044): #也可在这里直接输入想要建立分区的大小,比如+5000MB,表示建立5000MB大小的分区

Using default value 1044 #分区的结尾

Command (m for help): n #建立完扩展分区,然后建立逻辑分区 First cylinder (637-1044, default 637): Using default value 637

Last cylinder or +size or +sizeM or +sizeK (637-1044, default 1044): Using default value 1044

Command (m for help): p #建立完了逻辑分区,打印/查看 #可以看到增加了一个分区,逻辑分区是建立在扩展分区上的 Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000e25d9

Device Boot Start End Blocks Id System /dev/sda1 * 1 382 3068383+ 83 Linux /dev/sda2 383 509 1020127+ 83 Linux

/dev/sda3 510 636 1020127+ 82 Linux swap / Solaris /dev/sda4 637 1044 3277260 5 Extended /dev/sda5 637 1044 3277228+ 83 Linux

Command (m for help): w #把新的分区表写入并保存,记住一定要保存 The partition table has been altered! Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table.

The new table will be used at the next reboot. Syncing disks.

[root@localhost gxlinux]# df -Th

#因为这个时候还没有挂载,所以在df命令下并不能看到新的分区 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda1 ext3 2.9G 2.2G 505M 82% / /dev/sda2 ext3 965M 22M 894M 3% /home tmpfs tmpfs 345M 12K 345M 1% /dev/shm

[root@localhost gxlinux]# /sbin/mkfs.ext3 /dev/sda5 #在挂载之前应该先格式化,比如ext2,ext3格式 #还可以使用/sbin/mkfs –t ext3 /dev/sda5

#其实我们已经看到在fdisk命令中已经自动将其格式化为ext3格式了 mke2fs 1.40.2 (12-Jul-2007) warning: 107 blocks unused. Filesystem label= OS type: Linux

Block size=4096 (log=2) Fragment size=4096 (log=2) 410400 inodes, 819200 blocks

40965 blocks (5.00%) reserved for the super user First data block=0

Maximum filesystem blocks=838860800 25 block groups

32768 blocks per group, 32768 fragments per group 16416 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912 Writing inode tables: done

Creating journal (16384 blocks): done

Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

[root@localhost gxlinux]# /sbin/e2label /dev/sda5 backup #给新分区添加一个标签 [root@localhost gxlinux]# mkdir /mnt/bak

[root@localhost gxlinux]# mount /dev/sda5 /mnt/bak #将新分区挂载到指定目录上 [root@localhost gxlinux]# df -Th #这时候就可以看到挂载上了 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda1 ext3 2.9G 2.2G 505M 82% / /dev/sda2 ext3 965M 22M 894M 3% /home tmpfs tmpfs 345M 12K 345M 1% /dev/shm /dev/sda5 ext3 3.1G 69M 2.9G 3% /mnt/bak

[root@localhost gxlinux]# vim /etc/fstab #添加一行到/etc/fstab中开机自动挂载 #其实不用设置,系统也可以开机自动挂载的,因为它的格式跟linux系统格式是一样的 [root@localhost gxlinux]# cat /etc/fstab LABEL=/ / ext3 defaults 1 1

LABEL=/home /home ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0

LABEL=SWAP-sda3 swap swap defaults 0 0 LABEL=backup /mnt/bak ext3 defaults 1 2

为linux增加新的分区

如果有空闲分区(如hda5), 步骤类似如下: 1. mkswap /dev/hda5 2. swapon /dev/hda5 如要自动启动, 则在/etc/fstab中把此分区加入;如果没有空闲分区, 可以使用一个大文件建立, 步骤类似如下: 1. dd if=/dev/zero of=swap1 bs=1024 count=655360 2. mkswap swap1 655360 3. swapon swap1

linux目录结构 目录结构

与Windows下一样,在Linux中也是通过目录来组织文件的。但不同的是,在Linux下只有一个根目录,而不象Windows那样一个分区一个根目录。 如果有多个分区的话,就需要将其它分区mount到根目录上来用。

大家回忆一下当时为Linux分区时,有一个选项要填,那就是Mount Point,我们将其中一个写成了“/”,也就是根目录(这点与Windows相反, 一个是“\\”,一个是“/”,真是天生冤家)。其它的则可能是/home、/usr。

安装完系统后,你会发现/home、/usr就是根目录下面的home、usr目录!对了,整个分区就用于该目录了。

安装完Linux后,有许许多多的目录,下面我们就说明一些重要的目录:

/bin:存放着一百多个Linux下常用的命令、工具

/dev:存放着Linux下所有的设备文件!

/home:用户主目录,每建一个用户,就会在这里新建一个与用户同名的目录,给该用户一个自己的空间

/lost+found:顾名思义,一些丢失的文件可能可以在这里找到

/mnt:外部设备的挂接点,通常用cdrom与floppy两个子目录!它的存在简化了光盘与软盘的使用。你只需在塞入光盘后,运行: mount /mnt/ cdrom,就可以将光盘上的内容Mount到/mnt/cdrom上,你就可以访问了。不过你使用完成后,应该离开该目录,并执行umount /mnt/cdrom。同样 的,软盘就是mount /mnt/floppy和umount /mnt/floppy了。

/proc:这其实是一个假的目录,通过这里你可以访问到内存里的内容。 /sbin:这里存放着系统级的命令与工具 /usr:通常用来安装各种软件的地方 /usr/X11R6 X Window目录

/usr/bin与/usr/sbin 一些后安装的命令与工具

/usr/include、/usr/lib及/usr/share 则是存放一些共享链接库 /usr/local 常用来安装新软件 /usr/src Linux源程序

/boot:Linux就是从这里启动的

/etc:这里存放在Linux大部分的配置文件 /lib:静态链接库

/root:root用户的主目录,这就是特权之一! /var:通常用来存放一些变化中的东西! /var/log:存放系统日志

/var/spool:存放一些邮件、新闻、打印队列等

Linux忘记密码怎么办 一. lilo

1. 在出现 lilo: 提示时键入 linux single画面显示 lilo: linux single 2. 回车可直接进入linux命令行 3. #vi /etc/shadow

将第一行,即以root开头的一行中root:后和下一个:前的内容删除,

第一行将类似于

root::......

保存

4. #reboot重启,root密码为空 二. grub

1. 在出现grub画面时,用上下键选中你平时启动linux的那一项(别选dos哟),然后按e键

2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键

3. 修改你现在见到的命令行,加入single,结果如下:

kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/

4. 回车返回,然后按b键启动,即可直接进入linux命令行

5. #vi /etc/shadow

将第一行,即以root开头的一行中root:后和下一个:前的内容删除,

第一行将类似于

root::......

保存

6. #reboot重启,root密码为空

Linux系统开机过程解释笔记

说实话,偶以前一直看不起开机启动的,按下电源然后出去溜一圈回来就可以用,何必考虑这个过程呢.不过,后来发觉学习linux如果没过这个的话,对以后的学习会产生很大的障碍.因此,赶紧多学习几遍.网上开机描述linux开机过程的比较多.不过,自己不默写一遍,在脑海里过一遍,往往也只能了解个大概,处于难得糊涂的状态.为了达到剑既是我,我既是剑的人剑合一的境界.赶紧温习一遍. 总结一下,linux的开机整个流程.

1: 启动电源后,主机第一步先做的就是查询BIOS(全称:basic input/output system 基本输入输出系统)信息.了解整个系统的硬件状态,如CPU,内存,显卡,网卡等.嗯,这一步windows算和它是一家.不分彼此.

2: 接下来,就是主机读取MBR(硬盘的第一个扇区)里的boot loader了.这个可是重点哦,据说troubleshooting里就会考这点,给个坏了的loader,叫你修正.windows不支持linux的分区格式.所以,用windows的boot.ini是查不到linux的系统的.一般我装系统都是先装windows再装linux,然后用grub来做boot loader.两个字:省心!因为linux不像windows那么小气.grub可是支持windows分区格式的哦.

3: 接上一步,主机读取boot loader后,会读取里面的信息,知道谁跟谁是待在哪,假如主机想进入linux系统,读取到linux核心是在/boot文件目录中后,将此核心加载到内存中.开始了接下来的分析启动之旅.

4: OK,第一个运行程序是谁?就是/sbin/init程序.不信,就用top程序看下,是不是PID为1的就是这个东东,它,可是万物之祖啊,我简称它是女娲娘娘(不喜欢亚当夏娃). 5: init首先查找启动等级(run-level).因为启动等级不同,其运行脚本(也就是服务)会不同.默认的等级有以下几项: 0 - halt (系统直接关机)

1 - single user mode (单人模式,用于系统维护时使用) 2 - Multi-user, without NFS (类似3模式,不过少了NFS服务) 3 - Full multi-user mode (完整模式,不过,是文本模式) 4 - unused (系统保留功能)

5 - X11 (与3模式类似,不过,是X终端显示) 6 - reboot (重新开机)

(不要选择0或4,6 否则,进步了系统的)

6: OK.系统知道自己的启动等级后,接下来,不是去启动服务,而是,先设置好主机运行环境.读取的文件是/etc/rc.d/rc.sysinit文件.那究竟要设置哪些环境呢? 设置网络环境/etc/sysconfig/network,如主机名,网关,IP,DNS等.

挂载/proc.此文件是个特殊文件,大小为0,因为它是在内存当中.里面东东最好别删. 根据内核在开机时的结果/proc/sys/kernel/modprobe.开始进行周边设备的侦测.

载入用户自定义的模块/etc/sysconfig/modules/*.modules 读取/etc/sysctl.conf文件对内核进行设定.

设定时间,终端字体,硬盘LVM或RAID功能,以fsck进行磁盘检测. 将开机状况记录到/var/log/dmesg中.(可以用命令dmesg查看结果)

7: OK,接下来,就是启动系统服务了,不同的run-level会有不同的服务启动.到/etc/rc.d目录中,不同的level会有不同的目录.如启动3模式,会有个rc3.d目录,里面就保存着服务.其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动.数字表示启动顺序.数字越小,启动越早.

注意,他们都是连接到etc/rc.d/init.d/目录中的相关文件.所以,想手工启动某一服务,可以用\"/etc/rc.d/init.d/某个服务 start\"启动哦.相反,我们也可以把某个服务ln(链接命令)到不同run-level的目录中.记得打上S或者K+数字哦.

8: 读取服务后,主机会读取/etc/rc.d/rc.local文件.所以,如果需要什么开机启动的话,可以写个脚本或命令到这里面来.就不用像上面那么麻烦.以后删除也方便. OK,经过一番长途跋涉后,系统终于可以安心的开启shell了.把控制权交到我们手上了.我们可以为所欲为了.最好,养成好习惯,平时不要用root用户登陆.上次我就一不小心错输了poweroff.那可是网关服务器啊.全公司人都上不了网啊.还好跟他们已经热乎了.只是狂K了我一顿而已.

Linux下tr命令“字符”处理的实用例子

【小蜗牛闲情之作】

tr是Unix系统非常实用的工具,其实用tr做到的事情,几乎都可用sed做到,你可以把tr当作是实现sed许多基本功能的sed“简体”。我认为tr是简单的“字符”处理工具,而sed是功能非常强大的“字符串”处理工具。

【注意】tr是单个字符处理工具,而不是字符串处理工具!

我自己用过比较实用的例子如下:

1、将文件file中出现的\"abc\"替换为\"xyz\"

# cat file | tr \"abc\" \"xyz\" > new_file

【注意】这里,凡是在file中出现的\"a\"字母,都替换成\"x\"字母,\"b\"字母替换为\"y\"字母,\"c\"字母替换为\"z\"字母。而不是将字符串\"abc\"替换为字符串\"xyz\"。

2、使用tr命令“统一”字母大小写 (小写 --> 大写)

# cat file | tr [a-z] [A-Z] > new_file (大写 --> 小写)

# cat file | tr [A-Z] [a-z] > new_file

3、把文件中的数字0-9替换为a-j

# cat file | tr [0-9] [a-j] > new_file

4、删除文件file中出现的\"Snail\"字符

# cat file | tr -d \"Snail\" > new_file

【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的\"Snail”字符串。

5、删除文件file中出现的换行'\\n'、制表'\'字符

# cat file | tr -d \"\\n\\" > new_file

不可见字符都得用转义字符来表示的,这个都是统一的。

6、删除“连续着的”重复字母,只保留第一个

# cat file | tr -s [a-zA-Z] > new_file

7、删除空行

# cat file | tr -s \"\\n\" > new_file

8、删除Windows文件“造成”的'^M'字符

# cat file | tr -d \"\\r\" > new_file 或者

# cat file | tr -s \"\\r\" \"\\n\" > new_file

【注意】这里-s后面是两个参数\"\\r\"和\"\\n\",用后者替换前者

9、用空格符\\040替换制表符\\011

# cat file | tr -s \"\\011\" \"\\040\" > new_file

10、把路径变量中的冒号\":\",替换成换行符\"\\n\"

# echo $PATH | tr -s \":\" \"\\n\"

这样看到的路径变量是不是更清晰:)

linux下访问windows共享文件夹

我在我的主机里设置了一个文件夹,共享的名字是test,然后我主机的IP地址是192.168.1.100,而我的主机的当前登录的用户名为Bill,然后我就按网上的方法让我的虚拟机里的Linux系统访问到了我的Windows共享的文件夹,那个开心呀.虽然这个问题可能很简单,但是我却花了一天的时间才弄出来,但是正因为我花了时间,所以当我弄出来时我就特别开心.

以下是我让Linux访问我的Windows里设置的共享文件夹的命令

mount -t smbfs -o username=Bill,iocharset=GB2312 -l //192.168.1.100/test /mnt/test

这句命令中的那个smbfs就是要mount的对象的类型,因为是Windows共享的文件夹,所以就要用smbfs这个是固定的.然后那个Bill就是我主机的用户名 GB2312就是设置字符编码为GB2312也就是简体中文,要不然访问出来的中文就会是乱码.

后面那个192.168.1.100是我Windows系统的IP,那个test是Windows里的那个共享名,

/mnt/test的意思就是把我Windows系统里的那个test文件夹挂接到Linux系统的/mnt/test这个目录下,如果这个目录不存在的话,你可以自己建立,也可以挂接到其它目录,看自己喜欢吧. 在输入这句命令之后

mount -t smbfs -o username=Bill,iocharset=GB2312 -l //192.168.1.100/test /mnt/test

它会提示你输入密码,然后输入Windows系统的Bill这个用户的密码按回车就可以了,然后打开到/mnt/test这个目录下就可以看到共享的东西都已经显示在这个目录下了

Linux下使用U盘

在Windows下使用U盘和MP3对与一些朋友们来说并不陌生,而且是司空见惯的事了,在Linux下使用U盘和MP3对于刚接触Linux的朋友来说并不是一件容易的事,我刚接触Linux的时候也遇到过这样的问题,也困惑迷茫过,现在把我学习的经验和大家交流一下,大家共同学习,共同进步,有好的东西大家要一起share。 1.# cd /mnt # mkdri usb

2.插入U盘

使用fdisk -l 命令查看一下设备,在Linux下U盘通常会被识别为scsi设备,而不是ide设备, 假如U盘识别为/dev/sda1。

3.挂载U盘

# mount /dev/sda1 /mnt/usb -o codepage=936,iocharset=cp936

4.用ls查看U盘内容 # ls

5用完要卸载U盘 # cd ~

# umount /mnt/usb

哈~ 很简单吧,就短短的几段代码你就可以用U盘。 linux下这样更改主机名

# vi /etc/sysconfig/network NETWORKING=yes

HOSTNAME=yourname (在这修改hostname,把yourname换成你想用的名字) NISDOMAIN=eng-cn.platform.com

2.修改/etc/hosts里面的名字 # vi /etc/hosts

127.0.0.1 localhost.localdomain localhost (在这修改hostname,把末尾的localhost换成你想用的名字)

3.最后在终端下执行:

#hostname ***** (*****为修改后的hostname,即你想用的名字) ============

特别提示:三处修改的名字要保持一致,否则会出现问题。切记。

# vi /etc/sysconfig/network NETWORKING=yes

HOSTNAME=yourname //在这修改hostname NISDOMAIN=eng-cn.platform.com

2.修改/etc/hosts里面的名字 # vi /etc/hosts

127.0.0.1 localhost.localdomain localhost 172.17.33.169 yourname //在这修改hostname

3.最后在终端下执行:

#hostname ***** //*****为修改的hostname

Linux新手要了解的十个知识点

1.Linux是大小写敏感的系统,举个例子,Mozilla, MOZILLA, mOzilla和

mozilla是四个不同的命令(但是只有第四个mozilla是真正有效的命令)。还有,my_filE, my_file,和

my_FILE是三个不同的文件。用户的登录名和秘密也是大小写敏感的(这是因为UNIX系统和C语言的传统一向是大小写敏感所致)。

2.文件名最多可以有256个字符,可以包含数字,点号”.”,下划线”_”,横杆”-”,加上其他一些不被建议使用的字符。

3.文件名前面带”.”的文件在输入”ls”或者”dir”

命令时一般不显示。可以把这些文件看作是隐含文件,当然你也可以使用命令”ls –a”来显示这些文件。

4.“/”对等于DOS下的”\\”(根目录,意味着所有其他目录的父目录,或者是在目录之间和目录和文件之间的一个间隔符号)。举个例子,cd /usr/doc。

5.在Linux系统下,所有的目录显示在单一目录树下(有别于DOS系统的驱动器标识)。这意味着所有的物理设备上的所有文件和目录都合并在单一的目录树下。 6.在配置文件里,以#打头的行是注释行。在修改配置文件的时候尽量不要删除旧的设置――可以把原来的设置加上”#”变成注释行,总是在修改地方对应地加入一些关于修改的注释,你会发觉在以后的管理中获益多多。

7.Linux是继承性的多用户操作系统。你的个人设定(和其他用户的个人设定)放在你的主目录下(一般是/home/your_user_login_name)。许多的配置文件的文件名都以”.”开头,这样用户一般看不到这些文件。 8.整个系统范围的设定一般放在目录/etc下。

9.和其他的多用户操作系统类似,在Linux下,文件和目录有自己的拥有者和访问权限。一般来说,你只被允许文件到你的主目录下(/home

/your_user_login_name)。学习一些关于文件权限管理的相关知识,否则你肯定会觉得Linux实在很麻烦。

10.命令参数选项一般由”-”引导,后面跟一个字符(或者”--“,当选项超过一个字符时)。这样,”-”有点象DOS下的”/”。举个例子,输入命令 rm --help。

linux组的管理

我们都知道每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

增加一个新的用户组使用groupadd 格式:

groupadd 参数(可有可无) 用户组

参数项

-g GID 指定新用户组的组标识号(GID)。 -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

eg: # groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

#groupadd -g 101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

要删除一个已有的用户组,使用groupdel 格式:

groupdel 用户组

groupmod 参数 用户组

参数:

-g GID 为用户组指定新的组标识号。 -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。 -n新用户组 将用户组的名字改为新名字

eg:

# groupmod -g 102 group2

此命令将组group2的组标识号修改为102。

# groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

$ newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

还有一个重要的将用户从组里面删除的问题那就是使用命令: gpasswd -d username groupname

eg: gpasswd -d work wheel就是把work用户从wheel组里删除。

LINUX下的用户和组管理

大家都知道:windows下的用户管理很简单,在用户管理里面,添加用户只需要下一步,下一步就可以了。用户的属性也可以通过右击更改。windows的用户和组都保存在SAM文件中。开机情况下,是没办法查看SAM文件的。但LINUX下的用户和组管理与WINDOWS下有些许不同。

LINUX下的用户分为三类:超级用户,普通用户,伪用户。

1 超级用户:用户名为root,具有一切管理权限,他的UID为0,可以创建多个管理员的。

2 普通用户:在默认情况下,普通用户的UID是介于500-60000之间的。 3 伪用户:这些用户的存在是为了方便系统管理,满足相应的系统进程对文件属主的要求。他不能够登录,它的ID值介于1--499之间。

LINUX的组:分为私有组和标准组

私有组:新创建一个用户时,如果没有指定所属组,则系统会为用户创建一个同名的私有组。

标准组:事先创建好的,新创建一个用户时就可以指定他所属的组,它可以容纳多个用户。

创建用户命令:useradd 用户名 然后再加密码:passwd 用户名

LINUX系统是多用户,多任务操作系统,但是当系统管理员需要备份时,就不允许其它用户登录进来。下面介绍一个方法来解决这个问题。

可以在/etc目录下创建一个名为nologin的文件,当其他用户登录时,系统只要发现此文件存在,就会禁止其他用户登录。若要再次恢复用户登录,则只要把nologin文件删除即可,或重新启动后,系统即会直接删除这个文件,恢复用户登录。

初学Linux小笔记

由于Linux系统大多都是做在服务器上的,所以随着业务的扩大,流量的增加,原有的设备很难继续保持要求。所以我们就要用到磁盘管理这种技术。但一般的磁盘管理是固定的,插多大硬盘分几个区,就是这样。若要更改容量需要格式化再重分。这样很不方便。下面我要讲的是逻辑卷管理器(LVM),这是一种可以动态调整硬盘大小的技术。

这里有3个概念:

1)物理卷:就是物理存在的,加了多大的空间就是多大

2)逻辑卷组:相当于一个逻辑的容器,逻辑的把所有空余空间汇总 3)逻辑卷:把卷组分成若干小卷,也可以逻辑上看成小硬盘,可以把它们挂载到文件下,彼此间的空间可动态调整

具体配置步骤:1)创建分区:当新插上一块硬盘后,我们要将它分区格式化,使之成为可以使用的文件系统 先fdisk -l 查看

然后fdisk /dev/sdb (注:sdb是新加硬盘名,也可以为sdc sdd...) 按p查看是否有已经分得区 若没有按n 新建 按 p 建立主分区 按1 1号分区 回车 起始 回车 终点 w 存盘

同样方法把其余硬盘分出来

2)创建物理卷: pvcreate /dev/sdb1 /dev/sdc1 /dev/sde1 后面的为刚才分区的名 3)创建卷组,建立一个大容器

vgcreate database /dev/sdb1 /dev/sdc1 /dev/sdd1

database 是逻辑卷组名 后面是要放到卷组里的物理卷 4)激活卷组:vgchange -a y database 若不想重起系统使设置生效,就输入这条命令 5)创建逻辑卷:

lvcreate -L3000 -noracle_data database

3000为卷的容量,oracle_data为卷名 database是逻辑卷组名

6)创建文件系统(格式化)

mkfs -t ext3 /dev/database/oracle_data

7) 挂载: mount /dev/database/oracle_data /mnt/oracle_data 挂载的文件要存在,可以先建立一个

8)以上配置为临时配置,若要永远保存,开机便运行,需要vi /etc/fstab 下面加上相应行就可以了

修改用户组的属性使用groupmod 格式:

关于LINUX权限的一个题目

一、新建组g1 g2 g3 ;新建用户user01属于g1 user02、 user03属于g2 user04属于g3,并设置为如25天未使用失效,过期时间2008-05-04;二、根目录下新建目录backup,下有两个文件file1 file2, 要求将此目录及下面文件设置成user01可读写、user02 user03可读,user04无权限。

一、新建组g1 g2 g3 ;新建用户user01属于g1 user02、 user03属于g2 user04属于g3,并设置为如25天未使用失效,过期时间2008-05-04; 二、根目录下新建目录backup,下有两个文件file1 file2,

要求将此目录及下面文件设置成user01可读写、user02 user03可读,user04无权限。

命令:(设置) groupadd g1 groupadd g2 groupadd g3

useradd -f 25 -g g1 -g g2 -e 05/04/2008 user01 useradd -f 25 -g g2 -e 05/04/2008 user02 useradd -f 25 -g g2 -e 05/04/2008 user03

useradd -f 25 -g g3 -e 05/04/2008 user04

vi /etc/shadow 将user01---user04的密码清掉 或 使用“passwd 用户名”来设置密码 cd /

mkdir backup

ls / > /backup/file1 通过重定向建立此两个文件 ls /etc > /backup/file2

chown -r user01:g2 backup 这条是将backup及下级目录和文件的所有者和组改为user01、g2

chown -r 640 backup 设置backup及下级目录和文件的操作属性为rw-r----- chmod u+x backup 添加拥有者的可执行权限,只需对backup目录文件添加就行 chmod g+x backup 同上,组的可执行权限 测试: su user01 cd / cd backup tail file1 vi file2 exit

su user02 cd / cd backup tail file1 vi file2 exit

(user03同user02一样) su user04 cd /

cd backup exit

此题主要是下面两条: chmod u+1 backup chmod g+1 backup

把这个目录添加可执行权限,这样才能进入些目录,否则会提示权限不够; 测试是不退出root用户,而是另外开一个终端,然后通过“su 用户名”来切换用户,当然只在此终端起作用,就好象以此用户来运行程序一样;可以通过“exit”命令来返回登陆系统时使用的用户。

在其它目录中建立目录或文件,也是这样操作,并不是一定要在根目录下才能操作成功!

几个重要的Linux系统内核文件介绍

1、下载源代码 ***.tar.gz 2、解压缩 tar zxvf ***.tar.gz 3、进入解压缩后的源代码目录 cd ***

4、生成配置文件

./configure --prefix=/我的目录 5、编译 make 6、安装 make install

一、vmlinuz

vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。

vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:

“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz”产生。zImage适用于小内核的情况,它的存在是为了向后的兼容性。二是内核编译时通过命令make bzImage创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”产生。bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。

zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。

内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。 vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。 二、 initrd-x.x.x.img

initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题。initrd-2.4.7-10.img是用gzip压缩的文件,下面来看一看这个文件的内容。 initrd实现加载一些模块和安装文件系统等。

initrd映象文件是使用mkinitrd创建的。mkinitrd实用程序能够创建initrd映象文件。这个命令是RedHat专有的。其它Linux发行版或许有相应的命令。这是个很方便的实用程序。具体情况请看帮助:man mkinitrd 下面的命令创建initrd映象文件: 三、 System.map

System.map是一个特定内核的内核符号表。它是你当前运行的内核的System.map的链接。

内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出。对于本文中的例子,编译内核时,System.map创建在/usr/src/linux-2.4/System.map。像下面这样:

nm /boot/vmlinux-2.4.7-10 > System.map 下面几行来自/usr/src/linux-2.4/Makefile:

nm vmlinux | grep -v '(compiled)|(.o$$)|( [aUw] )|(..ng$$)|(LASH[RL]DI)' | sort > System.map

然后复制到/boot:

cp /usr/src/linux/System.map /boot/System.map-2.4.7-10

在进行程序设计时,会命名一些变量名或函数名之类的符号。Linux内核是一个很复杂的代码块,有许许多多的全局符号。

Linux内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名。比如不是使用size_t BytesRead这样的符号,而是像c0343f20这样引用这个变量。 对于使用计算机的人来说,更喜欢使用那些像size_t BytesRead这样的名字,而不喜欢像c0343f20这样的名字。内核主要是用c写的,所以编译器/连接器允许我们编码时使用符号名,当内核运行时使用地址。

然而,在有的情况下,我们需要知道符号的地址,或者需要知道地址对应的符号。这由符号表来完成,符号表是所有符号连同它们的地址的列表。Linux 符号表使用到2个文件: /proc/ksyms System.map

/proc/ksyms是一个“proc file”,在内核引导时创建。实际上,它并不真正的是一个文件,它只不过是内核数据的表示,却给人们是一个磁盘文件的假象,这从它的

文件大小是0可以看出来。然而,System.map是存在于你的文件系统上的实际文件。当你编译一个新内核时,各个符号名的地址要发生变化,你的老的System.map具有的是错误的符号信息。每次内核编译时产生一个新的System.map,你应当用新的System.map来取代老的System.map。

虽然内核本身并不真正使用System.map,但其它程序比如klogd, lsof和ps等软件需要一个正确的System.map。如果你使用错误的或没有System.map,klogd的输出将是不可靠的,这对于排除程序故障会带来困难。没有System.map,你可能会面临一些令人烦恼的提示信息。

另外少数驱动需要System.map来解析符号,没有为你当前运行的特定内核创建的System.map它们就不能正常工作。

Linux的内核日志守护进程klogd为了执行名称-地址解析,klogd需要使用System.map。System.map应当放在使用它的软件能够找到它的地方。执行:man klogd可知,如果没有将System.map作为一个变量的位置给klogd,那么它将按照下面的顺序,在三个地方查找System.map: /boot/System.map /System.map

/usr/src/linux/System.map

System.map也有版本信息,klogd能够智能地查找正确的映象(map)文件。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top