Linux系统工程师教程

2,803 views
2,767 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,803
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
66
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Linux系统工程师教程

  1. 1. Linux 实用教程 刘兵 吴煜煌等编著 本书从三个方面来介绍 Red Hat Linux 操作系统。第一部分是 Red Hat Linux 操作系统的安装、配置及常用命令。第二部分是 Red Hat Linux 操作系统的网络管理。包括如何管理用户,如何设置 DNS 服务器, SMTP/POP3 E-mail 服务器, Web 服务器, NFS 服务器以及文件和打印服务器, FTP 服务器的配置和维护,最后对 Linux 系统的网络安全及应用架构进行了讲解。第三部分是如何在 Red Hat Linux 进行程序设计,包括一个程序的编辑、编译、调试、生成 RPM 安装包的整个过程。本书使用 Red Hat 9.0 版本为例来描述。 本书适合高等学校计算机专业及计算机网络专业的学生使用。也可作为 Linux 系统管理人员、网络管理人员及广大 Linux 爱好者学习使用。
  2. 2. 1.1 Linux 概述 <ul><li>1.1.1 Linux 简介 </li></ul><ul><li>什么是 Linux </li></ul><ul><li>简单地说, Linux 是一套免费使用和自由传播的类 Unix 操作系统,它主要用于基于 Intel x86 系列 CPU 的计算机上。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix 兼容产品。 </li></ul><ul><li> Linux 最早由一位名叫 Linus Torvalds 的计算机爱好者开发,他的目的是设计一个代替 Minix 的操作系统,这个操作系统可用于 386 、 486 或奔腾处理器的个人计算机上,并且具有 Unix 操作系统的全部功能。 </li></ul>第 1 章 Linux 概况及安装
  3. 3. Linux 以它的高效性和灵活性著称。它能够在个人计算机上实现全部的 Unix 特性,具有多任务、多用户的能力。 Linux 可在 GNU (“不是 UNIX ” 工程的缩写)公共许可权限下免费获得,是一个符合 POSIX 标准的操作系统。 Linux 操作系统软件包不仅包括完整的 Linux 操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的 X-Windows 图形用户界面,如同我们使用 Windows NT 一样,允许我们使用窗口、图标和菜单对系统进行操作。
  4. 4. <ul><li>Linux 之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改和无约束地继续传播。另一个原因是,它具有 Unix 的全部功能,任何使用 Unix 操作系统或想要学习 Unix 操作系统的人都可以从 Linux 中获益。 </li></ul>
  5. 5. 2. Linux 系统的主要特点 <ul><li>开放性 : 指系统遵循世界标准规范,特别是遵循开放系统互连( OSI )国际标准 。 </li></ul><ul><li>多用户 : 是指系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。 </li></ul><ul><li>多任务 : 它是指计算机同时执行多个程序,而且各个程序的运行互相独立 。 </li></ul><ul><li>良好的用户界面 : Linux 向用户提供了两种界面:用户界面和系统调用。 Linux 还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。 </li></ul>
  6. 6. <ul><li>设备独立性 : 是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。 Linux 是具有设备独立性的操作系统,它的内核具有高度适应能力 </li></ul><ul><li>提供了丰富的网络功能 : 完善的内置网络是 Linux 一大特点。 </li></ul><ul><li>可靠的安全系统 : Linux 采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。 </li></ul><ul><li>良好的可移植性 : 是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。 Linux 是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。 </li></ul>
  7. 7. 3 LINUX 的组成 <ul><li>LINUX 的内核 : 内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 </li></ul><ul><li>LINUX SHELL : Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。 </li></ul><ul><li>LINUX 文件系统 : Linux 文件系统是文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统,如 EXT2 、 EXT3 、 FAT 、 VFAT 、 ISO9660 、 NFS 、 SMB 等。 </li></ul><ul><li>LINUX 应用系统 : 标准的 Linux 系统都有一整套称为应用程序的程序集,包括文本编辑器、编程语言、 X Window 、办公套件、 Internet 工具、数据库等。 </li></ul>
  8. 8. 1.1.2 主要的 Linux 版本 <ul><li>红旗 Linux </li></ul><ul><li>冲浪 Linux </li></ul><ul><li>中软 Linux </li></ul><ul><li>Red Hat Linux </li></ul><ul><li>Mandrake Linux </li></ul><ul><li>SuSe Linux </li></ul><ul><li>TurboLinux </li></ul>
  9. 9. 1.1.3 Red Hat Linux 的主要优势 1.2 Red Hat 9.0 的安装 1.2.1 Red Hat 9.0 的硬件需求 1.2.2 安装前的准备
  10. 10. 1.2.3 Red Hat 9.0 安装的步骤 ( 1 )语言选择:
  11. 11. ( 2 )键盘配置:
  12. 12. ( 3 )鼠标配置:
  13. 13. ( 4 )选择安装还是升级:
  14. 14. ( 5 ) 安装类型:
  15. 15. ( 6 )磁盘分区设置:
  16. 16. ( 7 )为系统分区:
  17. 17. ( 8 )添加分区:
  18. 18. ( 9 )引导装载程序配置:
  19. 19. ( 10 )网络配置:
  20. 20. ( 11 )防火墙配置:
  21. 21. ( 12 )语言支持的选择:
  22. 22. ( 13 )时区配置:
  23. 23. ( 14 )设置根口令
  24. 24. ( 15 )选择软件包组:
  25. 25. ( 16 )准备安装: 应该看到一个安装 Red Hat Linux 做准备的屏幕。 当你重新引导系统后,一份完整的安装日志可在 /root/install.log 中找到,以备今后参考。要取消安装进程,按计算机的重新启动按钮,或者使用 [Control]-[Alt]-[Delete] 组合键来重启计算机。
  26. 26. ( 17 )安装软件包:
  27. 27. ( 18 )创建引导盘:
  28. 28. ( 19 )视频卡配置:
  29. 29. ( 20 )配置显示器:
  30. 30. ( 21 )定制配置:
  31. 31. ( 22 )安装完成 祝贺你!你的 Red Hat Linux 9 安装现已完成! 安装程序会提示你做好重新引导系统的准备。 如果安装介质(磁盘驱动器内的磁盘或光盘驱动器内的光盘)在重新引导时没有被自动弹出,请记住取出它们。
  32. 32. 1.2.4 Red Hat Linux9.0 的登录和关闭 1. 登录: 使用 Red Hat Linux 系统的一个前提条件是登录。登录实际上是向系统做自我介绍,又称验证( authentication )。如果键入了错误的用户名或口令,就不会被允许进入系统。 Linux 系统有普通用户和超级用户之分。普通用户的用户名是任意的,而超级用户的用户名是 root 。 Linux 系统是严格区分大小写的,无论是用户名、文件名、设备名都是如此。即 liubing 、 LiuBing 、 LIUBING 是三个不同的用户名或文件名。图 1-21 显示为 Red
  33. 34. 当口令输入完毕后,按回车键进入 Red Hat Linux9.0 图形化界面,如图 1-22 所示。
  34. 35. 2. 注销 如果想切换用户登录,可采用注销当前图形化桌面会话。操作的方法是: ( 1 )依次选择“主菜单->注销”命令。 ( 2 )打开如图 1-13 所示的确认对话框,选择“注销”选项,然后点击“确定”按钮。如果你想保存桌面的配置以及还在运行的程序,选中“保存当前设置”复选框。
  35. 36. 图 1-23 “ 注销”对话框 图 1-23 “ 注销”对话框
  36. 37. 3. 关机和重新启动 关切和重新启动的方法如下: ( 1 )依次选择“主菜单->注销”命令。 ( 2 )在打开的对话框,选择“关机”或“重新启动”选项,然后点击“确定”按钮,即可完成关机或重新启动操作。
  37. 38. 1.3 Linux 的基本使用和设置 <ul><li>1.3.1 显示属性的设置 </li></ul><ul><li>改变桌面背景 </li></ul><ul><li>( 1 )在 Linux 桌面上单击鼠标右键,在弹出的快捷菜单中选择“改变桌面背景”命令,打开如图 1-24 所示的页面。 </li></ul><ul><li>( 2 )在图 1-24 中,单击“选择图片”下的按钮,打开如图 1­-25 所示的选择图片对话框。 </li></ul>
  38. 39. 图 1-25 选择图片
  39. 40. ( 3 )在图 1-25 中,通过选择不同的文件夹下的不同图片,来选择一个满意的背景图片,然后单击“确认”按钮,返回到图 1-24 的对话框。 ( 4 )还可进一步对背景图片进行居中、缩放、拉伸等处理。 ( 5 )当选择无图片时,可通过“背景网格”,以及左测和右测的颜色来设置背景。 ( 6 )设置完成后,单击“关闭”按钮,桌面显示如图 1-26 所示。
  40. 41. 2. 显示设置 在此设置中可对显示分辨率、显示器的类型及显卡进行设置,具体的方法如下: ( 1 )依次选择“主菜单->系统设置->显示”,打开如图 1-27 所示的显示设置对话框。在此对话框中,用户可选择设置“分辨率”、“色彩深度”。
  41. 42. ( 2 )单击“高级”选项卡,打开如图 1-28 所示的显示高级设置,还可对显示器的类型、物理分辨率、以及视频卡进行设置。 ( 3 )设置完成后,单击“确定”按钮。
  42. 43. 1.3.2 配置日期和时间 ( 1 )依次选择“主菜单->系统设置->日期 & 时间”,或在 shell (如 XTerm 或 GNOME 终端)提示下键入 redhat-config-date 命令。 ( 2 )在打开的图 1-29 中,可通过给出的界面来修改年、月、日、时、分、钞。改变方法如下:     要改变日期,使用箭头左右移动月份来改变月份;使用箭头左右移动年份来改变年份,然后单击星期中的日期来改变星期中的日期。           要改变时间,使用上下箭头按钮,它们在“时间”部分中的“小时”、“分钟”、和“秒钟”旁边。 ( 3 )单击图 1-29 中的“时区”选项卡,打开图 1-30 ,可对安装过程中的时区进行重新设置。
  43. 44. 图 1-30 时区设置 ( 4 )在单击“确定”按钮之前,前面的所有设置都不会生效。当确认设置完毕后,单击“确定”按钮。
  44. 45. 1.3.3 软盘和光盘的使用 在这里主要讨论如何在软盘中读取和写入文件,如何格式化软盘,以及如何从光盘中读取和复制数据。 1. 软盘的使用 ( 1 )挂载和卸载软盘 在使用软盘之前,它一定要先被挂载。要挂载软盘,把它插入软盘驱动器,然后在 终端提示下键入“ mount /mnt/floppy/ ” 。当该软盘的文件系统被挂载到 “ /mnt/floppy ” 目录中时,软盘驱动器的活动灯应该闪动。可以通过使用“ cd /mnt/floppy/ ” 命令转换到那个目录里来存取软盘上的内容。
  45. 46. 当完成了软盘上的任务后,在把它从驱动器中取出之前,应该先卸载它。关闭所有可能还在使用软盘上文件的程序或展示软盘内容的程序,然后在 终端提示下键入以下命令: # umount /mnt/floppy/
  46. 47. ( 2 )在 MS-DOS 软盘上存放 Linux 文件 使用以下命令来复制文件(把 filename 替换为要复制的文件): # cp filename /mnt/floppy 然后,便可以卸载软盘并把它从驱动器中取出。软盘中的新文件现在就可以从 Windows 机器上被存取了 ( 3 )格式化软盘 如果只在 Red Hat Linux 中使用软盘,仅需使用 ext2 文件系统来格式化 它。 一旦已在软盘上创建了 ext2 文件系统,就可以使用与在硬盘上操作文件和目录相同的方法来操纵该软盘的内容。
  47. 48. 2. 光盘的使用 ( 1 )在文件管理器中使用光盘 ( 2 )在终端提示下使用光盘 用户还可以手工地在 shell 提示下挂载和卸载光盘。在光盘驱动器内插入一张光盘,打开 终端,然后键入以下命令: # mount /mnt/cdrom 这样,光盘就会被挂载,便可以用文件管理器来使用它了。还可以通过点击桌面上的主目录图标,并在位置栏内键入“ /mnt/cdrom ” 来访问光盘。 光盘上工作完毕后,在把它从驱动器内弹出之前必须卸载它。关闭所有使用光盘的应用程序或文件管理器,然后在终端提示下键入以下命令: # umount /mnt/cdrom 现在,便可以安全地按光盘驱动器上的弹出按钮来取出光盘。
  48. 49. 1.3.4 打印机的安装与设置 Red Hat Linux 包括了一个用来配置本地和远程打印机的图形化工具。使用它,不必再安装额外的驱动程序和应用程序,此工具使用渐进的步骤来帮助用户配置打印机。有两种方式打开打印机的图形化配置工具,方法如下:           依次选择“主菜单->系统设置-> Printing ”           双击桌面上的“从这里开始”图标,选择“系统设置”,然后在打开的对话框中选择“ Printing ”
  49. 50. 1. 添加本地打印机 ( 1 )要添加并行端口或 USB 端口的本地打印机,单击打印机配置工具主窗口上的“新建”按钮。
  50. 51. ( 2 )在如图 1-36 所示的窗口中,在“名称”后的文本框中输入一个独特名称。
  51. 52. ( 3 )名称输入完毕后,单击“前进”按钮,打开如图 1-37 所示的窗口。
  52. 53. ( 4 )选择了打印机的队列类型后,下一步就是选择打印机型号。点击“前进”按钮,打开如图 1-38 所示的打印机型号对话框。。
  53. 54. ( 5 )选择后,单击“前进”按钮,进入到打印机配置的最后一步,即确认打印机配置。如果设置正确,则单击“应用”按钮来添加打印队列,否则,点击“后退”按钮来修改打印机配置。 2. 打印测试页 要打印测试页,从打印机列表中选择想试验的打印机,然后从图 1-39 中的“测试”拉下菜单中选择合适的测试页。
  54. 55. 3. 修改现存打印机 要打印测试页,从打印机列表中选择想试验的打印机,然后从图 1-39 中的“测试”拉下菜单中选择合适的测试页 。
  55. 56. 4. 管理打印机 在 GNOME 桌面环境下,有几种打开打印机管理器的方法: 单击面板上的「打印机管理器」图标来启动 GNOME 打印管理器。 依次选择“主菜单->系统工具->打印管理器”。 打开如图 1-41 所示的打印机管理器对话窗口。在该对话框中,双击一个已配置的打印机来查看打印假脱机,如图 1-42 所示 1-41 1-42
  56. 57. 1.4 使用 RPM 来管理软件包 RPM 软件包管理器( RPM )是开放打包系统,任何人都可以使用。它在 Red Hat Linux ,以及其它 Linux 和 UNIX 系统上运行。对于终端用户来说, RPM 简化了系统更新。安装、删除安装、升级 RPM 软件包可以使用简短的命令就可完成。 RPM 维护一个已安装软件包和它们的文件数据库,因此,可以在系统上使用功能强大的查询和校验。 对于开发者来说, RPM 允许把软件编码和程序打包,然后提供给终端用户。
  57. 58. 1.4.1 RPM 的设计目标 <ul><li>可升级性 </li></ul><ul><li>使用 RPM ,可以不必全盘重装就可以在系统上升级个别组件。当得到一个基于 RPM 的操作系统的新发行版本(如 Red Hat Linux ),不必重新安装系统。 </li></ul><ul><li>强大的查询功能 </li></ul><ul><li> RPM 被设计来提供强大的查询功能。可以在整个数据库中搜索软件包或某些特定文件。还可以轻易地了解到哪个文件属于哪个软件包,软件包来自哪里。 </li></ul>
  58. 59. 3. 系统校验 RPM 另一项强大的功能是软件包校验。 4. 纯净源码 一个重要的设计目标是允许使用与软件的原创者所发行源码一致的“纯净”软件源码。使用 RPM ,会有纯净源码、使用过的补丁、以及完整的建构指令 。
  59. 60. 1.4.2 RPM 有基本操作模式 RPM 有五种基本操作模式(不包括软件包建构):安装、删除安装、升级、查询和校验,本节包括对每一模式的总览。想了解完整的选项和细节,请使用 rpm --help 命令。 RMP 包的名称格式 RPM 包的名称有其特有的格式,如典型的 RPM 软 名称类似于: liubing-1.0-1.i386.rpm 该文件名包括软件包名称“ liubing ” ;软件的版本“ 1.0 ” 其中包括主版本号和次版本号;“ i386 ” 是软件所运行 硬件平台;最后“ rpm ” 做为文件的扩展名,当然代表文 件的类型为 RPM 包。
  60. 61. 2. 安装 RPM 包 命令格式: rpm –i RPM 包的全路径文件名 如果想安装 RPM 包并显示安装进度信息可使用如下命令格式: rpm –ivh RPM 包的全路径文件名 在此命令的参数选项中:           i :代表安装。           v :代表 verbose ,设置在安装过程中将显示详细的信息。           h :代表 hash ,设置在安装过程中将显示“ # ” 来表示安装的进度。 对于较大的 RPM 包,在安装时尤其需要使用“ -ivh ” 选项,这样可以看到安装过程的相应信息,更可以了解安装的进度。
  61. 62. 3. 删除 RPM 包 命令格式: rpm -e RPM 包名称 rpm –e 命令用于从当前系统中删除已安装的软件包,需要在信念中指定要删除的软件包的名称而不是安装命令中的软件包安装文件名。 ( 1 )首先在终端上将系统中自带的输入法删除。 # rpm –e miniChinput ( 2 )进入到下载 fcitx 的目录(假设是 /input 目录) # cd /input
  62. 63. <ul><li>( 3 )然后使用 RPM 命令来安装 fcitx </li></ul><ul><li># rpm –ivh fcitx-1.8.5-1.rpm </li></ul><ul><li>( 4 )要让此输入法生效,还必须重新启动 Linux 系统。 </li></ul><ul><li>升级 RPM 包 </li></ul><ul><li>命令格式 : </li></ul><ul><li>rpm -U RPM 包的全路径文件名 </li></ul><ul><li>5. 查询 RPM 包 </li></ul><ul><li>命令格式: </li></ul><ul><li>rpm -q </li></ul><ul><li>使用 rpm -q 命令来查询安装的软件包的数据库 </li></ul><ul><li>rpm -q fcitx 命令会显示安装的软件包 fcitx 的 </li></ul><ul><li>名称、版本、和发行号码。 </li></ul><ul><li>  </li></ul>
  63. 64. 1.-a : 查询所有已安装的软件包。  2. -f <file> : 会查询拥有 <file> 的软件包。当指定文件时,必须指定文件的完整路径(如 /usr/bin/ls )。 3. -p <packagefile> : 查询软件包 <packagefile> 。 以下选项用来选择要搜索的信息类型。它们叫做信息选择选项。        -i :显示软件包信息,包括名称、描述、发行版本、大 小、制造日期、生产商,以及其它杂项。 -l :显示软件包所含的文件列表。 -s :显示软件包中所有文件的状态。          -d :显示被标记为文档( man 页、 info 页、 README 等等)的文件列表。 -c :显示被标记为配置文件的文件列表。你在安装后改变这些文件来使软件包适用于你的系统(譬如, sendmail.cf 、 passwd 、 inittab 等等)。
  64. 65. 6. 校验已安装的软件包 命令格式: rpm -V 校验软件包比较从某软件包安装的文件和原始软件包中的同一文件的信息。 校验的最简单用法是 rpm -V fcitx ,它校验所有在 fcitx 软件包内的文件是否和最初安装时一样。
  65. 66. 要校验包含某一特定文件的软件包: # rpm -Vf /bin/vi 要校验所有安装了的软件包: # rpm -Va 要根据 RPM 软件包文件来校验安装了的软件包: # rpm -Vp fcitx-1.8.5-1.rpm 单用一个 . (点)意味着测试通过。下列字符代表某类测试失败:         5 — MD5 校验和        S — 文件大小 L — 符号链接 T — 文件修改时间      D — 设备 U — 用户 G — 组群 M — 模式(包括权限和文件类型) ? — 不可读文件
  66. 67. 第 2 章 Linux 的常用命令 本章学习目标 通过对本章的学习,读者应该掌握以下主要内容:           命令的使用方式           文件及目录操作命令           文件压缩命令           联机帮助命令           进程管理的命令
  67. 68. 2.1 使用命令 2.1.1 命令的使用方式 在 Linux 系统中打开终端的方式有以下两种: 种是在桌面上依次单击“主程序->系统工具->终端”可打开如图 2-1 的终端窗口;另一种是在 Linux 桌面上单击鼠标右键,从弹出的快捷菜单中选择“终端”命令,也可打开终端窗口。
  68. 69. 一般的 Linux 使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作 要说明的是,不同的用户登录其终端的提示符略有不同,在图 2-1 中显示的是超级用户的提示符。如果是一般用户登录,其提示符如图 2-2 所示。 Linux 系统是以全双工的方式工作,即从键盘把字符输入系统,系统再将字符回送到终端并显示出来。通常,回送到终端的字符与输入字符相同,因此操作员看到的正是自己输入的字符。但也有个别的时候,系统不回送符号。
  69. 70. 键盘上大多数字符是普通打印字符,它们没有特殊含义。只有少数特殊字符指示计算机做专门的操作。其中最常见的特殊字符是回车键 RETURN ,它表示输入行结束;系统收到回车信息便认为输入的当前行结束,系统的响应是让屏幕光标回到下一行行首。 回车符只是控制符的一个例子。控制符是指控制终端工作方式的非显示字符。输入一般控制符必须先按下控制键,或称作 CTRL 键,然后再按所对应的字符键。例如,输入回车符可以直接按回车键,也可以先按控制键,再按 m 键。 CONTROL-m 或 CTL-m 也是回车符。一些常用的控制符有: CTL-d ,它表示终端的输入结束; CTL-g 控制终端响铃; CTL-h 称为退格键,用于改正输入的错误 . 此外还有两个特殊键,一个是 DELETE 键,另一个是 BREAK 键。大多数 LINUX 系统中, DELETE 键表示立即终止程序。在有些系统里,也用 CTL-c 终止程序。一般说来, BREAK 键与 DELETE 键、 CTL-c 的功能基本相同。
  70. 71. 终端显示提示符后,用户就可以输入命令请示系统执行。这里所谓命令就是请示调用某个程序。例如当用户输入 date 命令时,系统就去调用 date 程序显示当前的日期和时间,终端屏幕上会出现类似下面的信息: [root@lbliubing root]# date 日 2 月 1 15:49:11 CST 2004 当命令输入完毕后,一定不要忘记按回车健,因为系统只有收到回车键才认为命令行结束。 又如 询问当前有哪些用户挂在系统里。命令及响应如下所示: [root@lbliubing root]# who root :0 Feb 1 15:41 root pts/0 Feb 1 15:46 (:0.0) jl pts/1 Feb 1 15:40 (:0.0)
  71. 72. 还有另外的方法 可以查看目前登录用户的注册信息。命令及响应如下所示: [root@lbliubing root]# who am i root pts/0 Feb 1 15:46 (:0.0) 这时系统仅回送用户自己的注册信息。假如用户打错了命令,系统将回答这一命令没有找到。 [root@lbliubing root]# whom whom: unable to open /root/Mail/draft: 没有那个文件或目录 上面几条命令在终端中的输入方法及响应如图 2-3 所示。
  72. 73. 另外,在终端上还有一个命令补齐 (Command-Line Completion) 的操作技巧,所谓命令补齐是指当键入的字符足以确定目录中一个唯一的文件时,只须按 Tab 键就可以自动补齐该文件名的剩下部分,例如要把目录 /freesoft 下的文件 gcc-2.8.1.tar.gz 解包,当键入到 tar xvfz /freesoft/g 时,如果此文件是该目录下唯一以 g 开头的文件,这时就可以按下 Tab 键,这时命令会被自动补齐为: tar xvfz /freesoft/gcc-2.8.1.tar.gz ,非常方便
  73. 74. 2.1.2 特殊字符 在 Linux 系统的终端中有几个最有用的 bash 变量,这些变量变量名及简单描述如下:        HISTFILE : 用于贮存历史命令的文件。           HISTSIZE : 历史命令列表的大小。           HOME : 当前用户的用户目录。           OLDPWD : 前一个工作目录。           PATH : bash 寻找可执行文件的搜索路径。           PS1 : 命令行的一级提示符。           PS2 : 命令行的二级提示符。           PWD : 当前工作目录。 SECONDS : 当前 shell 开始后所流逝的秒数。
  74. 75. 这意味着 bash 保留了一定数目的先前已经在 shell 里输入过的命令。这个数目取决于一个叫做 HISTSIZE 的变量。 使用历史记录列表最简单的方法是用上方向键。 另一个使用命令历史文件的方法是用 bash 的内部命令 history 和 fc(fix 命令 ) 命令来显示和编辑历史命令。 history 命令能以两种不同的方法来调用。第一种是: history [n] 当 history 命令没有参数时,整个历史命令列表的内容将被显示出来。使用 n 参数的作用是仅有最后 n 个历史命令会被列出 。 例如, history 5 显示最后 5 个命令。 调用 history 命令的第二种方法用于修改命令历史列表文件的内容。命令的语法如下: history [-r|w|a|n] [filename]
  75. 76. 这种形式中, -r 选项告诉 history 命令读命令历史列表文件的内容并且把它们当作当前的命令历史列表。 -w 选项将把当前的命令历史记录写入文件中并覆盖文件原来的内容。 -a 选项把当前的命令历史记录追加到文件中。 -n 选项将读取文件中的内容并加入到当前历史命令列表中。如果 filename 选项没有被指定, history 命令将用变量 HISTFILE 的值来代替 。 命令别名通常是其他命令的缩写,用来减少键盘输入。 还有一个使工作变得轻松的方法是使用命令别名 命令格式为 : alias [ alias-name= ’ original-command ’ ] 其中, alias-name 是用户给命令取的别名, original-command 是原来的命令和参数。需要注意的是,由于 Bash 是以空格或者回车来识别原来的命令的,所以如果不使用引号就可能导致 Bash 只截取第一个字,从而出现错误。
  76. 77. 注意:在定义别名时,等号两边不能有空格,否则 shell 将不能决定要做什么。仅在命令中包含空格或特殊字符时才需要引号。如果键入不带任何参数的 alias 命令,将显示所有已定义的别名。 Bash 有两级提示符。第一级提示符是经常见到的 Bash 在等待命令输入时的情况。第一级提示符的默认值是 $ 符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改 PS1 变量的值。例如将其改为: PS1=” 输入一个命令: ” 第二级提示符是当 Bash 为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为“>”。如果需要自己定义该提示符,只需改变 PS2 变量的值。例如将其改为: PS2=” 更多信息: ”
  77. 78. 用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前时间之类的信息。 表 2-1 列出了最常用的一些特殊字符及其含义。 表 2-1   bash 提示符常用特殊字符
  78. 79. 显示当前工作目录 w 显示当前工作目录基准名 W 显示当前用户的用户名 u 显示当前时间 显示正在运行的 Shell 的名称 s 打印一个换行符,这将导致提示符跨行 显示运行该 shell 的计算机主机名 h 显示当前日期 d 显示一个反斜杠 显示一个 $ 符号,如果当前用户是 root 则显示 # 符号 $ 显示 shell 激活后,当前命令的历史编号 # 显示该命令的历史编号 ! 说明 特殊字符
  79. 80. 下面来看几个实际例子: PS1=”d” 将使提示符变成显示日期,如下所示: 一  2 月  02 而 PS1=”d” ,将使提示符变成如下所示: d 若 PS1=&quot;[W@h w]&quot; 将使提示符变成如下所示 : [nic@lbliubing ~/liunuxbook/nic] 该例就是使用三个特殊字符的组合得到的。
  80. 81. 以上的各例在 Red Hat Linux9.0 系统的终端中所显示的结果如图 2-4 所示。
  81. 82. 2.1.3 通配符基础 通配符 又称多义符。在描述文件时,有时在文件名部分用到一些通配符,以加强命令的功能。在 Linux 系统中有以下基本的通配符:            ?:表示该位置可以是一个任意的单个字符。           *:表示该位置可以是若干个任意字符。           方括号 [charset] :可替代 charset 集中的任何单个字符 下面对方括号通配符进行一些说明。例如 [cChH] :表示在文件的该位置中可出现任意单个的 c 或 h 字符的大小写形式 。 另个,通配符集还能描述介于字符对之间的所有字符。如“ [a-z] ” 就可以代 替任意小写字母,而 [a-zA-Z] 则可替代任意字母。注意可替代的字符包括 a 到 z 和 A 到 Z 字符对之间的所有字符。
  82. 83. 那么,是否能在一条指令中用多个通配符呢?答案是肯定的。如 rm a*out*tmp? 该命令可以删除一系列临时性的输出文件,如 ab.out.temp1 、 ab.out.temp1 等。 UNIX 或 Linux 系统可将一定相关的文件看作一个集合的一部分,用户可以用该集合去匹配。 所以,如果需要显示 nic-1.png , nic-2.png , nic-3.png , nic-4.png , nic-5.png ,只须要在终端的命令提示符后输入: ls nic-[1-5].png
  83. 84. 这样利用通配符可以使指令的输入变得更加灵活。该技巧的可很容易实现显示一些文件名相关的文件。以上的各例在 Red Hat Linux9.0 系统的终端中所显示的结果如图 2-5 所示。
  84. 85. 2.2 文件概念及操作命令 2.2.1 文件显示命令 显示指定工作目录中所包含的内容的指令是 ls , 要 说明的是 ls 命令列出文件的名字,而不是文件的内容。该命令的使用方式如下 : ls [ 选项 ] [ 文件目录列表 ] ls 命令中的常用选项如下:        -a :显示所有文件及目录 (ls 规定将文件名或目录名中开头为 &quot;.&quot; 的视为隐藏档,不会列出 )           -c :按列输出,纵向排序           -x :按列输出,横向排序           -l :除文件名外,也将文件状态、权限、拥有者、文件大小 等信息详细列出           -t :根据文件建立时间的先后次序列出           -A :同 -a ,但不列出 &quot;.&quot; ( 目前目录 ) 及 &quot;..&quot; ( 父目录 )           -X :按扩展名排序显示           -R :递归显示下层子目录           --help :显示帮助信息           --version :显示版本信息
  85. 86. Linux 支持多种文件类型,每一类用一个字符来表示,其说明如下:             - :常规文件           d :目录           b :块特殊设备           c :字符特殊设备           p :有名管道           s :信号灯           m :共享存储器 文件类型的字符表示文件的权限,权限由三个字符串组成,这三个字符串分别表示:该文件所有者的权限、组中其他人的权限和系统中其人的权限;每个字符串又由三个字符组成,依次表示对文件的读(用字符 r 表示)、写(用字符 W 表示)和执行权限(用字符 x 表示)。当用户没有相应的权限时,该权限的对应位置用短线“ - ” 来表示。
  86. 87. 例如: drwxr-x- -- 表示的含义是: d 表示这条信息是目录;目录拥有者的权限是 rwx (表示有读、写和执行权限);组中其他人对该目录的权限是 r-x (表示有读和执行权限,没有写权限),系统中其他人对该目录的权限是 --- (表示读、写和执行权限都没有)。 下面是使用命令来显示帮助和版本信息,命令如下: #ls --version #l ls --help |more
  87. 88. 2.2.2 查找、排序及显示指定文件内容的命令 1. 查找文件 在 Linux 系统中查找文件的命令通常为 find 命令。 find 命令可在使用、管理 Linux 系统中方便地查找所需要的指定文件。 find 命令的语法格式如下: #find [ 目录列表 ] [ 匹配标准 ] 在命令格式中有两个参数,说明如下:           目录列表:希望查询文件或文件集的目录列表,目录间用空格分隔。           匹配标准:希望查询的文件的匹配标准或说明。详细的匹配标准如表 2-2 所示。
  88. 89. 显示整个文件路径和名称。一般来说,都要用 -print ,如果没有这个参数,则 find 命令进行所要求的搜索是没有显示结果的。 -print 匹配所有大小为 n 块的文件( 512 字节块,若 k 在 n 后,则为 1K 字节块) 。 -size n 匹配所有修改时间比 file 文件更新的文件。 -newer 文件 匹配所有在前 n 天内修改过的文件。 -mtime n 匹配所有在前 n 天内访问过的文件。 -atime n 匹配所有用户序列号是前面所指定的用户序列号的文件,可以是数字型的值或用户登录名 。 -user 用户号 匹配所有连接数为 n 的文件。 -links n 匹配所有类型为 x 的文件。 x 是 c (字符特殊), b (块特殊), d (目录), p (有名管道), l (符号连接), s (套接文件)或 f (一般文件)。 -type x 匹配所有模式为指定数字型模式值的文件。不仅仅是读,写和执行,所有模式都必须匹配。如果在模式前是负号( - ),表示采用除这个模式外的所有模式。 -perm 模式 告诉 find 要找什么文件;要找的文件包括在引号中,可以使用通配符( * 和?) -name 文件 说          明 表达式
  89. 90. 1 )通过文件名查找 知道了某个文件的文件名,却不知道它存于哪个目录下,此时可通过查找命令找到该文件,命令 如下: # find / -name httpd.conf –print 2 )根据部分文件名查找 当要查找某个文件时,不知道该文件的全名,只知道这个文件包含几个特定的字母,此时用查找命令也是可找到相应文件的。这时在给字查找文件名时通配符“ * ” 、“ ? ” 。例如,还是查找文件“ httpd.conf ” ,但仅记得该文件名包含“ http ” 字符串,可使用如下命令查找 : #find / –name *http* -print
  90. 91. 3 )根据文件的特征查询 如果仅知道某个文件的大小、修改日期等特征也可使用 find 命令把该文件查找出来。例如,知道一个文件尺寸小于为 2500bytes ,可使用如下命令查找: #find /etc –size -2500c –print 下面是以时间特征为查找条件的 find 命令函数的参数:          amin n 查找 n 分钟以前被访问过的所有文件 .           atime n 查找 n 天以前被访问过的所有文件 .           cmin n 查找 n 分钟以前文件状态被修改过的所有文件 .           ctime n 查找 n 天以前文件状态被修改过的所有文件 .           mmin n 查找 n 分钟以前文件内容被修改过的所有文件 .           mtime n 查找 n 天以前文件内容被修改过的所有文件 .
  91. 92. 2. 显示文本文件内容 显示文本文件内容的命令是 cat 命令,用来将文件的内容显示到终端上,其命令语法如下: cat [ 选项 ] 文件列表 命令中的参数说明如下:            常用选项如表 2-3 所示        文件列表:这是要连接文件的选项列表。如果没有指定文件或连字号( - ),就从标准输入读取。 表 2-3 cat 命令常用选项 将相连的多个空行用单一空行代替 。 -s 计算所有输出行,开始为 1 。 -n 在每行末尾显示 $ 符号 。 -e 计算所有非空输出行,开始为 1 。 -b 说       明 选 项
  92. 93. 3. 查找文件内容 <ul><li>查找文件内容的命令是 grep 命令。其使用的语法如下: </li></ul><ul><li>grep [ 选项 ] 匹配字符串 文件列表 </li></ul><ul><li>命令中的参数说明如下: </li></ul><ul><li>        选项如表 2-4 所示 </li></ul><ul><li>          文件列表: </li></ul><ul><li>  匹配字符串:希望在文件中查到的串。 </li></ul><ul><li>表 2-4 grep 命令的常用选项 </li></ul><ul><li>选项 说明 </li></ul><ul><li>-v 列出不匹配串或正则表达式的行。 </li></ul><ul><li>-c 对匹配的行计数。 </li></ul><ul><li>-l 只显示包含匹配的文件的文件名。 </li></ul><ul><li>-h 抑制包含匹配文件的文件名的显示 </li></ul><ul><li>-n 每个匹配行只按照相对的行号显示。 </li></ul><ul><li>-i 产生不区分大小写的匹配,缺省状态是区分大小写。 </li></ul>
  93. 94. 4. 排序命令 sort 命令的功能是对文件中的各行进行排序 . sort 命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。 Sort 命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较。该命令的语法格式如下: sort [ 选项 ] 文件 说明: sort 命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“ - ” ,则表示排序内容来自标准输入。  
  94. 95. <ul><li>2.2.3 比较文件内容的命令 </li></ul><ul><li>comm 命令 </li></ul><ul><li>如果想对两个有序的文件进行比较,可以使用 comm 命 令。该命令的使用语法如下: </li></ul><ul><li>comm [- 123 ] file1 file2 </li></ul><ul><li>说明:该命令是对两个已经排好序的文件进行比较。其中 file1 和 file2 是已排序的文件。 comm 读取这两个文件,然后生成三列输出:仅在 file1 中出现的行;仅在 file2 中出现的行;在两个文件中都存在的行。如果文件名用“ - ” ,则表示从标准输入读取。 </li></ul>
  95. 96. <ul><li>diff 命令 </li></ul><ul><li>diff 命令用于比较两个文件内容的不同,其命令 语法格式如下: </li></ul><ul><li>diff [ 参数 ]  原文件 目标文件 </li></ul><ul><li> 其中“源文件”和“目标文件”是用户要比较的两个文件。 </li></ul><ul><li>表 2-4 diff 命令的常用参数 </li></ul><ul><li>参数 说明 </li></ul><ul><li>a 将所有文件当做文本文件来处理 </li></ul><ul><li>b 忽略空格造成的不同 </li></ul><ul><li>B 忽略空行造成的不同 </li></ul><ul><li>q 只报告什么地方不同,不报告具体的不同信息 </li></ul><ul><li>H 利用试探法加速对大文件的搜索 </li></ul><ul><li>i 忽略大小写的变化 </li></ul><ul><li>l 用 pr 对输出进行分页 </li></ul><ul><li>r 在比较目录时比较所有的子目录 </li></ul><ul><li>s 两个文件相同时才报告 </li></ul><ul><li>v 在标准输出上输出版本信息并退出 </li></ul>
  96. 97. 2.2.4 复制、删除和移动文件的命令 1. 文件复制命令 Linux 下的 cp 命令用于复制文件或目录,该命令是最重要的文件操作命令,其命令格式如下: cp   [ 选项 ]   源文件 目标文件 cp   [ 选项 ]   源文件组  目标目录 参数说明如下:            源文件:要拷贝的文件。           目标文件:目标名。也可以是目录名,这种情况下,源文件名作为目标文件名,而文件放在该目录下。           源文件组:要拷贝文件的由空格分隔的列表。           目标目录:目标目录。 常用命令的选项列表如表 2-5 所示。
  97. 98. 表 2­-5 cp 命令常用选项 常用选项 说      明 -a 在备份中保持尽可能多的源文件结构和属。 -b 作将要覆盖或删除文件的备份。 -f 删除已存在的目标文件。 -i 提示是否覆盖已存在的目标文件。 -p 保持原先文件的所有者,组权限和时间标志 -r 递归拷贝目录,把所有非目录文件当普通文件拷贝。 -R 递归拷贝目录。
  98. 99. 2. 文件的删除命令 rm 命令可从文件系统中删除文件及整个目录。 rm 命令所使用的命令格式如下: rm [ 选项 ] 文件列表 参数说明如下:           常用命令的选项列表如表 2-6 所示。           文件列表:希望删除的用空格分隔的文件列表,可以包括目 录名。 表 2­-6 rm 命令常用选项 常用选项 说      明 -r 删除文件列表中指定的目录,若不用此标志则不删除目录 -I 指定交互模式。在执行删除前提示确认。任何以 Y 开始的 响应都表示肯定;其他则表示否定。 -f 指定强行删除模式。通常,在删除文件权限可满足时 rm 提 示。本标志强迫删除,不用提示。 -V 在删除前回显文件名。 -- 指明所有选项结束。用于删除一个文件名与某一选项相同 的文件。例如:假定偶然建立了名为 -f 的文件,又打算删 除它,命令 rm -f 不起任何作用,因为 -f 被解释成标志而不 是文件名;而命令 rm -- -f 能成功地删除文件。
  99. 100. 3. 移动文件 在 Linux 系统中,移动文件可使用 mv 命令。 Mv 命令还可改文件改名,即把源文件以一个新文件名移动到另一个新的目录中去。该命令所使用语法形式有: mv [-f] [-i] 文件 1 文件 2 mv [-f] [-i] 目录 1 目录 2 mv [-f] [-i] 文件列表 目录 命令中的参数说明如下:
  100. 101.            -f :通常情况下,目标文件存在但用户没有写权限时, mv 会给出 提示。本选项会使 mv 命令执行移动而不给出提示。           -i :交互模式,当移动的目录已存在同名的目标文件名时,用覆 盖方式写文件,但在写入之前给出提示。         文件 : 源文件名。      文件 2 :目标文件名(新文件名)。       目录 1 :源目录名。 目录 2 :目标目录名(新目录名)。      文件列表 : 用空格分隔的文件名列表。本选项用于文件保持它们 的 名字被移动到一个新目录。         目录:目标目录。
  101. 102. 2. 5 文件内容统计命令 wc 命令的功能为统计指定文件中的字节数、字数、行数 , 并将统计结果显示输出。 wc 命令使用的语法格式如下: wc [ 选项 ] 文件列表 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。 wc 同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下: -c :统计字节数。         -l :统计行数。 -w :统计字数。
  102. 103. <ul><li>2.2.6 命令的输入和输出 </li></ul><ul><li>在 Linux 系统中,执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件( stdin ),通常对应终端的键盘;标准输出文件( stdout )和标准错误输出文件( stderr ),这两个文件也都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。 </li></ul><ul><li>Linux 系统为输入、输出的传送引入了另外两种机制,即输入 / 输出重定向和管道。 </li></ul><ul><li>输入重定向 </li></ul><ul><li>输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。 </li></ul>
  103. 104. <ul><li>另一种输入重定向称为 here 文档,它告诉 shell 当前命令的标准输入来自命令行。 here 文档的重定向操作符使用“ << ” 。它将一对分隔符(! … !)之间的正文重定向输入给命令。 </li></ul><ul><li>由于大多数命令都以参数的形式在命令行上指定输入文件的文件名,所以输入重定向并不经常使用。尽管如此,当要使用一个不接受文件名作为输入参数的命令,而需要的输入内容又存在一个文件里时,就能用输入重定向解决问题。 </li></ul><ul><li>输出重定向 </li></ul><ul><li>输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。 </li></ul>
  104. 105. 输出重定向比输入重定向更常用,很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,那么将输出重定向到一个文件中,然后再用文本编辑器打开这个文件,就可以查看输出信息;如果想保存一个命令的输出,也可以使用这种方法。还有,输出重定向可以用于把一个命令的输出当作另一个命令的输入(还有一种更简单的方法,就是使用管道)。 输出重定向的一般形式为: 命令 > 文件名 为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容, shell 提供了输出重定向的一种追加手段。输出追加重定向与输出重定向的功能非常相似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。 可以使用追加重定向操作符“ >> ” ,其使用语法形式为: 命令 >> 文件名
  105. 106. <ul><li>管 道 </li></ul><ul><li>将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起 ; 另一种是 Linux 所提供的管道功能。这种方法比前一种方法更好。 </li></ul><ul><li>管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。 </li></ul>
  106. 107. <ul><li>命令替换 </li></ul><ul><li>命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为: </li></ul><ul><ul><li>command1 `command2` </li></ul></ul><ul><li>其中, command2 的输出将作为 command1 的参数。需要注意的是这里的 ` 符号,被它括起来的内容将作为命令执行,执行后的结果作为 command1 的参数。 </li></ul><ul><li>例如: </li></ul><ul><li>$ cd `pwd` </li></ul><ul><li>该命令将 pwd 命令列出的目录作为 cd 命令的参数,结果仍然是停留在当前目录下。 </li></ul>
  107. 108. 2.3 目录及其操作命令 <ul><li>树型目录结构 </li></ul><ul><li>Linux 系统以文件目录的方式来组织和管理系统中的所有文件。所谓文件目录就是将所有文件的说明信息采用树型结构组织起来,即常说的目录。也就是说,整个文件系统有一个“根”( root ),然后在根上分“杈”( directory ),任何一个分杈上都可以再分杈,杈上也可以长出“叶子”。“根”和“杈”在 Linux 中被称为是“目录”或“文件夹”。而“叶子”则是一个个的文件。实践证明,此种结构的文件系统效率比较高。 </li></ul>
  108. 109. 如前所述,目录也是一种类型的文件。 Linux 系统通过目录将系统中所有的文件分级、分层组织在一起,形成了 Linux 文件系统的树型层次结构。以根目录为起点,所有其他的目录都由根目录派生而来用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。 Linux 目录提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为特定的文件创建特定的目录,也可以把一个目录下的文件移动或复制到另一目录下,而且能移动整个目录,并且和系统中的其他用户共享目录和文件。 需要说明的是,根目录 ( 系统目录 ) 是 Linux 系统中的特殊目录。 Linux 是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中。
  109. 110. 2. 工作目录、用户主目录与路径 ( 1 ) 工作目录与用户主目录 从逻辑上讲,用户在登录到 Linux 系统中之后,每时每刻都“处在”某个目录之中,此目录被称作工作目录或当前目录( Working Directory )。工作目录是可以随时改变的。用户初始登录到系统中时,其主目录( Home Directory )就成为其工作目录。工作目录用“ . ” 表示,其父目录用“ .. ” 表示。 用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。 用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同。
  110. 111. ( 2 )路径 路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径的主要构成是目录名称,中间用“ / ” 分开。某个文件在文件系统中的位置都是由相应的路径决定的。 路径又分相对路径和绝对路径。 绝对路径是指从“根”开始的路径,也称为完全路径;相对路径是从用户工作目录开始的路径。 应该注意到,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。这一点对于以后使用某些命令如 cp 和 tar 等大有 好处。
  111. 112. <ul><li>Linux 系统主要目录说明 </li></ul><ul><li>/bin :显而易见, bin 就是二进制( binary )英文缩写。 </li></ul><ul><li>/boot :在这个目录下存放的都是系统启动时要用到的程序。在使用 lilo 引导 linux 的时候,会用到这里的一些信息。 </li></ul><ul><li>/dev : dev 是设备( device )的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有 linux 系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。 </li></ul><ul><li>/etc : etc 这个目录是 linux 系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。我们要用到的网络配置文件,文件系统, x 系统配置文件,设备配置信息,设置用户信息等都在这个目录下。 </li></ul>
  112. 113. /sbin : 这个目录是用来存放系统管理员的系统管理程序。 /home : 如果建立一个用户,用户名是“ jl ” , 那么在 /home 目录下就有一个对应的 /home/jl 路径,用来存放用户的主目录。 /lib : lib 是库( library )英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。 /mnt : 这个目录在一般情况下也是空的。可以临时将别的文件系统挂在这个目录下 。 /proc : 可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。 /root : 如果用户是以超级用户的身份登录的,这个就是超级用户的主目录。 /tmp : 用来存放不同程序执行时产生的临时文件。 /usr : 这是 linux 系统中占用硬盘空间最大的目录。
  113. 114. <ul><li>2.3.2 创建和删除目录的命令 </li></ul><ul><li>创建目录 </li></ul><ul><li>在 Linux 系统中建立新目录的命令是 mkdir 。该命令的语法格式如下: </li></ul><ul><li>mkdir [-m 模式 ] [-p 目录名 ] 目录 </li></ul><ul><li>命令中的参数说明如下: </li></ul><ul><li>m 模式:在建立目录时把按模式指定设置目录权限。该目录的权限分为:目录所有者的权限、组中其他人对目录的权限和系统中其他人对目录的权限。这三个权限分别用三个数字之和来表示:对目录的读权限是 4 、写权限是 2 、执行权限是 1 。 </li></ul><ul><li> -p 目录名:建立所有不存在父目录的目录。 </li></ul><ul><li>   目录:要建立的目录 。 </li></ul>
  114. 115. 2. 删除目录 rmdir 命令是用来删除目录的,一般情况下要删除的目录必须为空目录,如果所给的目录不为空,系统会报告错误。。该命令的语法格式如下: rmdir -p 目录列表 命令中的参数说明如下:  -p :在删除目录表指定的目录后,若父目录为 空,则 rmdir 也删除父目录。状态信息显示什么 被删除,什么没被删除。  目录列表:空格分隔的目录名列表。要删除的 目录必须为空。
  115. 116. <ul><li>2.3.3 改变工作目录和显示目录内容的命令 </li></ul><ul><li>1. 显示当前目录 </li></ul><ul><li>显示当前目录的命令是 pwd 命令,该命令使用的语 法格式如下: </li></ul><ul><li>pwd </li></ul><ul><li>执行 pwd 命令形式如下: </li></ul><ul><li># pwd </li></ul><ul><li>改变当前工作目录 </li></ul><ul><li>改变当前工作目录在 Linux 系统中使用的是 cd 命令。 </li></ul><ul><li>该命令使用的语法格式如下: </li></ul><ul><li>cd   [ 目录名 ] </li></ul><ul><li>命令中的参数说明如下: </li></ul><ul><li>        目录名:改变到所指定的目录名。如果没有指定目录,就返回到用户主目录(在 HOME 环境变量中指定)。 </li></ul>
  116. 117. 2.3.4 链接文件的命令 链接文件命令是 ln 命令。该命令在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。 该命令的使用语法如下: ln [ 选项 ] 目标 [ 链接名 ] ln [ 选项 ] 目标 目录 链接有两种,一种被称为硬链接( Hard Link ),另一种被称为符号链接( Symbolic Link )。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下, ln 产生硬链接 。
  117. 118. 在硬链接的情况下,参数中的“目标”被链接至 [ 链接名 ] 。如果 [ 链接名 ] 是一个目录名,系统将在该目录之下建立一个或多个与“目标”同名的链接文件,链接文件和被链接文件的内容完全相同。如果 [ 链接名 ] 为一个文件,用户将被告知该文件已存在且不进行链接。如果指定了多个“目标”参数,那么最后一个参数必须为目录。 如果给 ln 命令加上 -s 选项,则建立符号链接。如果 [ 链接名 ] 已经存在但不是目录,将不做链接。 [ 链接名 ] 可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果 [ 链接名 ] 是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。 例: $ ln - s lunch /home/xu 用户为当前目录下的文件 lunch 创建了一个符号 链接 /home/xu 。
  118. 119. 2.3.5 改变文件或目录存取权限的命令 1. 改变文件或目录权限 在 Linux 系统中,用户设定文件权限控制其他用户不能访问、修改。但在系统应用中,有时需要让其他用户使用某个原来其不能访问的文件或目录,这是就需要重新设置文件的权限,使用的命令是 chmod 命令。并不是谁都可改变文件和目录的访问权限,只有文件和目录的所有者才有权限修改其权限,另外超级用户可对所有文件或目录进行权限设置。 chmod 命令的使用语法格式如下: chmod   [ 选项 ]  文件和目录列表 命令中的参数说明如下:           选项的常用取值如表 2-7 所示           文件和目录列表:准备修改权限的文件和目录 。
  119. 120. 表 2-7 chmod 命令的常用选项 递归改变目录及其内容的权限。 -R 详细说明权限的变化。 -v 不打印权限不能改变的文件的错误信息。 -f 只有在文件的权限确实改变时才进行详细说明 。 -c 说      明 常用选项
  120. 121. chmod 命令支持两种文件权限设定的方法: ( 1 )使用字符串设置权限 ( 2 )使用八进制数设置权限 另外,文件和目录的权限还可用八进制数字模式来 表示。三个八进制数字分别代表 ugo 的权限。执行 权、读权和写权所对应的数值分别是 1 , 2 和 4 。 若要 rwx 属性则 4+2+1=7 ; 若要 rw- 属性则 4+2=6 ; 若要 r-x 属性则 4+1=5 。 2. 改变文件和目录的所有权 命令的格式如下: chown   [ 选项 ]  用户 文件和目录列表
  121. 122. 命令中的参数说明如下:         命令中的选择说明如表 2-8 所示。         用户:可能是用户号或文件 /etc/passwd 中出现的用户名。 文件和目录列表:用于重新指定所有权的用空格分隔的文件和目录列表。 表 2-8 chown 命令的常用选项 常用选项 说      明 -c 只有在文件的权限确实改变时才进行详细说明。 -f 不打印权限不能改变的文件的错误信息。 -v 详细说明权限的变化。 -R 递归改变目录及其内容的权限。
  122. 123. 2.4 文件压缩与联机帮助命令 2.4.1 文件压缩 1. gzip 压缩文件 gzip 命令是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 gzip 命令的使用语法格式如下: gzip [ 选项 ] 压缩(解压缩)的文件名 gzip 命令各选项的说明如表 2-9 所示。 表 2-9 gzip 命令的常用选项 对每一个压缩和解压的文件,显示文件名和压缩比。 -v 测试,检查压缩文件是否完整。 -t 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。 -r 对每个压缩文件,显示压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名字等详细信息 -l 将压缩文件解压。 -d 将输出写到标准输出上,并保留原有文件。 -c 说明 常用选项
  123. 124. 2. 文件打包 tar tar 可以对文件和目录进行打包。利用 tar ,用户可以对某一特定文件进行打包(一般用作备份文件),也可以在包中改变文件,或者向包中加入新的文件。 t tar 命令的使用语法格式如下: tar [ 主选项 + 辅选项 ] 文件或者目录 表 2-10 tar 命令的主选项的常用选项 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。 -u 列出档案文件的内容,查看已经备份了哪些文件。 -t 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。 -r 从档案文件中释放文件。 -x 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 -c 说 明 常用选项
  124. 125. <ul><li>表 2-11 tar 命令的辅助选项的常用选项 </li></ul><ul><li>常用选项 说      明 </li></ul><ul><li>f 使用档案文件或设备,这个选项通常是必选的。 </li></ul><ul><li>K 保存已经存在的文件。例如我们把某个文件还原,在 还原的过程中,遇到相同的文件,不会进行覆盖。 </li></ul><ul><li>m 在还原文件时,把所有文件的修改时间设定为现在。 </li></ul><ul><li>M 创建多卷的档案文件,以便在几个磁盘中存放。 </li></ul><ul><li>v 详细报告 tar 处理的文件信息。如无此选项, tar 不报 告文件信息。 </li></ul><ul><li>z 用 gzip 来压缩 / 解压缩文件 </li></ul><ul><li>unzip 命令 </li></ul><ul><li>可以用 unzip 命令,该命令用于解扩展名为“ .zip ” 的压缩文件。该命令使用的语法格式如下: </li></ul><ul><li>unzip [ 选项 ] 压缩文件名 .zip </li></ul><ul><li>upzip 命令各选项的说明如表 2-12 所示。 </li></ul>
  125. 126. 表 2-12 upzip 命令的常用选项 常用选项 说      明 -x 文件列表 解压缩文件,但不包括指定的 file 文件 -v 查看压缩文件目录,但不解压。 -t 测试文件有无损坏,但不解压。 -d 目录把压缩文件解到指定目录下。 -z 只显示压缩文件的注解。 -n 不覆盖已经存在的文件。 -o 覆盖已存在的文件且不要求用户确认。 -j 不重建文档的目录结构,把所有文件解压到同 一目录下。
  126. 127. 2.4.2 联机帮助  1. 显示帮助手册 通常使用者只要在命令 man 后,输入想要获取的命令的名称(例如 ls ), man 就会列出一份完整的说明,其内容包括命令语法、各选项的意义以及相关命令等。该命令的一般形式为: man   [ 选项 ]  命令名称 表 2-13 man 命令的常用选项 常用选项 说      明 -S 根据章节显示,由于一个命令名称可能会有很多 类别,其类别说明如表 2-14 所示。 -f 只显示出命令的功能而不显示其中详细的说明文件 -w 不显示手册页,只显示将被格式化和显示的文件所在 位置。 -a 显示所有的手册页,而不是只显示第一个。 -E 在每行的末尾显示 $ 符号
  127. 128. 表 2-13 man 命令的章节常用选项 章节 说      明 1 一般使用者的命令 2 系统调用的命令 3 C 语言函数库的命令 4 有关驱动程序和系统设备的解释 5 配置文件的解释 6 游戏程序的命令 7 其它的软件或是程序的命令和有关系统维护 的命令
  128. 129. 2. 系统帮助文档 help 命令用于查看所有 Shell 命令。用户可以通过该命令寻求 Shell 命令的用法,只需在所查找的命令后输入 help 命令,就可以看到所查命令的内容了。 例如:查看 cd 命令的使用方法。 $ cd --help 3. whereis 命令 这个程序的主要功能是寻找一个命令所在的位置。例如,最常用的 ls 命令,它是在 /bin 这个目录下的。如果希望知道某个命令存在哪一个目录下,可以用 whereis 命令来查询。该命令的一般形式为: whereis [ 选项 ] 命令名。 说明:一般直接使用不加选项的 whereis 命令,但用户也可根据特殊需要选用它的一些选项。该命令中各选项的说明如表 2-14 所示。  
  129. 130. 表 2-13 whereis 命令的常用选项 章节 说      明 -b 只查找二进制文件 -m 查找主要文件 -s 查找来源 -u 查找不常用的记录文件 例如:查找 cd 命令二进行文件在什么目录下。可使用如下命令: $ whereis -b cd
  130. 131. 第 3 章 Linux 系统管理 本章学习目标 在 Linux 系统中,虽然有很多应用都使用图形界面,但是大多数使用和管理 Linux 的实用程序和技巧还是通过键入命令来运行的。在本章中,将介绍一些基本的 Linux 命令,并通过一些实际的例子使读者边学边用,让读者尽快熟悉 Linux 系统。。通过对本章的学习,读者应该掌握以下主要内容:  了解对系统管理的具体工作。  理解对用户和工作组管理的基本概念及相 关的管理方法。 理解文件系统管理的基本概念及相关的管 理方法。
  131. 132. 3.1 系统管理概述 3.2 用户和工作组管理 1. 用户账号文件—— passwd Passwd 是一个文本文件,用于定义系统的用户账号,该文件位于“ /etc ” 目录下。它包含了一个系统账户列表,给出每个账户一些有用的信息,例如,用户 ID 、组 ID 、主目录、 shell 等等。由于所有用户都对 passwd 有读权限,所以该文件中只定义用户账号,而不保存口令。 passwd 文件中每行定义一个用户账号,一行中又划分为多个字段定义用户的账号的不同属性,各字段用“:”隔开。图 3-1 中显示了 passwd 文件的前 10 行内容。在图中显示出了文件显示各用户的每一个字段,各字段的说明如表 3-1 所示。
  132. 133. 图 3-1 passwd 文件的属性及部分内容
  133. 134. 表 3-1 passwd 文件各字段说明 字  段 说    明 Account 使用者在系统中的名字,它不能包含大写字母。 Password 用户口令,出于安全考虑,现在不使用该字段保存口令, 而用字母“ x” 来填充该字段,真正的密码保存在 shadow 文件。 UID 用户 ID 号,惟一表示某用户的数字。 GID 用户所属的私有组号,该数字对应 group 文件中的 GID 。 GECOS 这字段是可选的,通常用于保存用户命名的信息。 Directory 用户的主目录,用户成功登录后的默认目录。 shell 用户所使用的 shell ,如该字段为空则使用“ /bin/sh” 。
  134. 135. 2. 用户口令文件—— shadow 在 shadow 文件中,每行定义了一个用户信息,行中各字段各字段用“:”隔开。为进一步提高安全性, shadow 文件中保存的是已加密的口令。图 3-2 中显示了 shadow 文件的前 10 行内容。
  135. 136. 从图 3-2 中可以看出,“ /etc/shadow ” 文件中的每个记录用“:”隔开为 9 个域,每个域的含义分别为:           登录名           加密口令           口令上次更改时距 1970 年 1 月 1 日的天数           口令更改后不可以更改的天数           口令更改后必须再更改的天数 ( 有效期 )           口令失效前警告用户的天数           口令失效后距账号被查封的天数           账号被封时距 1970 年 1 月 1 日的天数           保留未用
  136. 137. 3. 用户组账号文件—— group 用户组是逻辑地组织用户账号集合的方便途径,它允许用户在组内共享文件。系统上的每一个文件都有一个用户和一个组的属主。使用“ ls – l ” 命令可以看到每一个文件的属主和组。 于系统上的每个组,在 /etc/passwd 文件中有一行记录,记录的格式为: groupname : passwd : GID : userlist 表 3-2 group 文件字段说明 字  段 说  明 Groupname 是组的名字 Passwd 是组的加密口令 GID 是系统区分不同组的 ID ,在 /etc/passwd 域 中的 GID 域是用这个数来指定用户的缺省 组。 Userlist 是用“,”分开的用户名,列出的是这个组 的成员。
  137. 138. 图 3-3 中显示了 shadow 文件的前 10 行内容。
  138. 139. 4. 用户口令文件—— gshadow gshadow 文件用于定义用户组口令、组管理员等信息,该文件只有 root 用户可以读取。 Gshadow 文件中每行定义一个用户组信息,行中各字段间用“:”分隔,每行记录的格式为: groupname : Encrypted password: Group administrators: Group members 各字段的的含义如表 3-3 所示。在图 3-4 中给出了该文件的属性及文件的部分内容。 表 3-3 group 文件字段说明 字  段 说  明 Groupname 用户组名称,该字段与 group 文件中的组名称 对应。 Encrypted password 用户组口令,该字段用于保存已加密的口令 Group administrators 组的管理员账号,管理员有权对该组添加删除 账号。 Group members 属于该组的用户成员列表,列表中多个用户间 用“,”分隔。
  139. 140. 图 3-4 group 文件的属性及部分内容
  140. 141. 3.2.2 用户和组账户的维护命令 1. 增加用户帐号 在命令行下使用 useradd 命令: useradd 用户名 该命令做了下面几件事: 1 )在 /etc/passwd 文件中增添了一行记录; 2 )在 /home 目录下创建新用户的主目录,并将 /etc/skel 目录中的文件拷贝到该目录中去; 但是使用了该命令后,新建的用户暂时还无法登录,因为还没有为该用户设置口令,需要再用 passwd 命令为其设置口令后,才能登录。用户的 UID 和 GID 是 useradd 自动选取的,它是将 /etc/passwd 文件中的 UID 加 1 ,将 etc/group 文件中的 GID 加 1 。
  141. 142. 增加新用户时,系统将为用户创建一个与用户名相同的组,称为私有组。这一方法是为了能让新用户与其他用户隔离,确保安全性的措施 下面通过增加一个用户“ liuyidan ” ,以及查看其相关信息,来帮助用户理解该命令所执行的操作。其在终端上的操作命令及响应如图 3­-5 所示。 #useradd liuyidan // 建立用户账号 #tail -l /etc/passwd // 查看 password 文件中添加的用户 账号信息 #tail -l /etc/shadow # ls /home // 查看所建立账号的主目录
  142. 143. 图 3-5 增加用户及相关操作 选项 功能描述 -g 用于添加用户账号时指定该用户的私 有组。如不指定“ -g ” 参数, useradd 命 令将自动建立与用户账号同名的组作 为该账号的私有组。 -D 用于显示或设置 useradd 命令所使用的 默认值    在“ -g” 选项时,其语法格式如下: useradd –g 组名 用户名  在“ -D” 选项中,如果是用来修改 useradd 命令所使用的默认值,那么该命令使用的语法格式如下: useradd –D [-g group][-b base][-s shell][-f inactive][-e expire]
  143. 144. 2. 修改用户账号—— usermod usermod 命令可用来修改用户帐号的各种属性,包括用户主目录、私有组、登录、 shell 等内容。 Usermod 的命令格式如下: usermod [-LU][-c < 备注 >][-d < 登入目录 >][-e < 有效期限 >][-f < 缓冲天数 >][-g < 群组 >] [-G < 群组 >][-l < 帐号名称 >][-s ][-u ][ 用户帐号 ] 该命令的各个参数说明如下:   -c< 备注 > : 修改用户帐号的备注文字。   -d< 登入目录 > : 修改用户登入时的目录。   -e< 有效期限 > : 修改帐号的有效期限。   -f< 缓冲天数 > :修改在密码过期后多少天即关闭该帐号。   -g< 群组 > : 修改用户所属的群组。 -l < 帐号名次 > :修改用户帐号的名称
  144. 145. 下面举例说明该命令的使用方法: ( 1 )修改用户名,把用户名“ liuyidan ” 改名为“ lyd ” ,使用的命令是: # usermod –l lyd liuyidan (2 )锁定“ lyd ” 用户,使其不能登录。命令如下: # usermod –L lyd ( 3 )解锁“ lyd ” 用户账号,使其可以登录。命令如下: # usermod –U lyd
  145. 146. 3. 删除用户—— userdel userdel 命令用于删除指定的用户账号。其使用的语法格式为: userdel [-r][ 用户账号 ] 需要补充说明的是 userdel 命令可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。 其中参数“ -f ” 是用来删除用户登入目录以及目录中所有文件。 下面举例说明该命令的使用方法: #grep lyd /etc/passwd // 查询用户账号 lyd 是否存在 #userdel lyd // 删除 lyd 账号 #grep lyd /etc/passwd // 再次查询用户账 号 lyd 是否存在 #ll –d /home // 查询用户 lyd 的主 目录是否还存在 #userdel –r lyd // 删除用户的同时 删除其工作主目录
  146. 147. 4. 组增加命令—— groupadd groupadd 命令可指定群组名称来建立新的群组账号。该组账号的 ID 值必须是惟一的,且数值不可为负。预设的最小值不得小于 500 ,且每增加一个组账号 ID 值逐次增加。 ID 值 0~499 是保留给系统账号使用。该指令使用的语法格式为: groupadd [-r] group 其中“ -r ” 参数是用来建立系统账号。系统账号的 ID 值不能大于 500 。下面举例说明该命令的使用方法: # groupadd lbgroup // 建立组账 号 lbgroup # grep lbgroup /etc/group // 查询 group 文件中 lbgroup 组是否建立 #groupadd –r syslbgroup // 建立系统组账号 # grep lbgroup /etc/group // 查询 group 文件中 syslbgroup 组是否建立
  147. 148. 5. 组账号修改 groupmod 命令用来更改群组识别码或名称。该命令 的语法格式为: groupmod [-g < 群组识别码 > <-o>][-n < 新 群组名称 >][ 群组名称 ] 命令中所使用的参数说明如下:           -g < 群组识别码 >  设置欲使用的群组识别码。           -o  重复使用群组识别码。           -n < 新群组名称 >  设置欲使用的群组名称。
  148. 149. 下面举例说明该命令的使用方法: # grep lbgroup /etc/group // 查询 group 文件 中 lbgroup 组属性 #groupmod –g 503 lbgroup // 改变 lbgroup 组 的 GID 为 503 # grep lbgroup /etc/group // 查询操作结果是 否正确 #groupmod –n ydgroup lbgroup // 改变 lbgroup 组 名为 ydgroup # grep 503 /etc/group // 查询操作结果是 否正确
  149. 150. 6. 删除组账号 groupdel 命令用于删除指定的组账号,若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。该命令的语法格式为: groupdel [ 群组名称 ] 7. 口令维护命令 出于系统安全考虑, Linux 系统中的每一个用户除了有其用户名外,还有其对应的用户口令。因此使用 useradd 命令增加时,还需使用 passwd 命令为每一位新增加的用户设置口令;用户以后还可以随时用 passwd 命令改变自己的口令。该命令的一般格式为: passwd [ 用户名 ] 其中用户名为需要修改口令的用户名。只有超级用户可以使用“ passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的 passwd 命令修改自己的口令。
  150. 151. 另外, passwd 命令还可以使用一些参数选项,这些参数选项可对账号的口令进行不同的操作,但这些带参数的 passwd 命令只有 root 用户可以使用。这些参数选择包括:            -S :用于查询指定用户账号的状态。           -l :用于锁定账号的口令。           -u :解除锁定账号的口令。           -d :删除指定账号的口令 。
  151. 152. 8. 组中用户成员的维护 gpasswd 命令可用于把一个账户添加到组、把一个账户从组中删除、把一个账户设为组管理员。 ( 1 )添加用户到使用的命令格式为: gpasswd –a 用户账号名 组账号名 ( 2 )从组中删除用户的命令格式为: gpasswd – d 用户账号名 组账号名 ( 3 )设置用户为组管理员的命令格式为: gpasswd -A 组管理员用户列表 用户组
  152. 153. 3.2.3 用户和组的状态命令 <ul><li>id 命令 </li></ul><ul><li>id 命令用于显示用户当前的 UID , gid 以及所属群组的组列表该指令的语法格式为: </li></ul><ul><li>  id [ 选项 ] [ 用户名称 ] </li></ul><ul><li>该命令所使用的选项参数说明如下: </li></ul><ul><li>           -g :显示用户所属群组的 ID 。 </li></ul><ul><li>          -G :显示用户所属附加群组的 ID 。 </li></ul><ul><li>          -n :显示用户,所属群组或附加群组的名称。 </li></ul><ul><li>          -r :显示实际 ID 。 </li></ul><ul><li>          -u :显示用户 ID 。 </li></ul>
  153. 154. 2. whoami 命令 whoami 命令用于显示登录者自身的用户名称,本指令相当于执行“ id –un ” 指令。 3. su 命令   su 命令是用来将当前用户转换为其他用户身份。其命令的语法格式为: su [-flmp] [-][-c < 指令 >][-s ][ 用户帐号 ] 需要指出的是 su 命令可让用户暂时变更登入的身份。变更时须输入所要变更的用户账号与密码。该命令中的选项参数说明如下:
  154. 155.            -c< 指令 > :执行完指定的指令后,即恢复原来的身份。           -f :适用于 csh 与 tsch ,使 shell 不用去读取启动文件。           - :改变身份时,也同时变更工作目录,以及 HOME , SHELL , USER , LOGNAME 。此外,也会变更 PATH 变量。           -m , -p :变更身份时,不要变更环境变量。           -s :指定要执行的 shell 。 [ 用户帐号 ] :指定要变更的用户。若不指定此参数,则预设变更为 root 。 4. groups 命令 groups 命令用于显示指定用户所属的组,如未指定用户则显示当前用户所属的组。该命令的语法格式为: groups 用户名
  155. 156. 3.3 进程管理 3.3.1 进程的定义 Linux 是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指 Linux 可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 那到底什么叫进程? Linux 系统上所有运行的程序都可以称之为一个进程。 Linux 用分时管理方法使所有的任务共同分享系统资源。进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。
  156. 157. 3.3.2 报告进程状态 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、哪些进程占用了过多的资源等等。 ps 命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入 / 输出设备进行通信的,所以如果需要检测其情况,便可以使用 ps 命令。其命令语法格式如下: ps [ 选项 ] 命令中的选项说明如下:
  157. 158.            -e :显示所有进程。           -f :全格式。           -h :不显示标题。           -l :给出长列表。           -a :显示终端上的所有进程,包括其他用户的进程。           -r :只显示正在运行的进程。           -x 显示没有控制终端的进程。           -txx :只显示受 tty.xx 控制的进程。           -u :打印用户格式,显示用户名和起始时间。           -j :按作业格式输出。           -v :按虚拟存储器格式显示输出。           -m :显示存储器信息。           -S :增加子 CPU 时间和页面出错。           -w :用宽格式显示,不截取命令行,使它成为一行。           -r :只显示正在运行的进程。
  158. 159. 表 2-14 ps 命令输出字段的含义 字 段 含      义 USER 进程所有者的用户名 PID 进程号 %CPU 进程自最近一次刷新以来所占用的 CPU 时间和总时间的百分比 %MEM 进程使用内存的百分比 VSZ 进程使用的虚拟内存大小,以 K 为单位 RSS 驻留空间的大小。显示当前常驻内存的程序的 K 字节数。 TTY 进程相关的终端 STAT 进程状态,用下面的代码中的一个给出: R :可执行的。 S :睡眠状态。 D :不间断睡眠。 T :停止或跟踪。 Z :僵尸。 W :进程没有驻留页。 I :空闲。 TIME 进程使用的总 CPU 时间 COMMAND 被执行的命令行 NI 进程的优先级值,较小的数字意味着占用较少的 CPU 时间 PRI 进程优先级。 PPID 父进程 ID WCHAN 进程等待的内核事件名
  159. 160. 3.3.3 结束进程 当需要中断一个前台进程的时候,通常是使用 <Ctrl+c> 组合键;但是对于一个后台进程这个组合键是不能达到目的的。这时就必须使用 kill 命令,该命令可以终止后台进程。至于终止后台进程的原因很多,或许是该进程占用的 CPU 时间过多;或许是该进程已经挂死。 kill 命令的语法格式很简单,大致有以下两种方 式 : kill [-s 信号 | -p ] [ -a ] 进程号 kill -l [ 信号 ] 命令中的参数说明如下:           -s :指定需要送出的信号。既可以是信号名也可以对应数字。           -p :指定 kill 命令只是显示进程的 pid ,并不真正送出结束信号。 -l :显示信号名称列表,这也可以在 /usr/include/linux/signal.h 文件中找到。
  160. 161. 3.3.4 进程睡眠 sleep 命令可使当前正在执行的进程在规定的时间内处于睡眠。其使用的语法格式为: sleep time 说明: time 为进程将睡眠的时间,以秒为单位。例如 : $ sleep time
  161. 162. 3.4.1 识别 Linux 中的用户 1. 查看用户的操作 系统管理员在任一时刻都可查看用户的行为, 在终端的提示符下输入 w 命令即可 命令响应中所示的信息分别说明如下: 第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登录用户总数及系统平均负载信息。对于该行显示的几个数据意义是:    4:50pm 表示执行 w 的时间是在下午 4:50 。    0days,11:18 表示系统运行 0 天 11 小时 18 分。    4users 表示当前系统登录用户总数为 4  load average 与后面的数字一起表示系统在过去 1 、 5 、 10 分钟内的负载程度,数值越小,系统负 载越轻。 3.4 查看登录用户及日志文件信息
  162. 163. 从第 2 行开始构成一个表格,共有 8 个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资源:  USER :显示登录用户名。用户重复登录,该账号也会重复出 现。    TTY :用户登录所使用的终端。  FORM: 显示用户从什么地方登录到系统。如果是从本地登录, 此字段为“ - ” ;如果从远程登录便会显示主机的 IP 地 址或主机名。  LOGIN @:是 LOGIN   AT 的意思,表示登录进入系统的时间。  IDLE :用户空闲时间,从用户上一次任务结束后开始计时。  JCPU :以终端代号来区分,表示在某段时间内,所有与该终 端相关的进程任务所耗费的 CPU 时间。  PCPU :指 WHAT 域的任务执行后所耗费的 CPU 时间。  WHAT :表示当前执行的任务。
  163. 164. 另外,使用 W 命令还可在有很多用户登录时,查看某一个具体的用户名,使用的命令形式如下: # w root   <ul><ul><li>2. 查看登录用户 </li></ul></ul><ul><li> 系统管理员若想知道某一时刻有哪些用户登录到系统,可以使用系统提供的 who 命令,该命令可以查看当前登录系统的用户及其他相关系统信息。 </li></ul><ul><li>3. 查看登录用户历史 </li></ul><ul><li> 系统管理员可以随时查看用户登录的历史行为,还可查看某一用户曾经登录到的系统,这些功能使用 last 命令即可实现。 </li></ul>
  164. 165. 3.4.2 查看日志文件系统 日志文件( Log files )是包含关于系统消息的文件,包括内核、服务、在系统上运行的应用程序等。不同的日志文件记载不同的信息。 1. 定位日志文件 多数日志文件位于 /var/log 目录中。某些程序如 httpd 和 samba 在 /var/log 中有单独的存放日志文件的目录。 2. 放日志文件的目录。 注意,日志文件目录中会有多个后面带有数字的文件。这些文件是在日志文件被循环时创建的。日志文件被循环使用,因此文件不会变得太大。 logrotate 软件包中包含一个能够自动根据 /etc/logrotate.conf 配置文件和 /etc/logrotate.d 目录中的配置文件来循环日志文件的 cron 任务。按照默认配置,日志每周都被循环,并被保留四周之久。
  165. 166. 2. 查看日志文件 要在互动的、真实时间的应用程序中查看系统日志文件,可使用日志查看器。要启动日志查看器应用程序,可使用如下两种方法打开: ( 11 )        依次选择“主菜单->系统工具->系统日志” ( 22 )        在 shell 终端提示下键入 redhat-logviewer 命令。 打开图 3 - 4 - 5 所示的日志查看器对话框。
  166. 167. 按照默认设置,当前可查看的日志文件每隔 30 秒被刷新一次。要改变刷新率,可从图 3 - 4 - 5 的下拉菜单中选择“编辑->首选项”。如图 3 - 4 - 6 所示的窗口会出现。在“日志文件”标签中,点击刷新率旁边的上下箭头来改变它。可单击“关闭”按钮来返回到主窗口。刷新率会被立即改变。要手工刷新当前可以查看的文件,可从图 3 - 4 - 5 中选择“文件即刻刷新”或按“ Ctrl + R ” 键。
  167. 168. 3. 检查日志文件 日志查看器可以被配置在包含警告关键字的行旁边来显示警告图标。要添加警告词,从图 3-4-5 中的下拉菜单中选择“编辑->首选项”,然后选中“警告”标签,打开图 3 - 4 - 6 所示的对话框。单击“添加”按钮来添加警告词。要删除一个警告词,可从列表中选择它,然后单击“删除”。
  168. 169. 3.5 控制面板和设置管理工具 3.5.1 Red Hat 的控制面板 3.5.2 setup 配置工具 3.5 基本系统恢复 3.5.1 常见问题 3.5.2 引导入救援模式 3.5.3 引导入单用户模式 3.5.4 引导入紧急模式 本章小结
  169. 170. 第 4 章 Linux 网络基础 本章学习目标 本章主要让读者在使用 Internet 之前对 Internet 有一个大致的了解,以帮助读者对本书后续章节的学习。通过对本章的学习,读者应该掌握以下主要内容:           什么是 Internet           Internet 的由来和发展历程           Internet 提供的主要服务有哪些           Internet 在企业内部网的应用           我国在 Internet 网络上的发展状况
  170. 171. 4.1 TCP/IP 协议 4.1.1 TCP/IP 协议概述 现在,随着 Internet 的迅速发展使得计算机网络的应用已经开始遍及到我们现实生活的方方面面,而在 Internet 网络上所使用的协议正是 TCP/IP ( Transmission Control Protocol/Internet Protocol )协议,即传输控制协议 / 网际协议 . 在 20 世纪 60 年代后期开发出来了用于“异构”网络环境中的 TCP/IP 协议。也就是说, TCP/IP 协议可以在各种硬件和操作系统上实现,并且 TCP/IP 协议已成为建立计算机局域网、广域网的首选协议,并将随着网络技术的进步和信息高速公路的发展而不断地完善。
  171. 172. 4.1.2 Internet 网际协议( IP ) 在 TCP/IP 体系中,网际协议是最主要的协议之一 。 1 . IP 地址 在 TCP/IP 网络中,每个主机都有唯一的地址,它是通过 IP 协议来实现的。 IP 协议要求在每次与 TCP/IP 网络建立连接时,每台主机都必须为这个连接分配一个唯一的 32 位地址,因为在这个 32 位 IP 地址中,不但可以用来识别某一台主机,而且还隐含着网际间的路径信息。需要强调指出的,这里的主机是指网络上的一个节点,不能简单地理解为一台计算机,实际上 IP 地址是分配给计算机的网络适配器(即网卡)的,一台计算机可以有多个网络适配器,就可以有多个 IP 地址,一个网络适配器就是一个节点。 IP 地址为 32 位地址,一般以 4 个字节表示。每个字节的数字又用十进制表示,即每个字节的数的范围是 0~255 ,且每个数字之间用点隔开,例如: 192.168.101.5 ,这种记录方法称为“点 - 分”十进制记号法。 IP 地址的结构如下所示:
  172. 173. 网络类型 网络 ID 主机 ID IP 地址的 32 位被分成了 3 个字段:网络类型字段、网络 ID 字段和主机 ID 字段。网络类型字段用于标识网络的类型,到目前为止网络划分为 A~E 五类;网络 ID 则标识该主机所在的网络,由网络类型字段和网络 ID 字段构成网络标识;主机 ID 是该主机在网络中的标识。 IP 地址的基本分配原则是要为同一网络内的所有主机分配相同的网络标识号,同一网络内的不同主机必须分配不同的主机 ID 号,以区分主机,不同网络内的每台主机必须具有不同的网络标识号,但是可以具有相同的主机标识号。按照 IP 地址的结构和其分配原则,可以在 Internet 上很方便的寻址:先按 IP 地址中的网络标识号找到相应的网络,再在这个网络上利用主机 ID 找到相应的主机。由此可看出 IP 地址并不只是一个计算机的代号,而是指出了某个网络上的某个计算机。
  173. 174. 组建一个网络时,为了避免该网络所分配的 IP 地址与其他网络上的 IP 地址发生冲突,必须为该网络向 InterNIC ( Internet 网络信息中心)组织申请一个网络标识号,这也就是整个网络使用一个网络标识号,然后再给该网络上的每个主机设置一个唯一的主机号码,这样网络上的每个主机都拥有一个唯一的 IP 地址。另外,国内用户可以通过中国互联网络信息中心( CNNIC )来申请 IP 地址和域名。当然,如果网络不想与外界通信,就不必申请网络标识号,而自行选择一个网络标识号即可,只是网络内的主机的 IP 地址不可相同。 2 . IP 地址的分类
  174. 175. 为了充分利用 IP 地址空间, Internet 委员会定义了五种 IP 地址类型以适合不同容量的网络,即 A 类至 E 类,如图 4-1 所示。其中 A 、 B 、 C 三类由 InterNIC ( Internet 网络信息信心)在全球范围内统一分配, D 、 E 类为特殊地址。 0 网络地址 ID ( 7BIT) 主机地址 ID(24BIT) 0 1 7 8 31 A 类 IP 地址 10 网络地址 ID ( 14BIT) 主机地址 ID(16BIT) 0 1 2 15 16 31 B 类 IP 地址
  175. 176. 110 网络 IP 地址( 21BIT) 主机地址 ID ( 16BIT) 012 3 23 24 31 C 类 IP 地址 1110 广播地址 ID ( 28BIT) 0123 4 31 D 类 IP 地址 11110 保留用于将来和试验使用 01234 5 31 E 类地址
  176. 177. ( 1 ) A 类地址。 从图 4-1 ( a )中可以看出,在 A 类地址中,用第一个字节来表示网络类型和网络标识号,后面三个字节用来表示主机号码,其中第一个字节的最高位设为 0 ,用来与其他 IP 地址类型区分。第一个字节剩余的 7 位用来表示网络地址,最多可提供 2 7 -2=126 个网络标识号;这种 IP 地址的后 3 个字节用来表示主机,每个网络最多可提供大约 1678 万( 2 24 -2 )个主机地址。这类地址网络支持的主机数量非常大,只有大型网络才需要 A 类地址,由于 Internet 发展的历史原因, A 类地址早已被分配完毕。
  177. 178. ( 2 ) B 类地址。 从图 4-1 ( b )中可以看出,在 B 类地址中,用前两个字节来表示网络类型和网络标识号,后面两个字节标识主机号码,其中第一个字节的最高两位设为 10 ,用来与其他 IP 地址区分开,第一个字节剩余的 6 位和第二个字节(共 14 位)用来表示网络地址,最多可提供 2 14 -2=16,384 个网络标识号。这种 IP 地址的后 2 个字节用来表示主机号码,每个网络最多可提供大约 65,534 ( 2 16 -2 )个主机地址。这类地址网络支持的主机数量较大,适用于中型网络,通常将此类地址分配给规模较大的单位。
  178. 179. ( 3 ) C 类地址。 从图 4-1 ( c )中可以看出,在 C 类地址中,用前 3 个字节来表示网络类型和网络标识号,最后一个字节用来表示主机号码,其中第一个字节的最高位设为 110 用来与其他 IP 地址区分开,第一个字节剩余的 5 位和后面两个字节(共 21 位)用来表示网络地址,最多可提供约 200 万( 2 21 -2 )个网络标识号。最后 1 个字节用来表示主机号码,每个网络最多可提供 254 ( 2 8 -2 )个主机地址。这类地址网络支持的主机数量较少,适用于小型网络,通常将此类地址分配给规模较小的单位,如公司、院校等单位。
  179. 180. D 类地址是多播地址,主要是留给 Internet 体系结构委员会 IAB ( Internet Architecture Board )使用。 E 类地址保留在今后使用。目前大量使用的 IP 地址仅有 A , B 和 C 类三种 IP 地址。 例如:一个 IP 地址为 130.12.4.34 ,其用二进制表示为 10000010 00001100 00000100 00100010 ,把其与图 4-1 相比较可以看出,此 IP 地址属于 B 类网络,其网络 ID 号为 0000010 00001100B ,即 524 ,主机号为 00000100 00100010 ,即为 1058 。
  180. 181. ( 4 )特殊的 IP 地址。 ① 如果网络 ID 为 127 ,主机地址任意,这种地址是用来做循环测试用的,不可用作其他用途。例如, 127.0.0.1 是用来将消息传给自己的。 ② 在 IP 地址中,如果某一类网络的主机地址为全 1 ,则该 IP 地址表示是一个网络或子网的广播地址。例如, 192.168.101.255 ,分析可知它是 C 类网络地址,其主机地址为最后一个字节,即 255 ,二进制为 11111111B ,表示将信息发送给该网络上的每个主机。 ③ 在 IP 地址中,如果某一类网络的主机地址为全 0 ,则该 IP 地址表示为网络地址或子网地址。例如, 192.168.101.0 ,分析可知它是 C 类网络地址,其主机地址为最后一个字节即 0 ,二进制为 00000000B ,表示一个网络地址。
  181. 182. 说明: 正是由于地址不允许全 0 (表示网络或子网地址)或全 1 (表示广播地址),所以其网络数目和主机数目都要减 2 。例如, C 类网络只能支持 2 8 -2=254 个主机地址。 另外,如果要使网络直接连入 Internet ,应使用由 InterNIC 分配的合法 IP 地址。如果通过代理服务器连入 Internet ,也不应随便选择 IP 地址,应使用由 IANA (因特网地址分配管理局)保留的私有 IP 地址,以避免与 Internet 上合法的 IP 地址相冲突。这些私有地址的范围是:           10.0.0.1 ~ 10.255.255.254 ( A 类);           172.13.0.1 ~ 172.32.255.254 ( B 类);           192.168.0.1 ~ 192.168.255.254 ( C 类)。
  182. 183. 综合来看, IP 地址具有以下一些重要特点: ① IP 地址是一种非等级的地址结构。这就是说,和电话号的结构不一样, IP 地址不能反映有关主机位置的地理信息。 ② 当一个主机同时连接到两个网络上时(作路由器用的主机即为这种情况),该主机就必须同时具有两个相应的 IP 地址,其网络号是不同的。这种主机称为多地址主机。 ③ 按照 Internet 的观点,用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号码。 ④ 在 IP 地址中,所有分配到网络号的网络都是平等的。
  183. 184. 3 .子网及子网掩码 ( 1 )子网。 子网是指在一个 IP 地址上生成的逻辑网络,它使用源于单个 IP 地址的 IP 寻址方案,把一个网络分成多个子网,要求每个子网使用不同的网络 ID ,通过把主机号(主机 ID )分成两个部分,为每个子网生成唯一的网络 ID 。一部分用于标识作为唯一网络的子网,另一部分用于标识子网中的主机,这样原来的 IP 地址结构变成如下三层结构: 网络地址部分 子网地址部分 主机地址部分
  184. 185. ( 2 )子网掩码。 子网掩码是一个 32 位地址,它用于屏蔽 IP 地址的一部分以区别网络 ID 和主机 ID ;用来将网络分割为多个子网;判断目的主机的 IP 地址是在本局域网或是在远程网。在 TCP/IP 网络上的每一个主机都要求有子网掩码。这样当 TCP/IP 网络上的主机相互通信时,就可用子网掩码来判断这些主机是否在相同的网络段内。 如表 4-2 所示为各类 IP 地址所默认的子网掩码。其中值为 1 的位用来定出网络的 ID 号,值为 0 的位用来定出主机 ID 。例如,如果某台主机的 IP 地址为 192.168.101.5 ,通过分析可以看出它属于 C 类网络,所以其子网掩码为 255.255.255.0 ,则将这两个数据作逻辑与( AND )运算后结果为 192.168.101.0 ,所得出的值中非 0 位的字节即为该网络的 ID 。默认子网掩码用于不分子网的 TCP/IP 网络。
  185. 186. 11111111.11111111.11111111.00000000 255.255.255.0 C 11111111.11111111.00000000.00000000 255.255.0.0 B 11111111.00000000.00000000.00000000 255.0.0.0 A 子网掩码的二进制表示 子网掩码 类
  186. 187. 具体的运算步骤如下: 例如: 192.168.101.5 的二进制表示为 11000000 10101000 01100101 00000101B ;子网掩码为 255.255.255.0 ,其二进制值为 11111111 11111111 11111111 00000000 ,则当 192.168.101.5 和 255.255.255.0 进行逻辑与运算 11000000 10101000 01100101 00000000 11111111 11111111 11111111 11111111 11000000 10101000 01100101 0000000 后,所得出结果为 11000000 10101000 01100101 00000000 ,其中非 0 的三个字节,即 192.168.101 为该网络 ID ,剩余的字节(即 5 )为主机 ID 。若该网络的另一台的 IP 地址为 192.168.101.250 ,子网掩码也为 255.255.255.0 ,则同样会得到网络 ID 为 192.168.101 ,因此这两台主机在同一网段内。
  187. 188. 子网掩码的另一个用途就是可将网络分割为多个以 IP 路由连接的子网。如果某单位仅申请了一个网络 ID 号,但其网络规模较大,需要按照部门划分出多个子网段,此时可以借助子网掩码来实现需求。从 IP 地址的三层结构可以看出,用于子网掩码的位数决定可能的子网数目和每个子网内的主机数目。在定义子网掩码之前,必须弄清楚网络中使用的子网数目和主机数目,这有助于今后当网络主机数目增加后,重新分配 IP 地址的时间,子网掩码中如果设置的位数使得子网越多,则对应的其网段内的主机就越少。 4 . IP 路由 路由是数据从一个节点传输到另一个节点的过程。例如,要出发到某地,一般先确定到达目的地的路线。在 TCP/IP 网络中,

×