标题：Linux系统最佳实践工具
简介
对于某些用户和执行某些任务来说，使用图形界面更容易、更简洁。这实际上依赖于你要做什么和你是谁。图形用户界面和命令行之间的区别就像极品飞车游戏的自动驾驶与自己使用技巧玩一样。不过还是建议你自己慢慢地打任务。这样更有意思，而且你会慢慢地发现自己的技术提高了很多，包括漂移，你多玩就会领悟很多技巧，如果直接下载补丁的话就没有太多的乐趣了。
初级Linux用户多将矛头指向相对图形界面缺乏的UNIX的时候，多少人发出疑问：为何要死守命令行？我们说一个简单的逻辑：图形界面人机交互好，图形界面简单，图形界面在某些任务方面，确实是高效而且简单的，但是，某些任务方面，图形界面是无能的......>>
目录
第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