标题：Linux系统最佳实践工具:命令行技术
图书信息
作　者：曹江华 著 
出 版 社： 电子工业出版社
出版时间： 2009-3-1
页　数：730页
开　本： 16开
I S B N ：9787121081248
所属分类： 图书 >> 计算机/操作系统 >>Linux
定价: 80.00 元
作者简介
曹江华：毕业于工科大学机电一体化专业，从事CAD设计。后从事小型数据库的应用。1999年开始从事构建网络、管理维护、数据库管理工作。1999年后开始接触LINUX，将工作中的经验总结后:在51CTO、计算机世界、IBM开发者、中国计算机报、IT168、<<网管员世界>>、上先后发表计算机Linux网络构建维护和安全的文章300多篇，290万字，已出版《Linux服务器安全策略详解》，《Linux服务器安全策略详解》（第二版），《Red Hat Enterprise Linux 5.0服务器构建与故障排除》，《Linux系统最佳实践工具：命令行技术》四本堪称Linux系统管理员日常工具书的热销图书，目前关注开放系统和网络安全。
宣传语
本书是Linux命令行下主要命令最详尽的介绍，弥补了国内该领域市场空白
针对最新版Linux内核，汇集最常用命令和新增命令，提供最新命令行参考
结合大量应用实例，力求将每个命令的使用方法及功能介绍清楚
从使用方便性上为读者考虑，功能相近的命令放在一起，便于读者查阅
对于初、中级用户，本书是一本字典式工具书供查阅
本书中介绍的重点命令通用于其他Linux发行版，是所有Linux用户必备参考书
前 言
目前的Linux操作系统的图形化操作界面已经相当优秀。在Linux上可采用多种图形管理程序，来改变不同的桌面图案或功能菜单，例如GNOME和KDE等，这一点是Windows操作系统单一界面所望尘莫及的。但Linux是一个基于命令行的操作系统，命令行的命令是Linux操作系统的灵魂和精华所在，只有学会并掌握命令行技术，才能真正精通Linux，并成为真正的Linux高手。命令行能够让你访问数百个工具软件。在命令行上面，你可以使用一个管道把工具软件结合在一起执行一项单个工具软件无法完成的工作。
为什么关注命令行
对于某些用户和执行某些任务来说，使用图形界面更容易、更简洁。这实际上依赖于你要做什么和你是谁。图形用户界面和命令行之间的区别就像极品飞车游戏的自动驾驶与自己使用技巧玩一样。不过还是建议你自己慢慢地打任务。这样更有意思，而且你会慢慢地发现自己的技术提高了很多，包括漂移，你多玩就会领悟很多技巧，如果直接下载补丁的话就没有太多的乐趣了。
初级Linux用户多将矛头指向相对图形界面缺乏的UNIX的时候，多少人发出疑问：为何要死守命令行？我们说一个简单的逻辑：图形界面人机交互好，图形界面简单，图形界面在某些任务方面，确实是高效而且简单的，但是，某些任务方面，图形界面是无能的。
Linux操作系统是一款文本式驱动的操作系统，这是它的优点所在，即使是Windows处理复杂任务的时候，图形界面也只是一个界面（举个例子：Word图形界面做得很单纯，但有不少任务仍需宏完成）。图形界面消耗的是物理内存的空间，你的屏幕上需要处理复杂的问题的时候，图形界面要密密麻麻地列出一堆列表，而它的作用不过是基于某个命令的图形外壳，这个时候，图形界面的直观作用和命令行没有区别。而命令行遵循的是逻辑原则，当你需要处理某个任务的时候，命令和参数的位置决定了你执行的逻辑，这个时候图形界面无法做到。也许有人说，对于图形界面的执行逻辑可以决定命令行的位置依赖性，并且可以在合适的地方增加更多的、更直观的元素。但是，问题是图形界面一旦达到这个地步，它的定制性能迅速下降。图形界面的优点就在于这里：对于简单、固定逻辑流程的东西，它处理起来简单、直观、高效，所以非常适合作为应用软件的交互界面，但是这也是图形界面的缺点：对于复杂变化逻辑的东西，它处理能力低下。
学习命令行，不是要抛弃图形界面，但是使用图形界面，无法抛弃命令行。如果想要自己的系统更完善，那么还是好好学习命令行吧。下面看一个实际的例子。
公司经常会同步过来很多文件，希望能按上传日期移动到相应的文件夹。
如果使用图形界面操作会比较麻烦，也许有人会说可以用Windows的一些同步软件帮忙，但是如果你的系统不兼容Windows呢？可以使用一个简单的shell脚本解决问题：
#!/bin/bash
ORIGDIR="/var/UploadFiles"
TARGDIR="/var/ClassifiedFiles"
filelist=$( ls $ORIGDIR/* )
for file in $filelist
do
date=$( ls -l $file | tail -1 | awk '{print $6}' )
if [ ! -e $TARGDIR/$date ]
then
mkdir $TARGDIR/$date
fi
mv $file $TARGDIR/$date
done
说明 变量ORIGDIR是上传目录，所有上传的文件都必须放在这个目录下，且该目录不能有子目录。变量TARGDIR是分类目录所在的目录，所有分类好的目录和文件都是该目录的子目录。每一个文件都按其修改日期（如果此文件在上传后未被修改的话，也应该就是其上传日期）放在以其修改日期命名的目录下。例如：位于$ORIGDIR目录下修改日期为2008-09-26的文件就被放在$TARGDIR/2008-09-26目录下。
总结：虽然软件可以解决不少问题，但是本来系统能解决的东西不需要软件。你的高效和稳定来自于你的命令行，而图形界面无法解决这个矛盾。
本书结构 
本书的每一章都建立在前面章节所介绍知识的基础之上，这样就形成了从始至终的一个自然的学习路径。读者从本书获得了足够的知识之后，也会获得相应的信心，同时会发现章节的顺序和结构就是一个很有用的参考工具。
第1部分 Linux基础
第1章Linux简介 介绍Linux的基础知识，包括桌面概述、各种可用的GUI应用程序，如何管理用户、目录和文件，以及如何检查系统进程以管理系统资源。
第2部分 从系统管理角度学习Linux 命令
第2章Linux文件系统及其相关处理命令 介绍Linux层次式文件系统，包括文件、文件名、路径名、使用目录、访问权限、物理链接和符号链接。理解文件系统将有助于组织数据，以便快速地查找信息。还可以与其他用户共享某些文件，同时保持其他文件为私有文件。
第3章Linux磁盘管理及其相关命令 介绍Linux硬盘与格式化及分区基本概念，学习Linux磁盘管理和分区及其相关命令。
第4章Linux 进程及其管理命令 介绍Linux 进程的基础知识：了解进程的属性，理解Linux下进程的结构。认识Linux进程的创建、进程的管理、Linux的第一个进程init，然后简单介绍Linux的线程，理解Linux守护进程，认识100个最常见Linux守护进程简介。最后学习Linux 进程管理命令。
第5章Linux网络体系及其相关命令 介绍Linux网络体系：TCP/IP网络模型、OSI七层模型。熟悉Linux网络配置文件后Linux网络管理命令。
第6章Linux用户管理及其相关命令 首先介绍Linux用户管理的方法和了解Linux用户配置文件。然后学习Linux用户管理命令。
第7章Linux的备份和压缩及其相关命令 首先介绍Linux备份策略，了解Linux下压缩文件格式。然后学习Linux压缩备份常用命令。最后根据Linux命令行数据备份实例学习Linux企业级数据备份和恢复。
第8章Linux系统管理命令 首先介绍Linux启动过程，了解LILO和GRUB启动管理器。然后学习90个最常用的Linux 系统管理命令。最后了解Linux 性能监控的方法，本章是本书重点章节。
第9章Linux服务器管理命令 首先介绍Linux服务器市场近况，然后学习Linux主流服务器管理命令的使用技巧｡最后解释xinetd和Linux服务器工作方式的关系。本章是本书重点章节。
第10章Linux打印系统及其相关命令 首先介绍Linux打印系统发展路线图，然后学习配置CUPS打印系统。最后学习Linux打印管理命令的使用方法。
第3部分 Linux开发编程中需要使用的命令
第11章Linux库应用及其相关命令 首先介绍Linux库的的定义、种类、常用的Linux库等基础知识。然后学习Linux库操作命令。最后学习构建、安装共享库以及库升级的过程。
第12章Linux开发常用命令gcc和make 介绍Linux的编程环境，内容包括：解释如何调用gcc编译器，描述如何使用make来更新一组程序。解释如何使用gdb调试C程序。另外学习gcc、make、gdb的命令选项。
第13章Linux编辑器vi和Emacs 介绍包括两个经典的强大的Linux命令行文本编辑器。绝大多数Linux发行版均包含广泛使用的vi编辑器和同样流行的GNU Emacs编辑器的“增强”版。使用文本编辑器可创建和修改文本文件，这些文本文件包括程序源代码、Shell脚本、备忘录以及文本格式化程序的输入数据。首先将介绍vi编辑器的使用手册，然后阐述了如何使用vi的许多高级功能，包括在搜索串中的特殊字符、通用缓冲区和命名缓冲区、参数、标记以及在vi中执行命令。Emacs编辑器部分将首先介绍Emacs使用手册，然后再介绍Emacs编辑器的很多高级功能，还包括Meta键、Alt键和Escape键的使用。该章还包括键绑定、缓冲区以及字符串和正则表达式的渐增式搜索和完全搜索。另外，该章还详细讲解了指针、光标、标记和区域的关联。
第14章使用Shell 一旦读者掌握了Linux基础，就可以使用已有的知识，采用Shell作为编程语言来构建更加复杂和专用的程序。本章就Shell 基础进行学习。
第4部分 附录
限于篇幅，本书的附录B、C在网上下载。
附录A解读LSB标准 LSB 的目标是使应用程序在任何 Linux 分发版上运行。LSB 实现这一点的方式是通过受一致性担保的支持的分发版和应用程序认证。但它将提供一个环境，在这个环境中，支持LSB标准的各种Linux系统可以相互竞争，用户可以在所有Linux系统中使用这些支持LSB标准的应用软件。本附录介绍LSB相关标准和基础知识。
附录B正则表达式和grep 讲解如何使用正则表达式以充分利用Linux的潜在威力。很多工具，包括grep、vi等，可以接受正则表达式来代替简单的字符串。单个的正则表达式可以匹配很多简单的字符串。
附录C命令行下使用Linux 帮助信息 详细描述了在使用Linux系统时遇到的问题的典型解决步骤。该附录还包括了很多Web站点的链接，这些站点提供了文档资料、有用的Linux信息、邮件列表和软件。
本书特色
目前市场上关于Linux命令行类的图书并不多，并且大部分只是对命令行的常用命令作简要介绍，既不全面也不深入，无法满足读者的需求。针对这种现状，本书对Linux命令行下的主要命令进行了非常详尽的系统介绍，弥补了该类图书的一个市场空白。本书的最大特点是详细，对每个命令均有详细的解说，并结合大量应用实例，力求把每一个命令的使用方法及其功能都介绍清楚，让读者能够更加深入地学习。随着Linux不同版本的不断推出和Linux应用的不断增加，新的Linux命令层出不穷，原有的命令也在不断更新，但市场上缺乏与命令行发展同步的参考用书。本书针对最新版本的Linux内核，重新整理和归纳了许多重要的常用命令和新增命令，力图为读者提供最新的命令行参考。从使用方便性上考虑，本书对Linux命令进行了详细的分类，将功能相同或相近的命令放在一起，使读者可以触类旁通、举一反三，以达到全面掌握的目的。对于初、中级用户来说，许多命令并不熟悉，而且也不了解命令的参数，需要查阅相应的资料。此时，本书就可以像字典一样供查阅。
本书的编写基于RHEL 5.0操作系统，汇集了Linux命令行下最常用、最重要的命令。这些命令同时也适用于其他Linux发行版，是所有Linux用户必备的参考用书。
本书适合的读者对象
Linux应用爱好者，Linux网络管理员和系统管理员以及对故障排除方面感兴趣的读者，IT行业的相关人员，大专院校计算机专业师生，Linux系统管理、网络管理、维护的从业人员。作为一本系统管理与维护、网络配置与管理的工具类用书，本书对于相关工程技术人员也是一本不可多得的参考书。
致谢
我首先感谢在编写过程中领导、朋友和家人的支持及帮助，包括51CTO网站编辑杨文飞、刘兵、李棉等人。另外，电子工业出版社的李冰、高洪霞编辑在我写书的过程中给了我无私的帮助和鞭策，为了使这一本书能尽快与读者见面，她们也付出了巨大的努力。李冰多次邀请专家对此书提出有益意见，对于此书的修改完善起到了重要作用。
由于作者水平有限，书中不足及错误之处在所难免，敬请专家和读者给予批评指正。
编 者 
2008年11月于北京
目 录  Linux基础
第1章 LINUX简介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
目录 从系统管理角度学习Linux命令
第2章 LINUX文件系统及其相关处理命令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磁盘管理及其相关命令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进程及其管理命令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网络体系及其相关命令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用户管理及其相关命令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
目录 LINUX的备份和压缩及其相关
第7章 命令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系统管理命令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服务器管理命令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打印系统及其相关命令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
目录 Linux开发编程中需要使用的命令
第11章 LINUX库应用及其相关命令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开发常用命令GCC12.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和EMACS13.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章 使用SHELL14.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