红联Linux门户
Linux帮助

UNIX操作系统概述及基本知识

发布时间:2005-12-07 20:15:10来源:红联作者:chentong
1.UNIX操作系统简介
UNIX操作系统是一个多用户、多任务的操作系统,它自1974年问世以来,迅速地在世界范围内推广。与一般操作系统一样,UNIX系统也是运行在计算机系统的硬件和应用程序之间,负责管理硬件并向应用程序提供简单一致的调用界面,控制应用程序的正确执行。UNIX与其他操作系统的不同之处主要有两点:
l UNIX与其他操作系统的内部实现不同
l UNIX与其他操作系统的用户界面不同
现在的UNIX实际上已经不是一个严格意义上的操作系统了。UNIX可以分为两部分,它除了传统操作系统模块以外,还包括一组可供调用的系统库和一些基本应用程序。同计算机打交道的是UNIX的文件系统和进程控制模块,接着是UNIX系统提供的一组系统库,用于最顶层UNIX系统的标准应用程序和其他应用程序的调用运行。用户可以访问到标准UNIX系统的系统库和标准应用程序。这两部分组成了UNIX系统的用户界面,他们也形成了用户眼中的UNIX操作系统的概念。下图给出了UNIX的层次结构。
UNIX系统中进行硬件管理和进程控制的部分称为内核。UNIX系统把每个硬件都看成是一个文件(称为设备文件),这样用户就可以用读写的方式来实现对硬件的访问。UNIX文件系统管理用户对系统数据和设备的读写访问。UNIX系统还通过内核为进程分配资源(包括CPU资源)并控制进程对硬件的访问。
除了提供内核来完成传统操作系统的功能外,UNIX还为用户提供了一组系统库和标准应用。这一标准的界面不仅可以使应用程序方便地移植,还可以让用户方便地使用。标准界面的优点是应用的可移植性,即一个应用程序可以不加修改地运行在不同硬件结构的各种机器上。
2.UNIX操作系统的版本与标准
UNIX经过多年的发展,存在着存在着许多变体和版本。下面我们看一下常见的UNIX系统的各种变体和版本。
l UnixWare,它的基础是SVR4,主要运行在X86(Intel或者100%可兼容)机器上。
l BSDI网络服务器:是BSD操作系统的一个商业版本。它继承了BSD 操作系统,并且为其添加了许多新的网络功能。由于它能很好地支持网络,它主要被ISP(Internet Service Providers)使用,所有的X86(Intel或100%可兼容)机器上都可运行BSDI。
l FreeBSD和NetBSD是BSDI网络服务器的免费版本。它们包含的许多强大的功能使BSD操作系统变得十分流行,但它缺乏商业团体的技术支持。FreeBSD可在X86平台上运行。NetBSD可在下列机器上运行:Dec, Alpha, Amiga, Atari, HP9000/300Series,X86, m86k Macintosh, Sun Series, DecVAX等。
l SCO OpenServer是UNIX的变体,它建立在XENIX的基础上。目前在Internet/Intranet上非常流行,在企业级服务器上占有一席之地。技术支持较为出色,已经成为许多公司商业操作系统的选择。
l Linux最初是从minix开发而来。现在已经发展成为非常流行、被广泛应用的操作系统。Linux目前在工作站上非常流行,但由于它缺少专业操作系统的技术支持和稳定性,它不能用于关键任务的服务器。
l 一些大型主机和工作站的生产厂家专门为它们的机器做了UNXI版本,其中包括SUN公司的Solaris系统,IBM公司的AIX和惠普公司的HP-UX。
3.文件系统基础
UNIX内核有两个基本的子系统:文件子系统和进程控制子系统。文件子系统负责文件的相关操作和管理进程控制子系统则负责与进程相关的操作与管理
3.1 内核文件子系统
它主要负责访问和管理系统及用户文件。UNIX系统只是把文件看作是一组数据字节,对它们的解释是通过系统提供的某种结构进行的。
UNIX内核文件子系统使用了三个数据结构来描述每一个文件以及访问文件的途径,它们分别是与具体进程相关的文件描述符表项,与内核相关的文件表项,与每个文件相关的索引节点。
l 文件描述符表:在内核中,对应于每个进程,都有一个文件描述符表,用来标识改进程要打开的所有文件。该表中的每一项对应一个进程打开的文件,每一项中有一个称为文件描述符(file description)的整型数用来标识文件。
l 文件表:文件表中的每一项对应于内核中打开的文件,主要描述用户对文件的访问权限及读写起始地址。
l 索引节点(Index Node,又称inode)文件的具体信息是通过索引节点来描述的。根据所在位置的不同,inode分为磁盘inode和内存inode。
进程要访问文件,必须通过上述三种数据结构来进行,过程具体如下:
进程先访问与它对应的文件描述符表,通过它访问文件表,进而访问inode表中与文件相关的inode表项,最后通过inode去访问文件,如下图所示。
3.2 文件类型
UNIX系统中的文件类型有许多种,当用户使用ls -l filename命令时,所列内容的第一项的第一位就标识了文件系统的类型。
l 正规文件(regular file):又称为普通文件,在使用ls -l时,所列内容的第一项的第一位为“-”。系统中源码、文本和shell程序等都是正规文件。
l 目录文件:在UNIX系统中,目录是一种特殊的文件,它的内容是所包含的文件的信息:文件的位置、大小、文件的创建时间等。使用ls -l时,第一项第一列的标识为“d”。目录文件只能由操作系统或专门的程序来读取和修改,普通用户无法直接访问目录文件,只能读取目录文件的内容。
l 套接字:socket是UNIX系统中用于计算机之间相互通信的应用程序的接口它将完成网络上的I/O操作。在UNIX系统中,socket并不是一个真正的文件,但是它被抽象成一个文件,使用ls -l命令时,第一项第一位的标识为“s”。
l 设备文件(device file):UNIX系统为了实现与外设相关的操作,提供设备文件专门负责内存与外设间的I/O操作。UNIX系统中有两种设备文件:字符设备文件(character device file)和块设备文件(block device file)。字符设备文件用于与外设进行无缓冲的I/O操作,使用ls -l时,其第一项第一位标识为“e”;块设备文件用于与外设进行有缓冲的I/O操作,使用ls -l时,其第一项的第一位标识为“b”。一般来说,系统中的磁盘驱动器(包括硬盘和CDROM)为块设备文件,磁带驱动器和终端驱动器为字符设备文件。键盘和显示器为系统的两个标准输入/输出的字符设备文件。
l 有名管道(FIFO文件):UNIX系统提供了使用管道实现进程间通信的方法。它是一个临时文件,严格遵守先进先出的原则,因此又称为FIFO文件。在使用ls -l时,第一项第一位的标识为“p”。
l 链接(link):系统中的链接是一个已经存在的文件的另一个名字,它不复制文件的内容。有两种链接方式,一种是硬链接(hard link),另一种是符号链接(symbolic link),又称软链接。硬链接和原有文件是存储在同一物理地址的两个不同的名字,因此硬链接是相互的;符号链接的内容只是一个所链接文件的文件名,在使用ls -l时,符号链接的第一项的第一位为“l”。
3. 3 文件和目录的访问权限
命令ls -l可以列出文件或目录的访问权限。所谓访问权限是指用户是否对文件或目录进行读写和执行的权力。
文件和目录的访问权限分为三类:
l 属主的权限:定义了文件和目录属主可对其进行的操作
l 同组用户的权限:定义了与属主在同组的其他成员可对其进行的操作。
l 其他用户的权限:定义了除去属主和同组的成员外,其他用户可对其进行的操作。
UNIX系统按属主、同组用户和其他用户的顺序来验证对文件操作的用户的许可权。
在使用ls -l命令时,所列文件的第一项的第二位至第四位位文件属主的访问权限;第五和第七位位同组用户权限;第八至第十位位其他用户的访问权限。
超级用户可以读、写和执行任何一个文件而忽略该文件的属主所规定的权限。
每一类访问权限都以一个八进制的数(取值为0~7)来表示,八进制用3位表示,每位的含义如下:
第一位(r):值0或1(定义读权限,为1时表示可读)
第二位(w):值0或 1(定义写权限,为1 时表示可写)
第三位(x):值0或 1(定义执行权限,为1 时表示可执行)
例如,5(101)表示可读和可执行
例如,对testfile 文件的访问权限定义为。
属主可读,可写,可执行,为111=7
同组用户可读可执行,为101=5
其他用户不可访问,为000=0
则可定义文件testfile的访问权限为750。
用户管理
对系统管理员来说,用户管理是其系统的日常管理中十分重要的部分。系统管理员在用户管理方面需要进行的主要工作主要有:增加或删除一个用户;监视并控制用户在系统中的活动;定制用户在系统中的工作环境。系统管理员是通过“超级用户”(root)的帐号来实现的。
1 用户口令管理
口令的建立和更换:用户可以使用命令passwd来建立和更换自己的登录口令,超级用户则可以使用passwd命令更改所有用户的登录口令或规定用户的登录口令的属性。
passwd [name]:修改用户name的帐号口令
passwd -s [-a]:显示所有用户的口令信息,超级用户使用
passwd -s [name]:显示用户name的口令信息,超级用户使用
passwd [-l|-d][-f][-n min][-x max][-w warn] name
-l:锁住用户name的帐号,超级用户使用
-d:删除某一用户的口令,超级用户使用
-f:使用户name的口令失效,强迫用户下次登录时更改口令,超级用户使用
-n min:规定口令在min天后失效,超级用户使用
-x max:规定用户口令寿命的最长天数,超级用户使用
-w warn:设置在用户口令失效后的警告信息,超级用户使用
passwd文件:UNIX所有用户的清单时passwd文件,它位于/etc目录下,文件的每一行定义一个用户,文件的属性是“只读”,属主是“超级用户”。文件的每一行包含以下几项:
用户登录名:
经过加密处理的口令:以x显示加密后的口令,加密处理的口令放在/etc/shadow文件中
uid值:用户ID,系统内唯一的标识用户名的数字。
gid值:组ID,一个表示用户默认组号的值。该值对应/etc/group中的一项。
个人信息:也称为GOS域,记录用户的个人信息
登录目录:定义了用户的home目录或初始的工作目录
登录shell:用户在进行系统登录后最初可以使用的shell。
例如,下面是lyj用户信息在passwd文件中的存储情况
lyj: x: 301: 15: LiYongjian: /usr/lyj: /bin/sh
2.用户组管理
在UNIX中,用户组的引入是为了方便用户对文件和其他资源的共享,同时又保证系统的安全性。所谓用户组是指共同在UNIX系统中开发同一项目,因此共享文件和其他系统资源的用户的集合。
Group文件:定义了UNIX系统中所有的用户组,它位于系统的/etc目录下。文件的每一行定义一个用户组,格式为: group-name: * : gid: additional-user
Group-name 中包含组的名称(文本格式);“*”这一项是为了与老版本的UNIX兼容,没有实际意义。Gid域是一个唯一标识组名的数字;additional-user域包含了属于该组的用户名单。例如:
# cat /etc/group
sys::0:root,bin,sys,adm
root::0:rootdaemon::1:root,daemon
增加和删除用户组:通过groupadd和groupdel命令超级用户可以直接增加和删除用户组。这实际上是对/etc/group文件的操作。
Groupadd命令通过在group文件中增加一行来在系统中增加一个新的用户组,命令格式为: groupadd [-g gid] [-o] group-name
# groupadd -g 200 exam 增加gid为200的用户组exam。
Groupdel命令将删除group文件中的一行来删除系统中的一个用户组,命令格式为:groupdel group-name
作为超级用户,系统管理员可以直接对/ect/group文件进行编辑,实现用户组的增加和删除。
使用scoadmin工具:除了使用命令外,可以使用scoadmin来执行该操作,增加组:scoadmin----选account manager----选定add manager菜单项----输入相关内容;删除组:scoadmin----选account manager----选定用户组----选择delete group菜单项。
修改用户组的属性:使用groupmod命令可以修改用户组的性质和它在/etc/group文件中的一些相关信息,命令格式为:groupmod [-g gid] [-o] [-name] group
修改名为group的组的属性,该组必须已经存在。-g修改组的id,-n修改组的名称,-o组的id可以重复。
3.用户管理
在UNIX系统中增加一个用户需要以下几步:
l 定义用户帐号的标识信息,包括用户登录名、uid、缺省用户组名
l 指定用户帐号的原始口令
l 指定用户的注册目录,并在该目录不存在时创建,同时将该目录的属主用户和组设为正要建立的用户及组。
l 将上述信息加入/etc/passwd文件中
要在UNIX系统中删除用户帐号,只需将用户帐号在/etc/passwd中的信息删除即可。
利用系统的命令:增加用户帐号的命令为useradd,删除用户帐号的命令为userdel。
useradd [-u uid [-g group] [-G group,[group…]] [-d dir][-s shell] [-c comment][-m[ -k skel-dir]][-f inactive][-e expire] loginname
ueradd -D [-g group] [-b base-dir] [-f inactive][-e expire]
-g定义用户默认的组;-G定义用户可在的组;-d定义用户登录目录;-s等一用户使用的shell的绝对路径;-c定义用户的个人信息;-m若用户登录目录不存在,则创建; -k规定所需的骨架信息(如.profile文件)所在的目录;-e规定帐号使用的到期时间;-f规定用户帐号使用的最大时间;-b 系统默认的用户登录目录的父目录;-D则显示参数设置。
增加用户帐号后,还需要使用passwd命令给它加上口令。
userdel [-r] loginname,使用r参数时,在删除帐号的同时,也从系统中删除它的登录目录。
使用scoadmin工具:除了使用命令外,可以使用scoadmin来执行该操作,增加用户:scoadmin----选account manager----选定add user菜单项----输入相关内容;删除组:scoadmin----选account manager----选定用户----选择delete user菜单项。
修改passwd文件:用户帐号的信息存在在/etc/passwd文件中,因此可以直接对passwd文件进行操作,实现用户帐号的增加和删除。
Liu2::6688:15:LIUYUN:/home/liu2:/bin/csh
修改用户属性:系统管理员可以根据需要修改用户的属性。一是通过直接修改/etc/passwd文件,二是使用命令:Usermod [-u uid [-g group] [-G group,[group…]] [-d dir][-s shell] [-c comment][-m[ -k skel-dir]][-f inactive][-e expire] [-l newloginname] loginname,各参数和useradd相同,其中-l 将修改用户的登录名为newloginname。
4.用户监控
UNIX系统为收集系统中一般的信息或某个特定用户的信息提供了一些命令。系统利用这些命令收集的信息来监视用户,还可以进行安全性检查,性能分析或进行计帐工作等。
id命令:id [-a],显示用户名与用户id以及用户组名和组id;使用选项-a则还显示用户所有的组和组id。
uptime命令:uptime [-w],显示系统当前时间,系统已经启动的时间,目前在系统中登录的用户的数量以及在过去1、5、15分钟内系统的平均负载等。
w命令:w [-fm] [-h] [-l|-s] [user]或w -u [-m]
除了给出uptime的信息外,还给出正在系统中登录的用户的用户名(loginname),每个用户终端使用的断口(tty),用户登录使用的主机名(from),用户登录的时间(login@),用户的空闲时间(idle),所有进程所占的有效的CPU时间(JCPU)、正在运行的进程清单以及当前执行的命令名(PCPU what)等。系统从空闲时间上可以判断出需要将哪一个用户退出。
使用-f时,不显示from信息,使用-h,不显示uptime命令显示的信息以及标题栏;使用-l则以长格式显示信息,该参数可缺省;使用-s则以短格式显示信息,只显示user,tty,from,idle和what这几项内容;使用-u,则等效于uptime命令。
who命令:给出目前在系统中的用户信息。命令格式为
who [-uTlHqpdbrtas] [file]
Who -qnx [file]:指出每行显示的用户数为x个
Who am i :列出调用who的用户
Who am I :列出调用who的用户
-u只列出当前注册用户的信息;-T在默认显示的基础上,再显示终端项state信息;-l只显示系统在等待有人注册的中断线,此时的name子段显示通常为LOGIN;-H在正规输出的各字段上显示标题;-q只显示当前注册的用户名和用户数;-p列出当前正在活动的任何其他进程;-d显示所有已经终止但是仍被init进程重新创建的进程;-b指出最近重新引导的时间和日期;-r指出init进程当前的运行级别;-t指出超级用户通过date命令对系统始终的最后一次修改时间;-a打开所有的任选项;-s,默认的任选项,显示name,line和time字段。
l ps命令:给出正在运行的进程的信息
l top命令:与ps命令的输出类似,动态地显示正在运行的进程的信息。
l fuser命令:使用-u参数的fuser命令可以给出使用某一指定的文件的用户及相关进程的进程ID。
l df命令和du命令:了解磁盘的使用情况,df命令显示每个用户对磁盘的利用率,du命令显示用户文件占用的磁盘空间。
文件子系统管理
UNIX内核有两个基本的子系统:文件子系统和进程控制子系统。文件子系统负责文件的操作与管理;进程控制子系统则负责与进程相关的操作与管理。本部分我们介绍文件子系统的管理。
1. 几个术语
l 逻辑盘:物理实盘在内核中的简化。用户使用逻辑盘不必了解物理实盘的具体情况。因此系统管理员必须了解逻辑盘。
l 分区:内核在使用逻辑盘时。常常为了各种需要将逻辑盘分成几个部分,每个部分就成为一个分区。
l 文件系统:文件系统存在于分区之中,它只是经过处理的分区,是UNIX系统在磁盘上可以存放数据的一种机制。
l 设备项:就是与设备对应的文件。存放在/dev目录下。
针对多数使用的IDE硬盘,UNIX以如下形式定义一个IDE硬盘/dev/hd[drive][partition],每个IDE驱动器从0开始标记,分区从0开始标记。如/dev/hd00 为第一条线上的主硬盘。对SCSI硬盘,表示机制相同,只是把/dev/hd换成/dev/sd。
2. 文件系统的构成
文件系统的结构如下图所示。
l 引导块(boot block):位于文件系统的头部,一般占一个扇区,它含有引导和启动操作系统的代码,虽然引导系统只需要一个引导块,但是每个文件系统都有一个(可能为空)的引导块。
l 超级块(super block):用于描述文件系统的状态,包括文件系统的大小,可以存储的文件的数量,空闲空间的位置及其他一些有用的信息。
l 索引节点表(inode table):存放文件系统中文件的索引节点,内核通过索引节点表中的索引来访问索引,从而访问文件。有一个节点是根索引节点,通过它就可以访问文件系统的目录结构。
l 数据块(data block):存储文件系统中文件的数据及进行文件系统管理必须的管理数据。
3.文件系统高级管理
主要包括对文件系统的创建、安装、拆卸、监控和重组等。
3.1 与文件系统管理相关的文件
l /etc/mnttab文件:当前系统中已经被安装的文件系统的列表。存储格式如下
special: mount-point: fstype:mount-option: mount-time
其中
special:文件系统的设备项名
mount-point:文件系统被安装的目录名
fstype:文件系统的类型
mount-option:文件系统被安装时的一些参数
mount-time:文件系统的安装时间
例如:
/dev/root / HTFS raw=/dev/rroot 0 0
3. 2 创建文件系统
文件系统的创建必须在硬盘的一个分区上进行。因此创建文件系统分为两步:一是对硬盘进行分区;二是创建文件系统。
硬盘分区采用fdisk命令,其使用方法基本和dos下的fdisk类似,其中有专门创建UNIX分区的选项。
创建文件系统使用mkfs命令。
例如:
# mkfs /dev/fd0135ds18
对软盘创建HTFS文件系统。
3.3 安装与拆卸文件系统
l mount命令:实现对文件系统的安装
mount [-f Fstype] [-v][-r][-m] [-o specific-options] {special | mount-point}
没有任何参数时,mount命令列出所有来自安装表(/etc/mnttab文件)的备安装的文件系统。Mount命令结束后,将在文件/etc/mnttab文件中加入相应一项。
l umount命令:实现对指定文件系统的拆卸。
umount [-m] {special | mount-point}
该命令实现对已经安装在mount-point上的文件系统或设备项为special的拆卸,命令结束后,文件/etc/mnttab中对应的项被删除。
例如:
# mount -f HS,lower /dev/cd0 /cdrom
把文件系统为HS的cdrom安装到/cdrom目录下,安装时区分文件名的大小写。
# mount -f DOS,lower /dev/fd0135ds18 /mnt
把文件系统为DOS的软驱安装到目录/mnt下,安装时区分文件名的大小写
# umount /mnt 拆卸对软盘的安装
# umount /dev/cd0 拆卸对光驱的安装
3.4 监控文件系统
系统管理员对文件系统进行管理的一件日常工作就是对文件系统的监控。常用命令如下:
l du命令:对磁盘分区上的文件系统的使用情况进行统计,并显示出来。
du [-sar] [name…]
给出指定文件name或指定目录name下所有(递归的)文件所占用的磁盘块数。如果不指定name,则显示当前目录的磁盘块数。
-s:对每一个指定的name,只给出总的站用磁盘块数
-a:对每一个文件都产生行输出
-r:du命令不能打开或读某个目录和文件时给出相应的提示信息
l df命令:报告磁盘空间的使用情况
df [Fstype] [-beIklnt] [-o specific-options] [dir|special]
显示指定目录或文件dir所在文件系统或指定设备项special对应文件系统使用磁盘分区的情况。如果不指定,则报告所有已经安装的文件系统
Fstype:指定文件系统的类型
-I:显示文件系统的inode信息
-l:仅报告本地文件系统的信息
-t:显示完整的清单和总计
例如:
# df
/ (/dev/root): 2639694 blocks 606854 i-nodes
/stand (/dev/root): 23886 blocks 4992 i-nodes
/mnt (/dev/fd0135ds18):2690 blocks 356 i-nodes
注:已经把软盘mount到/mnt目录。
l ff命令:列出指定文件系统中的文件名和统计信息
ff [Fstype] [current-options] [-o specific-options] special…
显示出指定设备项special对应的文件系统 中的文件和目录
fstyp命令:确定一个文件系统的类型
fstyp special
fsstat命令:报告文件系统的状态
ffsstat special
一般报告文件系统是否安装
例如:
# ff /dev/boot 列出该设备上的所有文件及其信息
# fstyp /dev/root
HTFS
# fsstat /dev/boot
fsstat: /dev/boot mounted
3.5 其他命令
l dcopy:实现对文件系统的拷贝
l ncheck:生成“inode号和路径名”表
ncheck [Fstype] [current-options] [-o specific-options] [special…]
生成设备项为special的文件系统中的所有文件的“inode号和路径名”表
4. 文件系统的检查与修复
有时文件系统会出现这样或那样的问题,但这种情况发生时,UNIX系统提供了几种检查和修复文件系统的工具,其中最重要的是fsck命令。
fsck命令格式:fsck [options] [filesystem]
用于指示和修复文件系统中的不协调。在检查文件系统的过程中,如果文件系统正常,则报告文件的数量,所用块的数量以及空闲块的数量;如果文件系统出现不协调现象,将与用户交互式地实现对文件系统的修复。
命令中常用的任选项如下:
-c:只有超级块指示文件系统是“脏”的时候才检查文件系统,否则显示文件系统是“干净”的信息
-y:对检查过程中的所有提问都回答“yes”
-n:对检查过程中的所有提问都回答“no”,通常认为是硬件的问题时使用本项。
-g:执行危险系数较小的检查,只对不造成数据丢失的错误进行修复
-q:不打印任何信息,并且自动进行修复
-f:执行快速的fsck,只检查块和块的大小及空闲块列表,并且在必要时对空闲列表进行重组。
-m:执行并行的fsck
-D:检查坏块目录
-l:使受破坏的文件可以使用逻辑名加inode号来标识
使用建议
l 在系统中用户较少时运行
l 为保证文件系统的安全,最好定期执行fsck命令来检查文件系统
l 最好不使用-q,-y选项
l 只对没有安装的文件系统进行检查或在检查前将文件系统卸载下来
l 对大部分问题回答“yes”,将修复工作交给fsck完成
l 如果fsck找到了错误,并进行了修复,最好再执行一遍fsck,以确保错误已被修改并使得文件系统已变得“干净”。
例如:事先已经安装软驱
# fsck /dev/fd0135ds18
/dev/fd0135ds18 is mounted file system ignored
# umount /mnt
# fsck /dev/fd0135ds18
HTFS File System: Volume:
No PARTIAL TRANSACTIONS PENDING
4 files 42 blocks 1345 free
其他命令:fsdb命令
这是一个文件系统调试程序,主要用于故障发生后手工恢复文件系统,命令格式为
fsdb [Fstype] [current-options] [-o specific-options] special
这一命令必须是十分有经验得UNIX系统管理员,对UNIX文件系统的构造了解得十分清楚才能使用,其任选项与mkfs相似。
例如:
# mount /dev/fd0135ds18 /mnt 使用fsdb命令之前,调试的文件系统必须已经安装
# fsdb /mnt
5. 文件系统的备份与恢复
文件系统的备份与恢复是一名系统管理员非常重要的工作,因为用户在丢失的文件无法恢复时,常常认为这是系统管理员的责任。
5.1 备份概述
系统管理员应了解如何备份,还要了解备份时机和方式。人们通常认为,对文件系统备份越频繁,就越不会遇到灾难性事件。但是备份需要时间和空间,同时具有极强的干扰性,备份时,用户工作往往需要被终止。因此作为系统管理员必须注意备份的频率和备份的方式选择问题。
一般,文件系统的备份有以下3种方式:
l 全面备份:对整个文件系统进行备份,这在初次安装了系统或对系统进行了重要的修改时是很有必要的。
l 部分备份:指对文件系统的一部分或某些目录进行备份
l 递增性备份:对从上次备份以来所有修改过的文件或新增文件进行备份。通常,每日应进行依次递增性备份。
5.2 常用的文件备份与恢复命令
l tar命令:可以实现对文件的备份与恢复
# tar [c| r |x] [options] device block files
# tar [t | u] [options] device [files]
主要用于将文件系统备份到磁带设备上或将磁带设备上的备份恢复到系统中。命令的动作方式由关键字决定。
c:创建新的备份。向指定的磁带设备做指定文件系统或目录的备份,且从磁带的头部开始向磁带写。默认的设备保存在/etc/default/tar文件中。
r:替换。把指定文件系统或目录的备份写到磁带的尾。
t:列表。列出备份磁带中的文件信息
x:抽取。将备份磁带中的指定文件files恢复到系统中,如果files不存在,则将整个备份恢复到系统中
u:更新。如果指定的文件files不在磁带上或上次备份后曾经被修改,则将它加到磁带上。
注意:在备份时,绝对路径和相对路径的使用是不同的
例如:
# tar cv /usr/people/liuy
# cd /usr/people
# tar liuy
第一个tar命令得到的备份,在恢复时,无论用户工作目录在哪里,都把liuy目录恢复到/usr/people下
第二个tar命令得到的备份,在恢复时,则把liuy目录恢复到当前目录下。
再例如:
# tar cvfk /dev/fd0135ds18 1440 /usr/lyj
# tar xvf /dev/fd0135ds18
# tar tvf /dev/fd0135ds18
使用参数v则显示备份的文件;参数f则使用下一设备代替默认的备份设备;参数k表示以下以参数的k字节作为备份的大小。
第1条命令表示备份lyj用户的文件到软盘;第2条命令表示恢复软盘上的所有备份文件;第3条命令则列出软盘上备份的文件信息。
l cpio命令:实现对档案文件的拷入和拷出
cpio -i [options] [-C size] [-Mmessage][pattern] < name-list
cpio -o [options] [-C size] [-H hdr][-Mmessage] < name-list > collection
cpio -p [options] directory < name-list
任选项-i,-o和-p时互斥的,他们定义cpio将要执行的动作。-i 将档案文件中与模式pattern匹配的文件恢复;-o 将文件归档形成档案文件;-p将文件拷贝到指定的目录directory下。
例如,下面的命令将当前目录下的所有文件备份到磁带上,其中参数c表示以ASCII字符写入;v表示写入时显示文件列表;B表示以5120b输出记录。
# find . -print | cpio -ocvB>dev/dev/rmtoa
下面的命令则实现文件的恢复,其中参数d表示再目录不存在时,创建必须的目录,参数m表示返回原文件的修改时间。
# cpio -icdmB /usr/people/lyj < /dev/fd0135ds18
l dd命令:将实现文件的转换与拷贝
dd [option=value] …
该命令根据option所赋值value的规定实现指定的输入文件到输出文件的拷贝,并进行可能的转换。
Option value 含义
if file 输入文件为file,默认为标准输入
of file 输出文件为file,默认为标准输出
ibs n 输入块的大小为n,默认为512字节
obs n 输出块的大小为n,默认为512字节
cbs n 转换缓冲区的大小为n(指逻辑长度)
conv Ascii 将EBCDIC码转换成ASCII码
lcase 将字母转换成小写
例如:将把EBCDIC磁带读到ASCII文件file-exan中
# dd if=/dev/rmt/0h of=file-exam ibs=800 obs=8k cbs=80 conv=ascii,lcase
下面命令则把软盘上的内容读到文件test中。
# dd if=/dev/fd0135ds18 of=test
l backup命令:启动备份操作
# backup [-t] [-p] [-c | -f files | -u “users”] -d device
# backup -h
在没有任何参数时,该命令将启动备份登记文件中规定的备份操作。主要任选项和参数含义如下:
-t:若备份设备是磁带,则使用;
-p:递增性备份
-c:完全备份
-f files:备份指定的文件
-u “users”:备份指定用户的目录(可以多个用户)
-d device:指定备份设备 
-h:产生一个备份历史
例如,下面的命令备份test文件到软盘
# backup -f test /dev/fd0135ds18
下面的命令则备份指定用户lyj的主目录到软盘
# backup -u “lyj” /dev/fd0135ds18
l restore命令:用于恢复文件系统或数据分区。
restore [-c] [-i ] [-o] [-t] [-d device] [pattern…]
该命令传递来自系统备份档案的数据分区以及来自文件系统分区的恢复请求。基本参数有
-c:完全恢复
-i:不恢复,只显示备份文件列表
-o:恢复时,覆盖已经存在的文件
-t:所用备份设备是磁带
-d device:使用的备份设备
例如下面的命令将显示软盘上的备份文件列表
# restore -i -d /dev/fd0135ds18
下面将恢复整个磁盘
# restore -c -o -d /dev/fd0135ds18
进程管理
UNIX系统中所有的操作都是通过进程来实现的,因此对进程的管理是UNIX系统管理中一个十分重要的部分。
1.进程管理
UNIX系统提供了一套与进程管理密切相关的命令。
1.1 报告进程状态
ps命令:显示有关的活动进程的信息,它所给出的信息是命令执行一瞬间的进程状态。
ps [options]
没有任选项时,只显示与执行命令的控制终端有关的进程的信息。常用任选项如下:
-e:显示当前运行的所有进程的信息
-f:以full格式产生指定进程的完整的信息清单
-l:以长格式产生指定进程的详细信息清单
-t termlist:显示与termlist中所列终端相关的所有进程的信息
-u uidlist:显示在uidlist中所列用户的所有进程的信息
-p proclist:显示在proclist中所列的所有进程的信息,proclist为进程id的列表
例如:
# ps
PID TTY TIME COMD
3033 ttyq0 0:00 ps
2963 ttyq0 0:01 sh
# ps -e (显示系统中所有进程的信息)
PID TTY TIME COMD
0 ? 0:01 sched
1 ? 0:08 init
2962 : 0:01 telnetd
……….
# ps -f (以FULL格式给出进程信息)
UID PID PPID C STIME TTY TIME COMD
Root 2963 2962 1 12:11:23 ttyq0 0:01 csh
Root 3068 2963 6 11:23:35 ttyq0 0:00 ps -f
# ps -l(以长格式给出进程信息)
F S UID PID PPID C PRI NI P SR:RSS WCHAN TTY TIME COMD
30 S 0 2963 2962 1 39 20 * 88:60 881d77e0 ttyq0 0:01 csh
30 R 0 3071 2963 6 63 20 0 312:110 ttyq0 0:00 ps
1.2 进程调度命令
nice命令:将较低执行命令的优先级。
nice [-increment ] command [arguments]
该命令将降低命令command的CPU调度优先级,若使用increment参数(取值范围为1~19),则优先级降低值为increment,默认值为10。当increment为负数时,则将提高命令command的优先级。
nohup命令:该命令使得命令的执行将不受挂起和退出的影响。
nohup command [arguments]
nohup命令执行命令command,并使得命令在执行期间忽视以外停止和退出的影响。命令的输出被重定向到文件的当前目录的nohup.out文件。
例如,
# nohup ls
# cat nohup.out
COPYRIGHT PORTING man/
INSTALL RELNOTES sccsarchiv.c
1.3 等待进程命令
wait命令将实现对一个进程的等待。命令格式为  # wait [n]
等待进程号为n的一个进程的完成并将报告进程的终止状态。没没有参数,则将等待所有后台进程的完成并返回代码0。
1.4 挂起进程命令
sleep命令,将使得进程的执行被挂起一段时间
# sleep time 使得shell挂起time秒后,再继续执行
1.5 终止进程命令
UNIX系统的系统管理员为了保持系统良好的运转,常需要终止系统中一些活动的进程。
kill命令将发送一个信号给指定进程,并在缺省情况下终止进程。
kill [-signal] pid 向进程ID为pid的进程发送信号signal,signal可以是一个数字,也可以是一个符号,在文件/usr/include/sys/signal.h中定义。
kill -l 将显示系统中定义的所有信号的符号名。
killall [signal] 命令将实现终止所有活动的进程
例如,
# ps -u zly
PID TTY TIME COMd
3334 ttyq1 0:00 csh
3338 ttyq0 0:01 ex
# kill 3338  (终止PID为3338的活动进程)
2.作业控制
UNIX系统中提供了对作业(jobs)的控制。作业和进程不同,一个典型的作业就是一条命令行,其中可以包含简单的命令,shell脚本文件或者用管道相连的多条命令。下面介绍一些与作业控制相关的命令。
l jobs命令:列出在作业控制下的所有活动作业的信息。使用-l任选项则可以列出较为详细的信息。
l bg和fg命令:bg命令将在后台运行指定的作业,而fg命令则使指定的作业成为前台运行的作业。命令格式为:bg [%job…] fg [%job….]
l at和patch命令:这两个命令一起将使得某一作业在以后的某个时刻运行。命令格式为:
# at [-f script][-m]time[date][+increment]
# at -l [jobs]
# at -r jobs.....
# batch
at命令用于指定作业执行的时间,batch命令在将排队的作业在系统的负荷水平允许的情况下被执行。主要参数如下:
-f script:从名为script的文件中读取要执行的作业的命令
-l [jobs]:向发出本命令的用户报告已经安排的将要执行的作业,或报告指定的作业。
-m:当作业完成时,向用户发一个邮件以指出作业已经结束
-r:删除以前用at命令安排的作业。
Time和date用于指出作业被执行的开始时间和日期。
例如:
# at 14:00 Jan 4 2001 从标准输入中,读入打算在以後某一时刻所执行的命令
sort /u/user1/file
/u/user1/sort
ctrl>d
job 61202778.a at Thu Jan 4 14:00:00 2001
# at -1 列出单个调度作业
job 612027780.a at Wed Jan 24 08:43:00 2001
job 612027900.a at Wed Jan 24 08:43:00 2001
l Cron进程与crontab命令、crontab文件
Cron进程是一个在系统初启时被启动的系统进程,它将在指定的日期和时间启动一个指定的作业,作业通常是在用户的crontab文件中指定的,用户的crontab文件是利用crontab命令建立的。命令格式如下:
# crontab [file]
# crontab -e [username]
# crontab -r [username]
# crontab -l [username]
crontab 命令在系统中创建一个cron目录(默认是在/usr/sbin/cron.d)来存储用户的crontab文件,指定了文件file,则把该文件存放在该目录里。主要参数为:
-e:启动系统默认的编辑器来编辑指定用户username的crontab文件
-r:删除指定用户username的crontab文件
-l:显示指定username的crontab文件
crontab文件的每一行包含6个字段,中间用空格或制表符各开。前5个字段表示作业执行的时间。第6个字段是要执行的作业命令,这个字段中%被解释为换行符。一个crontab文件的例子如下:
# cat crontab
30 12 * * * echo
“ it is time for lunch”% (在每日12:30显示信息提示午饭时间到了)
23 30 * * 5 backup_job (在每周5的23:30启动备份作业backup_job)
性能优化和内核参数调整
UNIX OS在使用过程中,随着环境和主要使用目的的变化,不能完全发挥其潜力,就需要对系统进行调整以适应新的需求。
作为系统管理员,其主要任务之一就是不停地监控和调整系统的整体性能,这是一项比较复杂的工作,往往涉及到系统的硬件,操作系统及主要业务应用程序等方面。
1 UNIX性能优
l 为什么会存在性能问题
计算机运行的应用程序的规模的不断扩大
应用程序类型的变化,例如一台适合超级计算的计算机,在其上进行大规模事务处理,这台计算机的I/O处理就成为系统性能的瓶颈。
l UNIX中常见的性能瓶颈
我们大致可以把计算机资源分成三种类型:计算能力(CPU)、可使用的内存和外部存储器的大小,以及系统的I/O。
ü 计算能力(CPU):CPU通过调度不同优先级的程序执行,使CPU的处理能力被多个用户程序所共享。计算密集型的应用程序往往占用较多的CPU时间。所以如果多个计算密集的程序同时运行,CPU就可能成为系统瓶颈。
ü 可使用的内存和外存的大小:UNIX一般把外部存储介质以交换区的形式作为内存的后备存储区使用。当程序所需要的内存大于系统提供的数量时,系统就把一个进程的一部分移到磁盘上为另一进程腾出空间,如果内存仍不够,则把整个进程全部移到磁盘上。
ü I/O能力:I/O设备作为机械系统,其运行速度要慢几个数量级。当一个应用程序包含大量的I/O操作时,系统会等待I/O操作结束而处于等待状态。
2. 监视整个系统的性能
l 使用uptime命令监视系统状态
使用uptime命令是监视UNIX系统性能的简单方法。它显示在一定时间间隔内系统运行队列中进程的信息。通过这些信息可以大致地分析系统的工作负载。所以当系统性能下降时,首先应使用uptime命令来观察系统运行队列中进程的情况。
% uptime
2:07 pm up 11 day(s), 4:54, 15 users, load average: 1.90, 1.98, 2.01
其中有用的信息是三个负载的平均值:1.90、1.98和2.01分别是前1分钟、5分钟和15分钟内的负载平均值。
系统管理员需要定期运行uptime命令以观察系统的平均负载值及其变化趋势。系统的问题往往通过上述数据反映出来。当系统负载增大时,说明多条命令被阻塞在内存和I/O系统中。这时需要检查系统的有关信息。一般UNIX系统,负载为2和3 表示轻载,5和6表示中等程度负载,10 以上为过载。不同系统的划分标准是不同的。系统管理员应根据实际情况确定自己系统中划分轻载和过载的界限。
l 使用ps命令监视进程
在性能监视过程中,ps命令是一个最有用的工具,它监视系统内活动进程的状态。可以用来检查是否因为某个进程对资源的大量使用导致系统性能的下降。使用ps命令可以获得在某一瞬间系统内部活动进程的情况。
首先,根据ID寻找由同一用户发出的许多相似的任务。这些任务主要是由于用户运行的脚本在后台并发运多个命令造成的,可以用kill命令终止这些任务。
然后检查TIME域中积累的各进程的CPU时间。如果某进程积累了大量的CPU时间,说明该进程陷入了无限循环或出现了逻辑错误。要老率是否终止该进程。
使用 ps -l 检查SZ域中进程消耗的内存数量。如果某进程占用了大量内存,要查明原因,原因不明时考虑终止该进程。同时可以使用vmstat或sar -wpgr命令斤秒年厘时秒 系统有关换页和交换的情况。
如果一个进程使用了大量的CPU资源,使用 ps -l 检查该进程CLS域中的优先级是否过高,是则使用nice命令调整该进程的优先级。
3. 监视内存的使用
当程序运行需要的内存大于物理内存时,UNIX系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程使用。大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。
UNIX内存管理:UNIX系统通过2种方法进行内存管理,一种是“调页算法”,另一种是“交换技术”。调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
使用vmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。
4.监视磁盘系统的性能
磁盘操作是程序执行中最慢的操作。在关系数据库使用的系统中,磁盘操作的性能在计算机系统的整体性能中的地位是很高的。因此UNIX系统调整的主要目标之一就是怎样减少不必要的或效率低的磁盘I/O操作。
大多数与磁盘性能相关的变量主要是关于磁盘的特性(如转速和磁头移动速度等),I/O控制卡、I/O固件和软件以及系统的I/O背板等。
使用df命令监视文件系统:系统运行中遇到的最大也是最常见的问题就是用完了磁盘空间,尤其是/tmp和/usr空间。究竟应分配多大,也没有一个具体的答案。使用df命令可以显示每个已安装磁盘上的可用空间。
5.监视网络性能
与其他系统资源(如CPU、磁盘容量等)一样,网络也是一种有限的资源。通过执行一些命令,用户可以直接检查网络的带宽。
使用netstat监视网络性能:使用该命令,不加任何选项时,可以检查网络的负载情况。其中的域Send-Q比较重要,它反映了发送包队列的长度。如果该值十分大且在某些连接上不断增加,说明网络出现了故障。使用带-s的选项可以显示网络支持的每一种协议(如UDP,IP,TCP)的统计信息,这些信息可以用来分析协议中出现的问题。使用带-i的选项可以监视网络的性能并可以报告一些网络内部的信息,可以报告计算机发送和接收数据包的个数以及网络上碰撞和错误的情况。频繁地发生“碰撞”和错误,则会降低网络的性能。
6.内核调整
内核调整是一项复杂的技术。UNIX操作系统中最关键的部分就是内核,它管理各个主要的子系统,包括内存、磁盘I/O、CPU的使用以及进程调度等。系统为用户工作的控制核心。
内核调整对系统性能会有积极影响,也可能有消极影响。每个内核模块中都有多个参数可调。调整参数的目的有两个,一个是减少内核对内存的需求,提高内存的利用率,从而提高系统的吞吐率;二是提高系统的能力,满足用户或处理器更高的要求。
内核表格:许多情况下,系统管理员需要检查或修改内核表格,如在增加新用户之前,在提高X WINDOWS 或NFS的利用率之前,以及在运行那些能产生很多进程的作业之前。
下面介绍几种内核表格:
l 进程表:决定了系统同时可运行的进程数。这些进程包括守护进程、本地用户运行的进程、远程用户运行的进程以及用户进程创建的子进程。若进程表已满而系统又要启动一些守护进程时,系统就会出现一些问题。
l 用户进程表:控制每个用户有多少个进程可在系统中同时运行。
l Inode表:该表包含以下各项:(1)每个打开的管道;(2)每个用户的当前目录;(3)每个文件系统的安装点;(4)每个活动的I/O设备。当inode表满了以后,系统性能就会下降,控制台就会显示错误信息。
l 打开文件表:它决定了系统一次最多能打开的文件的个数。如果该表已满,而又出现了一个打开文件的系统调用,这时会出错,出错信息在控制台被记录下来。
l 定时器表:该表决定了系统能同时工作的定时器个数,它对于一些与内核相关的操作或I/O操作十分重要。当定时器表溢出时,系统可能会崩溃。
显示可调内核参数的当前值:使用sysdef -i 命令。
修改配置信息文件:使用文件/etc/system来修改可调的内核参数,基本格式为
set parameter=value
这种修改会带来内核参数的永久性变化。修改后重新启动系统才有效。
Maxusers参数:许多内核表项随着maxusers参数的变化而变化,其中maxusers是系统支持的最大的用户数。修改maxusers的值,系统会根据该值的变化自动调整各表项的数目。使用/etc/system文件中的命令修改maxusers的值, set maxusers = 。
SCO OPENSERVER RELEASE 5安装步骤
1、安装准备工作:
[1]准备好安装盘,包括引导盘和光盘。
[2]一些网卡需要在DOS环境下设置地址和中断才能使用,安装前需要预先设好。
[3]安装前应保证网络连通好。
二、将SCO SOPENSERVERBOOT DISK软盘插入软驱,打开主机和显示器电源,启动机器。
三、当出现BOOT:提示符时,按回车键启动系统。
四、启动完毕,屏幕底部出现如下提示:
时,按〈ENETER〉键进入下一屏。
五、此屏是一些介绍性信息,按键键进入下一屏。
六、选择安装介质:
移动光标,高亮度Accept above choices一项,按键接受缺省设置,进入下屏。
七、将SCO OPENSERVER光盘插入光驱,移动光标高亮度OK,按键,此时将检查安装介质,请稍候。
八、选择键盘,应选缺省设置,高亮度Accept above choices一项,按键键,进入下一屏。
九、一些介绍性信息,按键进入下一屏。
十、输入系统的授权码信息,高亮度Accept above choices一项,按键,进入下一屏。
十一、选择高亮度Fresh,按键进行完全安装,进入下一屏。
十二、选择高亮度OK,按键,进入下一屏。
十三、输入以下信息:
[1]System name:主机名.
[2]Domain name:输入域名。
[3]Security profile,选择Traditional.
[4]Time Zone:按空格键,而后屏幕提示标题为"Time Zone"的对话柜。将高亮光务移至"Geographical area:",输入空格,屏幕提示一个地区列表框。用上下键选中"Asia"并按键。些时屏幕回到标题为"Time Zone"的对话框,移动高亮光条到"Asia time Zone",输入空格。屏幕提示一个时区列表框,用上下键选择"China standard Time(CST)"并回车。
[5]Language:按空格键,选择 Standard C(English)
[6]将高亮度光条移至Accept above choices,按键进入下一屏。
十四、输入以下选择:
[1] Standard Enterprise system configuration: Yes
[2] Lightweight character terminal configuration: No
[3] If you run large database products ,choose the following: Database services: Yes.
[4]将高亮度光条移至Accept above choices,按键进入下一屏。
十五、输入以下信息:
[1] 此处先选高亮度第一项Hard disk setup,按空格键,进入下一屏。
[2] 此屏显示的是设置硬盘,在第一块硬盘处高亮度,按空格键选Interactive fdisk/divvy,其他硬盘保持不变。
[3] 选择高亮度,按键屏幕将显示一些说明信息,按键进入下一屏。选择高亮度,按键进入下一屏。
十六、输入以下信息:
[1] 在Netowrk card 一项中选 Auto detect ,屏幕提示检测到的网卡类型,按回车键继续,也可暂时不配。
[2] 在Network address一项中按空格键,根据屏幕提示输入网络地址、子网掩码、广播地址,然后选择高亮度Accept above choices返回。
[3] 在Video and graphics一项中选IBM VGA为缺省。
[4] 在Mouse一项中选High resolution Keyboard-Mouse(也可按缺省,不配)
[5] 在Email system一项中选MMDF。
[6] 选择高亮度Accept above choices,按键进入下一屏。
十七、输入root口令、再输入一次以确认:选择高亮度Accept above choices,按键进入一屏。
十八、选OK,按键进入下一屏。
十九、选择1(1.Continue with hard disk initalization.),回车。
二十,选择2(2.Use entire Disk for UNIX),回车。
二十一、选5(5.Activate Partition),设置创建的UNIX分区为活动分区,之后输入'q'回车。
二十二、选择1并回车。
二十三、选择1(1.thorough scan(6M/min approx))并按回车,依次根据屏幕提示输入'y','y'后将开始对硬盘坏点的扫描,等待时间大概为20分钟。
二十四,按回车选缺省值。
二十五、输入交换区的大小,以KB为单位。此数值应为物理内存的2-3倍。
二十六.输入BOOT区的大小,按回车选缺省值。
二十七、do you want a separate /u filesystem?(y/n). 输入'n'回车。
二十八、Do you wish to make any manual adjustment to the sizes or names of the filesystems or swap area before the are created on the hard disk?(y/n) 输入 'n' 回车
二十九、操作系统安装开始,请等候。。。。安装的时间预计为1-2小时,屏幕将会提示系统安装的百分比进度。
三十、安装完成后,根据屏幕提示重新启动系统。
文章评论

共有 3 条评论

  1. yangfubin 于 2006-08-20 03:40:53发表:

    谢谢

  2. cha 于 2005-12-21 09:31:03发表:

    支持

  3. eoboot 于 2005-12-08 00:06:16发表:

    很不错,我支持