第 5 章 linux 系统管理

77
1 第 5 第 Linux 第 第第 第第第第 : 第第第 第第第第第第第第第 第第第第

Upload: jamal-taylor

Post on 30-Dec-2015

104 views

Category:

Documents


5 download

DESCRIPTION

第 5 章 Linux 系统管理. 本章重点 : 文件系统 用户和工作组的管理 进程管理. 5.1 Linux 启动过程概述. Linux 的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段: 1. 启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。 2. 执行程序 init 。装入内核并初始化设备后,运行 init 程序。 init 程序处理所有程序的启动 . 以 RH9.0 为例,说明启动过程. 1. 电脑启动时, BIOS 装载 MBR ,然后从当前活动分区启动 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 5 章  Linux 系统管理

1

第 5 章 Linux 系统管理

本章重点 :文件系统用户和工作组的管理进程管理

Page 2: 第 5 章  Linux 系统管理

2

Linux 的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段:

1. 启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。

2. 执行程序 init 。装入内核并初始化设备后,运行init 程序。 init 程序处理所有程序的启动 .

以 RH9.0 为例,说明启动过程

5.1 Linux 启动过程概述

Page 3: 第 5 章  Linux 系统管理

3

1. 电脑启动时, BIOS 装载 MBR ,然后从当前活动分区启动

2.grub 获得引导过程的控制权后,会显示引导菜单。此时如果用户不进行任何操作, grub 将在等待制定时间后自动引导默认的操作系统,如安装有其他系统,则在 grub 引导菜单上有多个选项,选择相应的操作系统名称就能进入相应的操作系统。

3. 当用户选择启动 LINUX 操作系统时, grub 就会根据事先设置好的信息从 ROOT 文件系统所在的分区读取 LINUX 映象,然后装入内核映象并将控制权交给 LINUX 内核。

Page 4: 第 5 章  Linux 系统管理

4

LINUX 内核获得控制权后, 以如下步骤继续引导系统:

  4. LINUX 内核一般是压缩保存的,因此,它首先要进行自身的解压缩。内核映象前面的一些代码完成解压缩。

  5. 如果系统中安装有可支持特殊文本模式的、且 LINUX 可识别的 SVGA 卡, LINUX 会提示用户选择适当的文本显示模式。但如果在内核的编译过程中预先设置了文本模式,则不会提示选择显示模式。该显示模式可通过 GRUB 或 RDEV工具程序设置。

  6. 内核接下来检测其他的硬件设备,例如硬盘、软盘和网卡等,并对相应的设备驱动程序进行配置。这时,显示器上出现内核运行输出的一些硬件信息。

Page 5: 第 5 章  Linux 系统管理

5

7. 接下来,内核装载 ROOT 文件系统。 ROOT文件系统的位置可在编译内核时指定,也可通过GRUB 或 RDEV 指定。文件系统的类型可自动检测。如果由于某些原因装载失败,则内核启动失败,最终会终止系统。

8. 启动 init 进程,切换到多用户模式,并为每个虚拟控制台和串行线路启动一个 Getty 进程。

9. 引导过程结束

Page 6: 第 5 章  Linux 系统管理

6

什么是文件系统?定义一: 文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设

备)或分区组织文件的方法,如 NTFS 或 FAT定义二; 文件系统是基于被划分的存储设备上的逻辑上单位上的一种

定义文件的命名、存储、组织及取出的方法定义三; 文件系统是文件的数据结构或组织方法。在 Unix 中,文件系

统涉及两个非常独特的事情,目录树或在磁盘或分区上文件的排列

定义四; 在计算机业,一个文件系统是有组织存储文件或数据的方法,

目的是易于查询和存取。文件系统是基于一个存储设备,比如硬盘或光盘,并且包含文件物理位置的维护;也可以说文件系统也是虚拟数据或网络数据存储的方法,比如 NFS

5.2 Linux 的文件系统

Page 7: 第 5 章  Linux 系统管理

7

5.2.1 Linux 文件系统的发展史

• 最早的文件系统是 Linus 使用的• 使用 VFS 使 Linux 可以支持多个不同的文件系

统• 1992.Ext 第一个专为 Linux 设计的文件系统• 1993.Ext2 第二代扩展文件系统• Ext3 融入了日志式文件系统技术,系统数据的

修改过程得到记录和保存

Page 8: 第 5 章  Linux 系统管理

8

5.2.2 Linux 文件系统的基本概念1. 文件系统的总体结构 一个文件系统可以看成是一个连续的、由多

个数据块组所组成的存储空间。1 )超级块描述目录和文件在磁盘上的静态分布2 )索引节点表 (i-node table) 索引节点描述文件和目录的最基本单位,每

个文件和目录对应且只对应一个 i-node3 )组描述符 (Group Descriptors) 描述块组4 )数据区 (data block) 真正的文件数据区

Page 9: 第 5 章  Linux 系统管理

9

2. 虚拟文件系统 VFSVFS 设计目标——提供快速高校的文件访问服

务VFS 是物理文件系统与服务之间的一个接口VFS 只存在与内存中VFS 功能• 记录可用文件系统的类型• 将设备同对应的文件系统联系起来• 处理一些面向文件的通用操作• 涉及到针对文件系统的操作时, VFS 把他们映

射到与控制文件、目录及 i-node 相关的物理文件系统

Page 10: 第 5 章  Linux 系统管理

10

5.2.3 目录结构1, 树形目录结构

Page 11: 第 5 章  Linux 系统管理

11

/bin 这个目录存放着最经常使用的命令。  

/boot 存放启动 Linux 时使用的一些核心文件/dev 该目录下存放的是 Linux 的外部设备/etc 存放所有的系统管理所需要的配置文件 和子目录。  /home 用户的主目录/lib 存放着系统最基本的动态链接共享库/lost+found 这个目录一般情况下是空的 , 当系 统非法关机 , 这里就存放了一些文 件。  

Page 12: 第 5 章  Linux 系统管理

12

/mnt 这里面系统提供的目录是为了让用户临时 挂载 别的文件系统的  /proc 这个目录是一个虚拟的目录,它是系统内 存的映射,这个目录的内容不在硬盘上而 是在内存里/root 该目录为系统管理员的用户主目录  /sbin 存放的系统管理员使用的系统管理程序  /tmp 这个目录是用来存放一些临时文件的。  /usr 我们要用到的很多应用程序和文件几乎 都存放在 usr 目录下。/var 这个目录中存放着在不断扩充着的东西, 我们习惯将那些经常被修 改的目录放在 这个目录下,包括各种日志文件。

Page 13: 第 5 章  Linux 系统管理

13

5.3.1 Linux 文件系统的类型• Linux 目前几乎支持所有的 Unix 类的文件系统• ext2 常用• ext3 常用• Iso9660 标准的光盘文件系统• swap 用于交换的磁盘分区• NTFS windows 文件系统,不支持 NTFS 写入• fat windows 文件系统,支持 fat 的读写;• NFS 网络文件系统,• HFS 苹果 MACOS 文件系统• XFS 、 JFS 、 Minix fs 、 UFS 、 Reiserfs

5.3 文件系统管理

Page 14: 第 5 章  Linux 系统管理

14

5.3.2 创建文件系统1. 通过 fdisk -l 查看机器所挂硬盘个数及分

区情况; 硬盘分区的表示: 在 Linux 是通过 hd*x 或 sd*x 表示的, 其中 * 表示的是 a 、 b 、 c ... ... x 表示的数字 1 、 2 、 3 ... ... hd 大多是 IDE 硬盘 sd 大多是 SCSI 或移动存储;

Page 15: 第 5 章  Linux 系统管理

15

• 引导( Boot ):表示引导分区,例子中 hda1 是引导分区;

• Start (开始):表示的一个分区从 X cylinder (磁柱)开始;

• End (结束):表示一个分区到 Y cylinder (磁柱)结束;

• id 和 System 表示的是一个意思 . 要 fdisk 一个分区时,通过指定 id 来确认分区类型;比如 7 表示的就 NTFS 分区;这个在 fdisk 中要通过 t功能来指定

• Blocks (容量):表示容量的意思,其单位是 K ;一个分区容量的值是由下面的公式而来的;Blocks = (相应分区 End 数值 - 相应分区 Start 数值 )x

单位 cylinder (磁柱)的容量 hda1 Blocks=(765-1)x8225.280=6284113.92 K = 6284.

113.92M

Page 16: 第 5 章  Linux 系统管理

16

# fdisk -lDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System/dev/hda1 * 1 765 6144831 7 HPFS/NTFS/dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)/dev/hda3 2806 9729 55617030 5 Extended/dev/hda5 2806 3825 8193118+ 83 Linux/dev/hda6 3826 5100 10241406 83 Linux/dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris/dev/hda8 5199 6657 11719386 83 Linux/dev/hda9 6658 7751 8787523+ 83 Linux/dev/hda10 7752 9729 15888253+ 83 LinuxDisk /dev/sda: 1035 MB, 1035730944 bytes256 heads, 63 sectors/track, 125 cylindersUnits = cylinders of 16128 * 512 = 8257536 bytes Device Boot Start End Blocks Id System/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)/dev/sda2 26 125 806400 5 Extended/dev/sda5 26 50 201568+ 83 Linux/dev/sda6 51 76 200781 83 Linux

Page 17: 第 5 章  Linux 系统管理

17

2.使用 fdisk 操作硬盘 fdisk 操作硬盘的命令格式如下:

# fdisk 设备

比如我们通过 fdisk -l 得知 /dev/hda 或者 /dev/sda 设备;我们如果想再添加或者删除一些分区,可以用

# fdisk /dev/hda或 # fdisk /dev/sda

Page 18: 第 5 章  Linux 系统管理

18

# fdisk /dev/sdaCommand (m for help): 在这里按m ,就会输出帮助;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 注: l 是列出分区类型,以供我们设置相应分区

的类型; m print this menu 注: m 是列出帮助信息; n add a new partition 注:添加一个分区; o create a new empty DOS partition table p print the partition table 注: p列出分区表; q quit without saving changes 注:不保存退出; s create a new empty Sun disklabel t change a partition's system id 注: t 改变分区类型; u change display/entry units v verify the partition table w write table to disk and exit 注:把分区表写入硬盘并退出; x extra functionality (experts only) 注:扩展应用,专家功能;

Page 19: 第 5 章  Linux 系统管理

19

3.建立分区# fdisk /dev/sda 操作分区然后使用如下指令来建立分区1. p 指令 列出当前操作硬盘的分区情况2. n 指令 增加一个分区;3. t 指令 指定分区类型;

Page 20: 第 5 章  Linux 系统管理

20

4.创建文件系统(格式化) 1)mkfs命令的使用 # mkfs -t 文件系统 存储设备注 :

• 这里的文件系统是要指定的,比如 ext3 ; reiserfs ; ext2 ; fat32 ; msdos 等 ... ...

• 设备比如是一个硬盘的分区,软盘,光驱等 .. ...

• 在格式化分区之前,查看硬盘分区情况,并有针对性的格式化;比如用 fdisk -l 来查看

Page 21: 第 5 章  Linux 系统管理

21

2 ) mkfs.ext3 mkfs.reiserfs mkfs.ext2 mkfs.msdos mkfs.vfat mke2fs 的介绍;

mkfs 在执行的命令的时候,调用的这些工具

# mkfs.ext3 /dev/sda6 把该设备格式化成 ext3 文件系统# mke2fs -j /dev/sda6 把该设备格式化成 ext3 文件系统# mkfs.ext2 /dev/sda6 把该设备格式化成 ext2 文件系统# mke2fs /dev/sda6 把该设备格式化成 ext2 文件系统# mkfs.reiserfs /dev/sda6 把该设备格式化成 reiserfs 文件系统# mkfs.vfat /dev/sda6 把该设备格式化成 fat32 文件系统# mkfs.msdos /dev/sda6 把该设备格式化成 fat16 文件系 统 ,msdos 文件系统就是 fat16 ;# mkdosfs /dev/sda6 把该设备格式化成 fat16 文件系统,同 mkfs.msdos

Page 22: 第 5 章  Linux 系统管理

22

5.3.3 挂载与卸载文件系统挂载文件系统,目前有两种方法,• 通过 mount 来挂载,• 通过 /etc/fstab 文件来开机自动挂

Page 23: 第 5 章  Linux 系统管理

23

1 、通过 mount 来挂载磁盘分区(或存储设备)挂载文件系统的命令格式:

[root@localhost beinan]# mount [-t 文件系统 ] [-o 选项 ] 设备 目录

-t 通过这个参数,我们来指定文件系统的类型,一般的情况下不必指定有时也能识别, -t 后面跟 ext3 、 ext2 、 reiserfs 、 vfat 、 ntfs 等,其中 vfat 是 fat32 和 fat16 分区文件系统所所用的参数;如果您忘记了文件系统,也可以在 -t 后面加 auto ;

-o 这个选项,主要选项有权限、用户、磁盘限额、语言编码等,但语言编码的选项,大多用于 vfat 和 ntfs 文件系统

设备 指存储设备,比如 /dev/hda1 , /dev/sda1 , cdrom 等。通过 fdisk -l 或者查看 /etc/fstab 或 dmesg 得知有哪些具体设备;一般的情况下光驱设备是 /dev/cdrom ;软驱设备是 /dev/fd0 ;硬盘及移动硬盘以 fdisk -l 的输出为准;

Page 24: 第 5 章  Linux 系统管理

24

1 )对光驱和软驱的挂载;

#mkdir /mnt/cdrom

# mount /dev/cdrom /mnt/cdrom

我们先建一个目录,然后执行mount 命令,这样 cdrom 就挂在 /mnt/cdrom 中了;我们就可以在 /mnt/cdrom 中查看光盘中资料和文件;这个目录您想怎么建就怎么建

Page 25: 第 5 章  Linux 系统管理

25

2)挂载 Linux 文件系统; 首先建一个文件系统挂载的目录;一个有文件系统的分区要挂

到系统中,必须要有一个挂载点;这个挂载点就是一个目录。要挂载 /dev/hda5 分区, hda5 分区创建的是 ext3 文件系统;# mkdir /mnt/hda5/ 先创建一个挂载目录;# chmod 777 /mnt/hda5/ 设置 /mnt/hda5 的权限为任何用户可写可读可执行# mount -t ext3 /dev/hda5 /mnt/hda5 通过 -t ext3 来指定 /dev/hda5 是 ext3 文件系统,并且挂载到 /mnt

/hda5 目录;# mount -t auto /dev/hda5 /mnt/hda5假如我们不知道 hda5 上 ext3 文件系统,可以用 -t auto 让系统定夺

# mount /dev/hda5 /mnt/hda5 不加任何参数,直接 mount /dev/hda5 到 /mnt/hda5 ;系统自动判断分区文件系统;

是不是被挂载了,通过 df -lh 来查看;

Page 26: 第 5 章  Linux 系统管理

26

3 )卸载文件系统 umount

[root@localhost beinan]# umount 设备或挂载目录

举例:#mount -t auto /dev/hda5 /mnt/hda5 挂载 /dev/hda5 ;#umount /dev/hda5 卸载 /dev/hda5#umount /dev/cdrom 卸载 cdrom ;#umount /dev/fd0 卸载软驱;

Page 27: 第 5 章  Linux 系统管理

27

2. 通过 /etc/fstab 文件来开机自动挂载文件系统

#mkdir /mnt/hda5/ 先创建一个挂载目录;#chmod 777 /mnt/hda5/

设置 /mnt/hda5 的权限为任何用户可写可读可执行

然后我们在 /etc/fstab 中加如下的一行;/dev/hda5 /mnt/hda5 ext3 defaults 0 0

重启机器

Page 28: 第 5 章  Linux 系统管理

28

5.3.4 管理 Linux 文件系统的常用命令1.df 统计文件系统中可用空间名称 :df

使用权限 : 所有使用者使用方式 : df [ 选项 ]... [FILE]... 说明:显示档案系统的状况,或是看所有档案系统

的状况 ( 默认值 )

Page 29: 第 5 章  Linux 系统管理

29

参数:-a, --all 包含所有的具有 0 Blocks 的档案系统--block-size={SIZE} 使用 {SIZE} 大小的 Blocks -h, --human-readable 使用人类可读的格式 1024为单

位 -H, --si 很像 -h, 但是用 1000为单位而不是用 1024 -i, --inodes 列出 inode信息,不列出已使用 block -k, --kilobytes 就像是 --block-size=1024 -l, --local 仅显示本地的文件系统-m, --megabytes 就像 --block-size=1048576--no-sync 取得信息前不 sync ( 预设值 )-P, --portability 使用 POSIX 输出格式-t, --type=TYPE 限制列出档案系统的 TYPE

Page 30: 第 5 章  Linux 系统管理

30

T, --print-type 显示档案系统的形式-x, --exclude-type=TYPE 限制列出档案系统不要显示 TYPE -v ( 忽略 )

例如:#df –m

[root@lab9 root]# df -m

Page 31: 第 5 章  Linux 系统管理

31

2.du

用法: du [选项 ]... [ 文件 ]...

说明:总结每个 < 文件 > 的磁盘用量,目录则取总用量。参数: -a, --all 递归的显示指定目录中各文件及子目录

中各文件占用的数据块数 -B, --block-size=SIZE 使用设定的大小显示 -b, --bytes 以字节为单位 -c, --total 最后在加一个总计 -h, --human-readable 以容易理解的格式印出文件大小

( 例如 1K 234M 2G)

-H, --si 类似 -h ,但取 1000 的次方而不是 1024

Page 32: 第 5 章  Linux 系统管理

32

-k 即 --block-size=1K

-l, --count-links 连硬链接的大小也计算在内 -L, --dereference 找出符号链接指示的真正目的地 -S, --separate-dirs 不包括子目录的占用量 -s, --summarize 只分别计算命令列中每个参数所占 的总用量 -x, --one-file-system 跳过在不同文件系统上的目录不 予统计 例如:#du –sh /usr

统计 /usr 目录的大小

Page 33: 第 5 章  Linux 系统管理

33

3.dd名称 : dd使用权限 : 所有使用者 dd 使用方式 : dd [option] 说明:把指定的输入文件复制到指定的输出文件中,

并进行格式转化参数:if 输入文件of 输出文件ibs=[BYTE] 一次读取 bytes字节obs=[SIZE] 一次写入 bytes字节

Page 34: 第 5 章  Linux 系统管理

34

bs =[BYTE] 同时设置读写缓冲区字节数cbs=BYTES 一次转换 bytes字节seek=BLOCKS 跳过一段以后才输出skip=BLOCKS 输出跳过一段以后才输入 拷贝光盘 (注意,光盘是标准的 iso9660格式才

可以 ) dd if=/dev/cdrom of=cdrom.iso

其中 if 后面以及 of 后面的内容依你的需求调整。

Page 35: 第 5 章  Linux 系统管理

35

4.fsck指令: fsck 使用权限 : 超级使用者 使用方式 : fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...] 说明: 检查与修复 Linux 档案系统,可以同时检查一个或多个 Lin

ux 档案系统 参数: filesys : device 名称 (eg./dev/sda1) , mount 点 (eg. / 或 /usr)-t 给定文件系统的型式,若在 /etc/fstab 中已有定义或 kernel

本 身已支持的则不需加上此参数-s 依序一个一个地执行 fsck 的指令来检查-A 对 /etc/fstab 中所有列出来的 partition 做检查-C 显示完整的检查进度-d 打印 e2fsck 的 debug 结果

Page 36: 第 5 章  Linux 系统管理

36

-p 同时有 -A 条件时,同时有多个 fsck 的检查一 起执行-R 同时有 -A 条件时,省略 / 不检查-V 详细显示模式 -a 如果检查有错则自动修复-r 如果检查有错则由使用者回答是否修复

例子 : 检查msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复 : fsck -t msdos -a /dev/hda5 注意 : 此指令可与 /etc/fstab 相互参考操作来加以了解。

Page 37: 第 5 章  Linux 系统管理

37

1. 配置键盘1) 配置键盘设备模块/sbin/modprobe usbkbd

/sbin/modprobe keybdev

2. 设置自动加载别名/etc/modules.conf

alias usb-controller usb-uhci

3.键盘配置文件/etc/sysconfig/keyboard

5.4 设备管理

Page 38: 第 5 章  Linux 系统管理

38

2. 配置鼠标1. 创建设备文件mkmod /dev/input/mice c 13 63

2.插入模块/sbin/modprobe usbmouse

/sbin/modprobe mousedev

3. 创建别名alias usb-controller usb-uhci

4.鼠标配置文件/etc/sysconfig/mouse

Page 39: 第 5 章  Linux 系统管理

39

3. 网卡的配置4.声卡的配置

Page 40: 第 5 章  Linux 系统管理

40

什么是帐号 ?

当一台计算机为多人所用时,通常需要区分用户,例如,使个人文件保持个人化。即使计算机同时只为一人所用,这也很重要,如多数微机。因此,每个用 户给定一个单独的用户名,这个名字被用于登录。用户除了名字还有更多。一个帐号是所有的文件、资源和属于这个用户的信息。

5.5 用户管理

Page 41: 第 5 章  Linux 系统管理

41

5.5.1 用户和组文件1, 用户帐号文件- passwd 图 3- 2- 1 Unix 系统的基本用户数据库是文本文件 /etc/pa

sswd (叫口令文件 ) ,它列出所有有效用户名及其相关信息。文件的每个用户一行,分为用 : 分隔的 7 个域:

用户名 :加密格式的口令 :数字的 user id :数字的 group id :全名或帐户的其他说明 :家目录 :登录 shell

Page 42: 第 5 章  Linux 系统管理

42

2, 用户口令文件- shadow 图 3-2-2 Linux 系统有影子口令 shadow passwords 文件。这样将加密

的口令存在另一文件 /etc/shadow  中,而这个文件只有 root能读。 在 shadow 文件中,每行定义了一个用户信息,行中各字段各字段用“:”隔开。为进一步提高安全性, shadow 文件中保存的是已加密的口令。

“/etc/shadow” 文件中的每个记录用“:”隔开为 9 个域,每个域的含义分别为:

登录名加密口令口令上次更改时距 1970年 1月 1 日的天数口令更改后不可以更改的天数口令更改后必须再更改的天数 ( 有效期 )口令失效前警告用户的天数口令失效后距账号被查封的天数账号被封时距 1970年 1月 1 日的天数保留未用

Page 43: 第 5 章  Linux 系统管理

43

3. 用户组账号文件—— group 图 3-3-3 用户组是逻辑地组织用户账号集合的方便途径,它允许用户在组内共享文件。系统上的每一个文件都有一个用户和一个组的属主。使用“ ls –l” 命令可以看到每一个文件的属主和组。

系统上的每个组,在 /etc/group 文件中有一行记录,记录的格式为: groupname : passwd : GID : userlist

字  段 说  明Groupname 是组的名字Passwd 是组的加密口令GID 是系统区分不同组的 ID , /etc/pass

wd 域中的 GID域是用这个数来指定用户的缺省组。Userlist 是用“,”分开的用户名,列出的是

这个 组的成员。

Page 44: 第 5 章  Linux 系统管理

44

4. 用户组口令文件—— gshadow gshadow 文件用于定义用户组口令、组管理员等信息,该文

件只有 root 用户可以读取。 Gshadow 文件中每行定义一个用户组信息,行中各字段间用“:”分隔,每行记录的格式为:

groupname : Encrypted password: Group administrators: Group members

各字段的的含义如下:Groupname 用户组名称,该字段与 group 文件中的组名称对应。Encrypted password用户组口令,该字段用于保存已加密的口令Group administrators 组的管理员账号,管理员有权对该组添加删除账号。Group members 属于该组的用户成员列表,列表中多个用户间用“,”分隔。

Page 45: 第 5 章  Linux 系统管理

45

5.5.2 用户和组帐户的维护 1, 创建用户 Linux 核心只不过视用户为数字。每个用户用一个单一的整数识

别, user id 或 uid ,核心之外的一个单独的数据库给每个 user id安排了文本的名字,即用户名 username 。要产生一个用户,需要给用户数据库增加关于用户的信息,并给他产生家目录。

创建用户使用 useradd 命令使用方式: useradd [option] loginid 或 useradd –D [option] loginid 命令参数 : -d home_dir 设定使用者的目录为 home_dir-e expire_date 设定此帐号的使用期限(格式 YYYY-MM-DD ),默认值为永久

-g initial_group 设定帐号最初所属组-D 显示或设置 useradd 命令时所使用的默认选项

Page 46: 第 5 章  Linux 系统管理

46

该命令做了下面几件事:1 )在 /etc/passwd 文件中增添了一行记录;2 )在 /home 目录下创建新用户的主目录,并将 /etc/s

kel 目录中的文件拷贝到该目录中去;但是使用了该命令后,新建的用户暂时还无法登录,因为还没有为该用户设置口令,需要再用 passwd 命令为其设置口令后,才能登录。用户的 UID 和 GID 是 useradd 自动选取的,它是将 /etc/passwd 文件中的 UID 加 1 ,将 etc/group 文件中的 GID 加 1 。范例: #useradd student #useradd -g root student附注: adduser 与 useradd 指令为同一指令(经由符号连结 symbolic link)

Page 47: 第 5 章  Linux 系统管理

47

2, 修改用户 usermod 命令可用来修改用户帐号的各种属性,包括

用户主目录、私有组、登录、 shell等 .Usermod 的命令格式如下:usermod [-LU][-c < 备注 >][-d <登入目录 >][-e < 有效期限 >][-f <缓冲天数 >][-g <群组 >][-G <群组 >][-l <帐号名称 >][-s ][-u ][ 用户帐号 ]

该命令的各个参数说明如下:  -c< 备注 > : 修改用户帐号的备注文字。   -d<登入目录 >: 修改用户登入时的目录。   -e< 有效期限 > : 修改帐号的有效期限。   -f<缓冲天数 > : 修改在密码过期后多少天关闭该帐号

  -g<群组 > : 修改用户所属的群组。 -l<账号名称 > : 更改账号的登录名

Page 48: 第 5 章  Linux 系统管理

48

-L : 锁定帐号密码,使密码失效-U : 解除密码锁定范例:(1) 修改用户名,把用户名“ liuyidan” 改名为“ l

yd” ,使用的命令是:# usermod –l lyd liuyidan(2)锁定“ lyd” 用户,使其不能登录。命令如下:# usermod –L lyd(3)解锁“ lyd” 用户账号,使其可以登录。命令如

下:# usermod –U lyd

Page 49: 第 5 章  Linux 系统管理

49

3,删除用户 userdel 命令用于删除指定的用户账号。其使用的语法格式为:

userdel [-r][ 用户账号 ] 需要补充说明的是 userdel 命令可删除用户账号与相关的文件。若不加参数,则仅删除用户账号,而不删除相关文件。其中参数“ -f” 是用来删除用户登入目录以及目录中所有文件。

范例 :#grep student /etc/passwd // 查询用户账号 student 是否存在#userdelstudent //删除 student账号#grep student/etc/passwd //再次查询用户账号 student 是否存

在#ll –d /home // 查询用户 student 的主目录是否还

存在#userdel –r student //删除用户的同时删除其工作主目录

Page 50: 第 5 章  Linux 系统管理

50

4, 创建组 groupadd 命令可指定群组名称来建立新的群组账号。该组账号的 ID值必须是惟一的,且数值不可为负。预设的最小值不得小于 500 ,且每增加一个组账号 ID值逐次增加。 ID值 0~499是保留给系统账号使用。该指令使用的语法格式为:

groupadd [-r] group其中“ -r”参数是用来建立系统账号。系统账号的 ID值不能大于 5

00 。范例:# groupadd studentgroup // 建立组账号 studentgroup# grepstudentgroup /etc/group// 查询 group 文件 studentgroup 组是否建立#groupadd –r sysstudentgroup // 建立系统组账号# grep studentgroup /etc/group// 查询 group 文件中 studentgroup 组是否建立

Page 51: 第 5 章  Linux 系统管理

51

5,修改组groupmod命令用来更改群组识别码或名称。该命令的语法格式 :

groupmod [-g <群组识别码 > <-o>][-n <新群组名称 >][群组名称 ]命令中所使用的参数说明如下:

-g <群组识别码 >  设置欲使用的群组识别码。-n <新群组名称 >  设置欲使用的群组名称。下面举例说明该命令的使用方法:# grep studentgroup /etc/group//查询 group 文件中 studentgroup组属性#groupmod –g 503 studentgroup//改变 studentgroup组的 GID 为 503# grep studentgroup /etc/group//查询操作结果是否正确#groupmod –n ydgroup studentgroup//改变 studentgroup组名为 ydgroup# grep 503 /etc/group//查询操作结果是否正确

Page 52: 第 5 章  Linux 系统管理

52

6. 删除组账号groupdel 命令用于删除指定的组账号,若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。该命令的语法格式为:

groupdel [群组名称 ]

Page 53: 第 5 章  Linux 系统管理

53

7.口令维护命令 出于系统安全考虑, Linux 系统中的每一个用户除了有其用

户名外,还有其对应的用户口令。因此使用 useradd 命令增加时,还需使用 passwd 命令为每一位新增加的用户设置口令;用户以后还可以随时用 passwd 命令改变自己的口令。该命令的一般格式为:

passwd [ 用户名 ] 其中用户名为需要修改口令的用户名。只有超级用户可以使

用“ passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的 passwd 命令修改自己的口令。 另外, passwd 命令还可以使用一些参数选项,这些参数选项可对账号的口令进行不同的操作,但这些带参数的 passwd 命令只有 root 用户可以使用。这些参数选择包括:

-S :用于查询指定用户账号的状态。 -l :用于锁定账号的口令。-u :解除锁定账号的口令。-d :删除指定账号的口令。

Page 54: 第 5 章  Linux 系统管理

54

8. 组中用户成员的维护 gpasswd 命令可用于把一个账户添加到组、把

一个账户从组中删除、把一个账户设为组管理员。( 1 )添加用户到使用的命令格式为:gpasswd –a 用户账号名 组账号名( 2 )从组中删除用户的命令格式为:gpasswd – d 用户账号名 组账号名( 3 )设置用户为组管理员的命令格式为:gpasswd -A 组管理员用户列表 用户组

Page 55: 第 5 章  Linux 系统管理

55

5.5.3 用户和组的状态命令1, id 命令id 命令用于显示用户当前的 UID , gid 以及所属群组的

组列表该指令的语法格式为:  id [选项 ] [ 用户名称 ]该命令所使用的选项参数说明如下: -g : 显示用户所属群组的 ID 。 -G :显示用户所属附加群组的 ID 。 -n : 显示用户,所属群组或附加群组的名称。 -r : 显示实际 ID 。 -u : 显示用户 ID 。2. whoami 命令whoami 命令用于显示登录者自身的用户名称,本指令相

当于执行“ id –un”指令。

Page 56: 第 5 章  Linux 系统管理

56

3. su 命令  su 命令是用来将当前用户转换为其他用户身份。命令

的语法为: su [-flmp] [-][-c <指令 >][-s ][ 用户帐号 ]需要指出的是 su 命令可让用户暂时变更登入的身份。变更时须输入所要变更的用户账号与密码。该命令中的选项参数说明如下:

-c<指令 > :执行完指定的指令后,即恢复原来的身份。 - :改变身份时,也同时变更工作目录,以及 HOME ,

SHELL , USER , LOGNAME 。此外,也会变更 PATH变量。 -m , -p :变更身份时,不要变更环境变量。 -s :指定要执行的 shell 。[ 用户帐号 ] :指定要变更的用户。若不指定此参数,则预设变更为 root 。

Page 57: 第 5 章  Linux 系统管理

57

4. groups 命令groups 命令用于显示指定用户所属的组,如未指

定用户则显示当前用户所属的组。该命令的语法格式为:groups 用户名

Page 58: 第 5 章  Linux 系统管理

58

5.6.1 进程的定义 Linux 是一个多用户多任务的操作系统。那到底什么叫进程?进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。采用时间片轮转的方法来处理多个程序 .

进程在其一个生存周期内可以处于多个状态。简单的,只有运行状态和就绪 2 个状态。复杂的可以有创建、运行、停止、挂起、就绪、阻塞、就绪(交换出)、阻塞(交换出)、被抢占、核心态等状态。

5.6 进程管理

Page 59: 第 5 章  Linux 系统管理

59

5.6.2报告进程状态ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、哪些进程占用了过多的资源等等。 ps 命令用于监控后台进程的工作情况。

ps [选项 ] 命令中的选项说明如下: -e : 显示所有进程 -f : 全格式 -h : 不显示标题。 -l : 给出长列表。 -a : 显示终端上的所有进程,包括其他用户的进程 -r : 只显示正在运行的进程。 -x 显示没有控制终端的进程。-u : 打印用户格式,显示用户名和起始时间。 -j : 按作业格式输出。 -v : 按虚拟存储器格式显示输出。 -m : 显示存储器信息。-w : 用宽格式显示,不截取命令行,使它成为一行。 -r : 只显示正在运行的进程

Page 60: 第 5 章  Linux 系统管理

60

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 父进程 IDWCHAN 进程等待的内核事件名

Page 61: 第 5 章  Linux 系统管理

61

5.6.3 结束进程中断一个前台进程使用 <Ctrl+c> 组合键。

中断一个后台进程使用 kill 命令。kill 命令的语法格式:

kill [-s 信号 | -p ] [ -a ] 进程号 kill -l [信号 ]

命令中的参数说明如下:-s :指定需要送出的信号。可以是信号名也可以对应数字-p :指定 kill 命令只是显示进程的 pid ,并不真正送出结束信号。

-l :显示信号名称列表,这也可以在 /usr/include/linux/signal.h 文件中找到。

Page 62: 第 5 章  Linux 系统管理

62

5.6.4 进程睡眠sleep 命令可使当前正在执行的进程在规定的时间内处于睡眠。其使用的语法格式为:

sleep time

说明: time 为进程将睡眠的时间,以秒为单位。例如:

$ sleep time

Page 63: 第 5 章  Linux 系统管理

63

5.7.1 压缩和解压缩1 ,基本概念在 Windows 下最常见的压缩文件就只有两种,一是 ,zip ,另一个是 .rar 。可是 Linux 就不同了,它有 .gz 、 .tar.g

z 、tgz 、 bz2 、 .Z 、 .tar等众多的压缩文件名,此外 wind

ow下的 .zip 和 .rar 也可以在 Linux 下使用。在具体总结各类压缩文件之前呢,首先要 弄清两个概念:打包和压缩打包:将一大堆文件或目录什么的变成一个总的文件,压缩:将一个大文件通过一些压缩算法变成一个小文件。

为什么要区分这两个概念呢?

5.7 Linux 系统软件的安装

Page 64: 第 5 章  Linux 系统管理

64

2.打包命令 tar Linux 下最常用的打包程序就是 tar 了,使用 tar 程序打出来的

包我们常称为 tar 包, tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩。

语法: tar [ 主选项 +辅选项 ] 文件或者目录使用该命令时,主选项是必须要有的,它告诉 tar 要做什么事情,辅选项是辅助使用的,可以选用。

主选项:c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就

要选择这个选项。x 从档案文件中释放文件。辅助选项:v 详细报告 tar处理的文件信息。如无此选项, tar 不报告文件信息。

z 用 gzip 来压缩 /解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

Page 65: 第 5 章  Linux 系统管理

65

范例:# tar -cf all.tar *.jpg这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的

包。 -c 是表示产生新的包, -f指定包的文件名。# tar -rf all.tar *.gif这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去。 -r 是表示增加文件的意思。

# tar -uf all.tar logo.gif这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件, -u

是表示更新文件的意思。# tar zcvf all.tar.gz /root/test/这条命令是将 /root/test/ 下的文件打包并且压缩# tar -zxvf all.tar.gz这条命令是解出 all.tar.gz 包中所有文件

Page 66: 第 5 章  Linux 系统管理

66

(1) tar调用 gzip

gzip 是 GNU 组织开发的一个压缩程序, .gz 结尾的文件就是 gzip压缩的结果。与 gzip相对的解压程序是 gunzip 。 tar 中使用 -z 这个参数来调用 gzip 。下面来举例说明一下:

# tar -czf all.tar.gz *.jpg

这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 gzip压缩,生成一个 gzip压缩过的包,包名为 all.tar.gz   

# tar -xzf all.tar.gz

这条命令是将上面产生的包解开。

Page 67: 第 5 章  Linux 系统管理

67

(2) tar调用 bzip2

bzip2 是一个压缩能力更强的压缩程序, .bz2 结尾的文件就是 bzip2压缩的结果。与 bzip2相对的解压程序是 bunzip2 。 tar 中使用 -j 这个参数来调用 gzip 。下面来举例说明一下:  

# tar -cjf all.tar.bz2 *.jpg

  这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 bzip2压缩,生成一个 bzip2压缩过的包,包名为 all.tar.bz2

# tar -xjf all.tar.bz2

这条命令是将上面产生的包解开。

Page 68: 第 5 章  Linux 系统管理

68

(3)tar调用 compress

compress 也是一个压缩程序。 .Z 结尾的文件就是 compress压缩的结果。与 compress相对的解压程序是 uncompress 。 tar 中使用 -Z 这个参数来调用 compress 。下面来举例说明一下:

# tar -cZf  all.tar.Z *.jpg

这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 compress压缩,生成一个 uncompress压缩过的包,包名为 all.tar.Z

# tar -xZf all.tar.Z

这条命令是将上面产生的包解开

Page 69: 第 5 章  Linux 系统管理

69

下面对于 tar 系列的压缩文件作一个小结:1) 对于 .tar 结尾的文件 tar -xf all.tar2) 对于 .gz 结尾的文件 gzip -d all.gz gunzip all.gz 3) 对于 .tgz 或 .tar.gz 结尾的文件 tar -zxvf all.tar.

gz tar -zxvf all.tgz 4) 对于 .bz2 结尾的文件 bzip2 -d all.bz2 bunzip2 all.bz2 5) 对于 tar.bz2 结尾的文件 tar -xjf all.tar.bz2 6) 对于 .Z 结尾的文件 uncompress all.Z 7) 对于 .tar.Z 结尾的文件 tar -xZf all.tar.z

Page 70: 第 5 章  Linux 系统管理

70

5.7.2 软件分发基本类型及安装1, 二进制分发软件包的安装与卸载 Linux 软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件 /操作系统平台编译的,那它就不能在另外的平台或环境下正确执行。

(1) 、 *.rpm 形式的二进制软件包 安装: rpm -ivh *.rpm 卸载: rpm -e packgename 说明: RPM ( RedHat Packge Manager )是 R

edHat公司出的软件包管理器。rpm 的参数中 -i 是安装, -v 是校验, -h 是用散列

符显示安装进度,参数 -e 是删除

Page 71: 第 5 章  Linux 系统管理

71

(2) 、 *.tar.gz/*.tgz 、 *.bz2 形式的二进制软件包 安装: tar zxvf *.tar.gz 或 tar yxvf *.bz2 卸载:手动删除 说明: *.tar.gz/*.bz2 形式的二进制软件包是用 tar

工具来打包、用 gzip/bzip2压缩的,安装时直接解包即可。对于解压后只有单一目录的软件,卸载时用命令“ rm -rf 软件目录名”;如果解压后文件分散在多处目录中,则必须一一手动删除

(3) 、提供安装程序的软件包 这类软件包已经提供了安装脚本或二进制的安装向

导程序( setup 、 install 、 install.sh等),只需运行它就可以完成软件的安装

Page 72: 第 5 章  Linux 系统管理

72

2,源代码分发软件包的安装与卸载 Linux 软件的源代码分发是指提供了该软件所有

程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能 /模块,适应多种硬件 /操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。

Page 73: 第 5 章  Linux 系统管理

73

(1) *.src.rpm 形式的源代码软件包 安装: rpm -rebuild *.src.rpm

cd /usr/src/dist/RPMS

rpm -ivh *.rpm

卸载: rpm -e packgename

说明: rpm --rebuild *.src.rpm 命令将源代码编译并在 /usr/src/dist/RPMS 下生成二进制的 rpm 包,然后再安装该二进制包即可。 packgename 如前所述。

Page 74: 第 5 章  Linux 系统管理

74

(2) *.tar.gz/*.tgz 、 *.bz2 形式的源代码软件包 安装: tar zxvf *.tar.gz 或 tar yxvf *.bz2 先解压 然后进入解压后的目录: ./configure 配置 make 编译 make install 安装 make clean 清除安装时的垃圾信息卸载: make uninstall 或 手动删除 说明:建议解压后先阅读说明文件,可以了解安装有哪些

需求,有必要时还需改动编译配置。软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径: ./configure --prefix= 目录名,这样可以使用“ rm -rf 软件目录名”命令来进行干净彻底的卸载。

Page 75: 第 5 章  Linux 系统管理

75

本章总结

1 ,如何创建一个用户熟练的对用户操作2 ,查看系统进程,停止某一个进程3 , Linux 软件的安装,源代码的概念和操作

Page 76: 第 5 章  Linux 系统管理

76

技巧思考

1 ,理解 Linux 对用户所作的安全2 ,对进程的理解3 ,在实际工作中,应该如何加强用户帐户

的 管理

Page 77: 第 5 章  Linux 系统管理

77