本手册的章节按照以上给出的标题顺序安排,你还必须了解何时及如何进行如下管理工作:
(本手册不包含如下系统管理工作:安装系统软件、安装第三厂家软件、建立和管理网络服务、建立和管理邮件服务、扩充和删除硬件、管理安全性和记帐、监视系
统和网络性能。)这章其余部分将描述如何完成系统管理员的工作,并介绍一些基本命令和管理工具。
1.1了解超级用户状态
超级用户是一个具有特权的用户,它可不受任何限制地使用全部文件和命令,超级用户有一个特定的UID(=0),这个帐号的用户名为root(其实只要是
UID为0的用户就是超级用户)。许多系统管理任务都必须在超级用户下完成,如安装和拆卸文件系统、改变文件和目录的存取权和所有权、备份和恢复文件系
统、创建设备文件,以及关闭系统。
我们可以用如下办法进入超级用户:
1、 在其它用户状态下,用不带任何参数的su命令,并按需要键入root的口令。
2、 在login提示下,键入root及其口令。
在入进超级用户后,shell将给出一个特殊的提示符“#”,提醒你对系统有着至高无上的存取权,做任何事情都要小心,通过查询记录文件/var/adm/sulog,可以跟踪谁正在使用超级用户帐号。
最好在必要时才进入超级用户,应该避免在超级用户下做一般的事情。如果某项任务需要你是超级用户,它会提示你应该进入超级用户。当你完成必要的工作后,应立即回到一般用户状态。
由于超级用户非保护的存取权限严重威胁系统的安全,所以root帐号总是设有一个口令,而且为了增加安全性,要经常更换口令。
1.1.1成为超级用户(su)
仅当需要使用root权限完成一定的工作时,你才进入超级用户,下面是从普通用户成为root的方法:
1、 在Shell的$或%提示符下,输入su。如果root帐号有口令的话,系统会提示你键入口令。
2、 键入超级用户口令,如果口令正确,你就具有了超级用户权限,系统显示“#”提示符。
gtxa%su
Password:
#
如果想使用root本身的环境变量,键入su -。
1.1.2退出超级用户状态
要退出超级用户状态,就简单地键入exit。
#exit
gtxa%
1.1.3以root注册
要直接注册成root,必须在login提示下完成:
1、 在login提示下,输入root,于是系统提示你输入root口令。
2、 输入root的口令,如果口令正确,系统将出现root提示符#:
login: root
Password:
#
1.2与用户通信
系统管理员工作的一个重要部分是与用户通信,使用户了解管理员所做的事情对系统功能所造成的影响,要让用户及时知道你所做的管理工作(如:重新引导系统,安装新的软件,或以某种方式改变系统环境)何时将对它们产生影响。
管理员可以口头与用户通讯,但最普遍的方式是:
;在注册时显示当前系统专用信息.
;用write命令直接将消息发送到某个用户终端上.
;用wall使用将消息发送给一个系统上的所有用户.
;用rwall命令将消息发送给网络上的所有用户.
;通过电子邮件将消息发送一个或一组用户.
1.2.1在注册时显示系统专用信息
每次用户注册进系统,屏幕上都会显示当天的系统消息,这个消息存贮在文件/etc/motd中。已经注册进系统和正在使用系统的用户看不见此信息,可使用
motd命令查看此消息,这些信息包括:操作系统版本号,系统软件的变化,新安装(或删除)的第三厂家文件的名称,或系统的调度时间表。必须确保motd
文件是最新的,如果motd显示的是过时的消息,用户会因此而失掉一个关键信息,消息应尽量简短,如果其长度超过一屏,用户就读不到开头部分。
/etc/motd文件所在者应该是root, 而且root应是唯一对此文件具有写权限的用户。
gtxa% ls -1 /etc/motd
-rw-r--r-- root sys 49 Jan 1 1970 /etc/motd
gtxa%
注意:系统软件安装后,有几个文件(包括/etc/motd 在内)的更新时间为“Jan 1 1970”这个日期是UNIX的起始日期,当你对这些文件编辑后,这个时间会随之改变。
1.2.1.1建立日期消息
用如下步骤建立日期消息:
1、 成为超级用户
2、 用编辑工具(如vi)编辑/etc/motd文件
3、 删除不用的消息,输入新的消息
4、 保存修改后的文件,这些消息在用户下次登录进系统时显示
1.2.2将信息发送给单个用户
可以使用write命令将信息发送到用户的终端上,当使用窗口系统(如Open Windows)时,每个窗口都有一个独立的帐号,如果用户登录多次,则信息会直接显示在控制台窗口中。
1.2.2.1发送一个短消息给一个单独的用户
用以下步骤将一个一次性的短消息发送给单个用户:
1、 键入write username,username是用户的注册名。
2、 键入要发送的消息。
3、 输完消息后,键入Control-D. 则在username用户的控制台窗口中显示你键入的内容。
下面给出系统管理员发送消息的例子:
gtxa% write ignatz@elm
I'll come by at 12:00 to look at your problem.
gtxa%
下面是在用户控制台窗口显示的消息:
Message from fred@gtxa on ttypl 11:20...
I'll come by at 12:00 to look at your problem.
EOF
1.2.2.2将作为一个文件的消息发给个别用户
如果你想发送消息给一些用户,建立一个消息文件,再使用带参数的write命令来实现,其中的一个参数是消息文件名。
建立一个文件,此文件含有想要发送的消息。 键入write username < filename
在下面的例子中,管理员用cat命令建立消息文件:
gtxa% cat >; message
I'll come by at 12:00 to look at your problem.
gtxa% write ignatz@elm < message
write: ignatz logged in more than once...
writing to console
gtxa%
如果用户进入了多个窗口系统,消息就显示在用户的控制台窗口中。下面是显示在控制台上的消息格式:
Message from fred@gtxa on ttypl at 11:20...
I'll come by at 12:00 to look at your problem.
象以上显示的那样,键入的消息与显示的消息是相同,用户可以用write命令响应并初始化一个双向对话,但这种对话不是真的交互式的。有两条打开的write 路径,两个方向各一条,详细介绍见write(1)说明。
1.2.3将消息发送给一个系统或网络中的所有用户
可以使用wall命令(write all)将消息同时发送给系统中的每个用户,用rwall(remote write all)命令将消息同时发送给网络中的所有用户。
要将消息发送给系统中的所有用户:
1、 键入wall
2、 键入想要发送的消息
3、 输入完消息后,键入control-D, 消息就会显示在系统中每个用户的控制台窗口中。
下面是一个实例:
gtxa% wall
System will be rebooted at 12:00
gtxa%
显示在用户控制台窗口的消息:
Broadcast message from root on console...
System will be rebooted at 12:00
EOF
注意:使用rwall命令要非常小心, 因此此命令消耗大量的系统和网络资源,要将消息发送给网络上的所有用户:
1、 键入rwall-n
2、 键入要发送的消息
3、 消息输入完后,键入Control-D, 消息就显示在网络系统各个用户的控制台窗口中。
下面是一个实例:
gtxa%rwall-n Eng
System gtxa will be rebooted at 12:00
gtxa%
显示在用户控制台窗口中的消息是:
Broadcast message from root on console...
System will be rebooted at 12:00
也可以用rwall命令将消息发送给某个系统中的所有用户, 其命令格式为:rwall hostname
1.2.4通过电子邮件发送消息
E-mail是传播某些系统管理信息的一种有效方式,但本手册不介绍如何使用电子邮件,有关邮件信息的详细说明见mail(1)、mailtool(1)和mailx(1)。
1.3启动和关闭系统
启动及关闭系统是系统管理工作的一个组成部分,这一节描述正常启动和关闭系统的过程,如果系统启动出现错误,参阅系统文档中有关如何诊断引导问题。
SunOS 5.x系统软件总处于连续运行状态,这样电子邮件和网络软件能正常地工作,但在以下几种情况下,系统却必须关闭或停止。
;切断系统电源
;安装一个新版本的操作系统
;电源老化
;系统扩充硬件
;进行文件系统维护
1.3.1选择init状态
Solaris系统软件有八个init状态: 缺省init状态/etc/inittab 中确定。Solaris系统软件的缺省init状态是运行级3。表1.1列出了7个可能的运行级别和系统在每级上的状态。
表1.1 系统初始状态
初始状态功能
0掉电状态
1.S.s系统管理员状态(单用户)
2多用户状态(不输出资源,没有启动NFS)
3多用户状态(输出资源,启动NFS进程)
4替换多用户状态(目前不用)
5软件重引状态(目前不用)
6系统重引导状态
/sbin/init 程序负责确保系统正常地运行,也可以用它来改变init 状态的命令,还可以用init 状态(带用-i选择项)作为shutdown命令的参数。以下是四种系统状态类型:
1、 掉电(运行级0)
2、 单用户(运行级1和s或S)
3、 多用户(运行级2和3)
4、 重引导(运行级5和6)
若准备做系统管理工作,必须确定对系统及所需要做的工作来说哪种init状态是合适的。
1.3.1.1查看系统运行级
要查看某系统的运行级,键入who -r:即显示出运行级、日期及时间、进程终止状态、进程id、进程退出状态。
在下面的例子中,系统gtxa处在缺省多用户运行级(3),日期和时间是在Feb 6 15:46,进程终状态是3,进程id是0, 进程退出状态是S:
gtxa%who -r
run-level 3 Feb 6 15:46 3 0 S
gtxa%
下面描述如何使用每个init状态。
1.3.1.2使用掉电状态,运行级0
用此级关闭系统以便安全切断电源。
1.3.1.3使用系统管理员状态,运行级1
当某项管理任务需要你是系统的唯一用户时,使用这一级,在这级状态下,只安装了root和/usr文件系统,只允许使用最少的核心实用程序,发出该命令的终端成为控制台,没有其它用户登录。
1.3.1.4使用多用户状态,运行级2
一般操作都在此状态下进行,在这级状态下多个用户可以访问系统和整个文件系统,除了nfs服务器、syslog和远程共享进程之外,所有的系统管理进程都在运行。
1.3.1.5使用远程资源共享状态,运行级3
此状态一般操作和nfs资源共享一起有效。
1.3.1.6使用替换多用户状态,运行级4
此运行级目前不用。
1.3.1.7使用交互重引导状态,运行级5
要从非缺省引导设备引导系统时,用此级。也可以用reboot -a 命令进入这个状态级。
1.3.1.8使用重引导状态,运行级6
使用此运行级关闭系统,使系统状态为运行级0, 然后重引导到多用户级(或到inittab文件中指定的缺省运行级)。
1.3.1.9使用单用户状态,运行级s或S
使用这一级使系统处于单用户状态,而所有的文件系统被安装且可访问。
1.3.1.10改变运行级
用telinit或init命令改变运行级,telinit命令需要一个单字符参数,此参数为init指定使用的运行级,尽管用户可以直接用init命令,但最好使用telinit命令去改变系统运行级。
1、 变成超级用户
2、 键入telinit n。参数n是要使用的init状态号。
要关闭系统
gtxa% su
Password:
# telinit 0
变成单用户状态:
gtxa% su
Password:
# telinit 1
要变成无nfs服务器系统管理进程运行的多用户状态:
gtxa% su
Password:
# telinit 2
要变到具有nfs服务器系统管理进程的多用户状态:
gtxa% su
Password:
# telinit 3
要关闭且重引导系统到运行级3:
gtxa% su
Password:
# telinit 6
1.3.2选择所用的关闭命令
准备做系统管理工作时,需要确定合适的关闭命令,下面介绍如何使用系统提供的关闭使命。
/usr/sbin/shutdown
/etc/telinit and /sbin/init
/usr/sbin/halt
/usr/sbin/reboot
以上命令皆完成:初始关闭过程,杀死所有的运行进程,将新数据写入硬盘将Solaris系统关闭为适当的运行级。
1.3.2.1 shutdown
在多用户状态下关闭系统,使用shutdown命令,此命令将警告消息发送给注册到此系统的所用用户,等待60秒钟(缺省)后将系统关闭为单用户状态,可以选择不同的缺省等待时间。
1.3.2.2 telinit和init
用telinit或init 命令可以关闭一个单用户系统或改变此系统的运行级,init命令改变系统的运行级,telinit命令init
你想要的运行级,两者可交替使用,但telinit命令更好,可用telinit将系统置成掉电状态(init 0)或进入单用户状态(init)。
注意:telinit/init和shutdown命令是改变系统运行状态的好方法,由于它们是用一级rc shell程序来杀死行进程, 因此用这些程序来关闭系统是最可靠的方式。
1.3.2.3 halt
当系统必须马上停止且不必警告任何用户时,用halt命令。halt命令在关闭系统时没有任何延时也不给系统中的用户以任何警告。halt命令不运行任何 rc shell程序,所以不是一个关闭系统的好方法。
1.3.2.4 reboot
系统不在多用户状态下,用reboot命令关闭系统并重新引导到多用户状态,reboot命令不警告系统中的用户,不运行rc shell程序,所以不是一个关闭系统的好方法。
1.3.3 引导系统
如果系统电源被切断,则开启电源就开始了多用户引导过程。下面说明从ok PROM提示下引导系统到不同状态下的方法。如果PROM 提示是>;,键入n即显示出ok提示。
1.3.3.1 引导到多用户状态
要引导系统到多用户状态,在ok提示符下,键入boot,则在缺省驱动器上启动自动引导过程,显示一系列启动信息,最后系统进入多用户状态。
1.3.3.2 引导到单用户状态
要引导系统到单用户状态,在ok提示符下,键入boot -s,系统引导到单用户状态且提示输入root口令:
ok boot -s
INIT: SINGLE USER MODE
Type Ctrl-d proceed with normal start-up
(or give boot password for system maintenance)
键入root口令,注意要继续将系统引导到多用户状态,则键入Control-D。
1.3.3.3交互式引导
如果想对系统文件或核心作暂时改动,可以采用交互式引导,在这种情况下,可以测试所作的改动,且当出现问题时很容易恢复。
1、 在ok>;的PROM提示下,键入boot-a,引导过程会按交互式方式提示你。
2、 若响应回车,即缺省/kernel/unix核心引导,若不用缺省核心,则键入要用的核心名称。
3、 若响应回车,即用缺省/etc/system文件,否则键入所用的系统文件名。
4、 若响应回车,即用缺省模块目录路径,否则键入模块目录路径名。
5、 若响应回车,即用缺省root文件系统,也可键入ufs从本地盘引导,或者键入ufs无盘客户。
6、 若响应回车用root设备的缺省物理名,否则键入想使用的设备名。
7、 若响应回车则用缺省交换文件系统类型swapfs(注意:swapfs是唯一允许的交换文件系统类型)。
以下例子中,接受的是缺省选择:
ok boot -a
(Hardware configuration messages)
rebooting from -a
Boot device: /sbus/esp@0,800000/sd@0,0 File and args:-a
Enter[/kernel/unix]:
(Copyright notice)
Name of system file [/etc/system]:
Name of default directory for modules [ ]:
root filesytem type [ufs]
Enter physical name of root device[/sbus@1, f8000000/esp@0,800000/sd@0,0]:
Swap filesystem type [swapfs]
configuring network interfaces: leo
Hostname: gtxa
(fsck messages)
The system is coming up. Please wait.
(More messages)
gtxa login:
1.3.3.4查看引导信息
引导信息存贮在/var/adm/messages文件中,引导完系统后若要查看这些信息,键入/usr/sbin/dmesg或more /var/adm/messages,则显示引导信息。
gtxa% /usr/sbin/dmesg
Jan 13 11:22 SunOS Release 5.0 Version [UNIX(R) System V Release 4.0]
system file (etc/system) error: readline error on line 1.
root nexus=Sun 4-60
mem=16384K (0x4000000)
avail mem =14688256
Ethernet address=8:0:20:7:83:17
sbuso at obio 0xf8000000
dma0 at SBus slot 0 0x400000
exp0 at SBus slot 0 0x800000 SBus level 3(sparc ipl 3)
sdl at sep0 target 1 lun 0
/sbua@1, f8000000/esp@0,800000/sd@1,0(sd1):
sd3 at esp0 target 3 lun 0
/sbus@1, f8000000/esp@0,800000/sd@3,0(sd3):
root on /sbus@ 1, f8000000/esp@0,800000/sd@3,0:a fstype ufs swap on swapfs fstype swapfs size 1348K
le0 at SBus slot 0 0xc00000 SBus level 4 (sparc ipl 5)
zs0 at obio 0xf1000000 sparc ipl 12
zs1 at obio 0xf0000000 sparc ipl 12
dump on /dev/dsk/c0t3d0sl size 32748K
Dec 24 12:30:01 sendmail[82]:alias database out of date
Dec 24 12:30:01 sendmail[82}: AA00082: message- in=<9112242030. AA00082@gtxa. Eng. Sun. COM>;
Dec 24 12:30:01 sendmail[82]: AA00082: from=root, size=592, class=0, received form local
Dec 24 12:30:02, stat=Sent
Dec 24 12:30:58 sendmail[153]: network daemon starting
Dec 31 15:20:24 rlogind[734]: pcktread: suspeet zero len fdo at obio 0xf7200000 spare ipl 11
cgsix0 at SBus slot 1 0x0 SBus level 5(spare ipl 7)
cgsix0: screen 1152x900, single buffered, IM
mappable 1 gtxa%
1.3.3.5增加新的硬件后引导系统
当系统中增加新的硬件后,boot命令必须使用-r选择项,以便使操作系统在引导过程中查看并装入新的设备驱动程序。
1、 按硬件中的说明装入新的设备驱动程序。
2、 关闭系统且安装新的硬件。
3、 键入boot -r并回车,则运行重配置shell程序,装入在模块目录中的所有的设备驱动程序且建立相应的硬件结点(nodes)。
1.3.3.6退回引导进程
在有些情况下,你也许想退出或中断引导过程,具体的中断键依键盘类型不同而有所不同,例如,可键入stop -A或L1 -A。在tty 终端上,键入Break键。要中断引导过程,键入系统对应的中断键,当中断引导过程后,监视器将显示ok PROM提示k
键入boot重新启动引导过程,或键入help显示一组帮助信息。如果终端示出>;提示,键入n获得ok提示。
1.3.4关闭系统
下面介绍如何用shutdown和init命令关闭系统。
1.3.4.1关闭一个多用户系统
在关闭一个多用户系统之前,要通知系统中的用户,给用户完成一些处理过程的时间。
1、 键入who,显示出注册的所有用户清单。
2、 键入ps-ef,显示出系统活动进程表,如果系统进程允许关闭,转到下一步。
3、 变成超级用户。
4、 键入cd /,必须在根目录下运行关闭命令。
5、 键入shutdown,系统要你确认是否要关闭系统。
6、 键入y,所有的用户将接收到一个消息,等待60秒后,系统关闭,进入单用户状态且提示键入root口令。
7、 键入root口令,系统处于单用户状态,这时可以进行维护工作。
8、 键入Control-D返回到缺省运行系统级。
# cd /
# shutdown
Shutdown started Fri Aug 6 10:50:35 EDT 1993
Broadcast message from root(console) on earth Fri Aug 9 10:59:35
THE SYSTEM IS BEING SHUT DOWN NOW!!!
LOG OFF NOW OR RISK YOUR FILES BEING DAMAGED
Do you want to continue?(y or n): y
The system is down.
Changing to init state s-please wait.
第4章、文件系统管理
本章将介绍: 文件系统的类型、缺省的SunOS 5.x文件系统、虚拟文件系统表(/etc/vfstab)、文件系统管理命令、如何使文件系统有效、检测文件系统数据一致性(fsck)、备份与恢复文件系统
文件系统是用于查找和存贮文件的目录结构,文件系统这一术语可有下列不同的含义:
;描述由根目录向下的整个文件树
;描述文件系统的特定类型:磁盘文件系统、网络文件系统以及伪文件系统
;描述硬盘和其它存贮设备的数据结构
;描述安装在主文件树中可被访问的某一部分文件树的结构
通常你可通过上下文判断文件系统具体是哪个含义。
SunOS 5.x系统软件采用了虚拟文件系统(VFS)结构,这一结构为不同类型的文件系统提供了一个标准接口,核心处理基本操作时,如: 读、写、列表文件等,不需要用户或是程序知道具体的文件系统类型。
文件系统管理命令提供了一个公共的接口,这一接口可用于管理不同类型的文件系统,文件系统管理命令由两部分组成: 普通命令和针对每一类文件系统的特殊命令,普通命令适用于大多数文件系统,特殊命令只适用于某一类文件系统。
系统管理的重要任务之一是管理SunOS 5.x文件系统,理解复杂的文件系统便于更有效地管理文件系统,这一章介绍下面几方面的内容:
*文件系统类型
*缺省的SunOS 5.x文件系统
*虚拟文件系统表(/etc/vfstab)
*如何使用户的本地和远程文件系统有效
*备份与恢复文件系统
4.1文件系统类型
SunOS 5.x系统软件支持三种类型的文件系统:
*磁盘文件系统
*网络文件系统
*伪文件系统
4.1.1磁盘文件系统
磁盘文件系统存贮在硬盘、CD-ROM以及软盘等物理介质中,磁盘文件系统可以采用不同的格式进行读写操作,这几种格式是:
*ufs,UNIX文件系统(基于BSD Fat File系统,BSD 4.3 Tahke版提供),它是SunOS 5.x系统软件中缺省的磁盘文件系统。
*hsfs,High Sierra and ISO9660文件系统,High
Sierra是第一个CD-ROM文件系统,ISO9660是一官方标准,hsfs文件系统用在CD-ROM上,是只读文件系统,SunOS 5.x
hsfs支持RockRidge扩展,该扩展提供除可写性和硬链接以外的所有ufs文件系统语义和文件类型。
*pcfs,PC文件系统,该文件系统可以存取微机上基于DOS格式软盘上的数据和程序。
在SunOS 5.x系统软件中,没有包含由系统V版本提供的传统的System V(S5)文件系统,这是由于此文件系统最多为64,000个文件;文件名最长14个字符和分配限额(quota)等限制造成的。
每一种类型的磁盘文件系统通常与某一特定的存贮介质相对应:
*ufs与硬盘和其它介质(如: 磁带,CD-ROM,软盘)相对应:
*hsfs与CD-ROM相对应
*pcfs与软盘相对应
这些对应也并不是绝对的,如: ufs文件系统也可以安装在CD-ROM和软盘上。
4.1.2网络文件系统
网络文件系统是指可通过网络进行访问的文件系统,典型的基于网络的文件系统是指安装在一个系统上,可由其它系统通过网络进行访问的文件系统,基于网的文件系统有:
•;nfs----网络或分布式文件系统
•;rfs----远程文件共享
SunOS 5.x缺省的分布式文件系统是nfs。管理分布式文件系统是通过共享文件系统(从服务器输出)或者是将文件系统到各个系统中实现的,详细内容请参见后面的"使文件系统有效"一节。
4.1.3伪文件系统
伪文件系统是虚拟的或基于存贮器的文件系统,它提供访问特殊的核心信息和功能,伪文件系统并不需要文件系统盘空间,一些伪文件系统可以使用物理盘中的交换区,例如临时文件系统。
4.1.3.1临时文件系统(tmpfs)
临时文件系统(tmpfs)利用本地存贮器进行盘的读写,所以访问tmpfs文件系统的文件比访问ufs文件系统中的文件快得多,临时文件系统中的文件不是永久的,当文件系统被拆掉、系统关机或重新启动时,它们就被自动删掉。
SunOS 5.x目录中的缺省文件系统类型是tmpfs,与ufs类型的/tmp文件系统一样,可以将文件拷贝或移动到tmpfs类的/tmp文件系统中,或是从其中拷出,移出到其它的目录中。
使用tmpfs文件系统节省了本地盘或网络读写临时文件的开销,所以提高了系统性能,例如:
编译程序时生成很多临时文件,当使用这些文件时,操作系统产生大量的磁盘或网络的输入和输出请求,利用临时文件系统事先保存这些临时文件,可以明显地加快
文件的创建、存取和删除的速度。
tmpfs文件系统利用交换区做为临时存贮区,如果带有tmpfs文件系统的系统没有足够的交换区,可能会产生下面两个问题:
*象一般的文件一样,tmpfs文件系统没有可用空间;
*由于tmpfs申请分配交换区存放数据(如果必要的话),有些程序就可能会因为没有足够的交换区而不能执行。
4.1.3.2循环文件系统(lofs)
用循环文件系统(lofs)可创建一个新的虚拟的原文件系统,然后用另一个路径名来存取文件,例如,可对/tmp/newroot目录进行循环安装
(loopback
mount),整个文件系统,包括任何从nfs服务器上安装的文件系统,看起来就像在/tmp/newroot下被复制了,全部文件可以用以/开始的路径
进行存取;或者用以/tmp/newroot开始的路径名进行存取,两者都一样,直到另一文件安装到/tmp/newroot或其子目录中。
4.1.3.3进程文件系统(procfs)
进程文件系统(procfs)驻留在内存中,/proc目录中有一活动进程号的清单,ps等命令会用到/proc目录中的信息,调试器或其它开发工具也可能通过文件系统调用来访问这些过程的地址和空间,下面例子列出了/proc目录中的一部分内容:
gtxa%ls -l /proc
total 144944
-rw-------1root root 0 Dec 19 15:45 00000
-rw-------1root root 196608 Dec 19 15:45 00001
-rw-------1root root 0 Dec 19 15:45 00002
-rw-------1root root 1028096 Dec 19 15:46 00073
-rw-------1root root 1445888 Dec 19 15:46 00091
-rw-------1root root 1142784 Dec 19 15:46 00093
-rw-------1root root 1142784 Dec 19 15:46 00095
。。。
-rw-------1ignatz staff 1576960 Dec 19 15:50 00226
-rw-------1ignatz staff 192512 Dec 19 15:51 00236
-rw-------1ignatz staff 1269760 Dec 19 15:52 00240
-rw-------1ignatz staff 6090752 Dec 19 15:52 00241
-rw-------1ignatz staff 188416 Dec 19 15:52 00247
-rw-------1ignatz staff 2744320 Dec 19 15:52 00256
注意: 千万不要删proc目录中的文件,希望你不要用删除/proc目录中进程的方法来杀掉进程,关于杀掉进程的方法,请参见第一章,记住/proc目录不占用磁盘空间,所以没有必要删除/proc目录下的文件,/proc目录不需任何系统管理。
4.1.3.4别的伪文件系统
下面列出了伪文件系统的其它类型,注意并不需要对这些文件系统进行管理。
•;fifofs(先进先出文件系统)命名管道文件,用于进程对数据的公共访问。
•;fdfs(文件描述符文件系统)提供用文件名打开文件,这是通过文件描述符来实现的。
•;namefsSTREAMS使用它在文件顶端对文件描述符动态安装。
•;specfs(特别文件系统)提供对特别的设备和块设备的访问。
•;swapfs用mkfile和swap命令建立附加的交换区时,核心所用的文件系统。
4.2 SunOS 5.x缺省的文件系统
SunOS 5.x文件是以"/"根目录开始,向下扩展为一系列目录的层次结构,SunOS 5.x系统软件安装了一些缺省的目录,并按一定的约定将相同类型的文件放在一起,表4.1介绍了缺省的SunOS 5.x文件系统,并对每一文件系统类型进行相应的说明。
缺省的SunOS 5.x文件系统
文件系统 文件系统类型 说明
/ ufs 整个文件树的顶,根目录包含系统操作的关键目录和文件,如:核心(/kernel/unix),设备驱动程序和启动系统(boot)的程序,根也包括本地和远程文件系统到该文件树的安装点目录。
/etc ufs 包括用于系统管理的系统文件。
/usr ufs 包括可和其它用户共享的系统文件和目录,只可运行于某类系统上的文件放在/usr目录中(如:SPARC可执行文件),可运行于所有系统上的文件(如: 联机手册)放在/usr/share 目录中。
/home nfs,ufs 用户主目录的安装点,它存贮用户的工作文件,缺省时,/home是一个自动安装的文件系统,单机系统中,/home可以是本地磁盘中的一个ufs文件系统。
/var ufs 包含本地系统中经常变化和增长的系统文件和目录,包括logs、vi和ex备份文件、uucp文件、邮件和日历文件等。
/opt nfs,ufs 可选的安装点,用于安装第三方厂家的软件,在某些系统中,/opt可以是本地盘上的ufs文件系统。
/tmp tmpfs 临时文件,当系统重新启动或关机时,被清除。
/proc procfs 包含按进程号排列的活动的系统进程清单。
根(/)和/usr文件系统中是必须的,/usr文件系统中最基本的命令(如: mount)也包含在根文件系统中,这样便于系统启动到单用户状态时能使用这些命令。
4.3虚拟文件系统表(/etc/vfstab)
每一系统均有一虚拟文件系统表(即/etc/vfstab),它列出了系统中存在的全部磁盘区文件系统,该表还列出了每一个文件的安装点和可选项,
SunOS 4.x中,
文件系统表是/etc/fstab,现在/etc/vfstab代替了/etc/fstab,但功能却是相似的,缺省的文件系统配置表
(/etc/vfstab)依赖于系统软件安装时所做的选择,对每个系统,通过编辑/etc/vfstab文件可自动地安装本地的ufs文件系统、必需的
nfs文件系统和其它的文件系统。
下面介绍/etc/vfstab表的内容,并说明如何编辑和使用该文件,文件系统表是ASSCII文件,注释行以#开头,下面的/etc/vfstab文件说明了:系统中有两个硬盘,并安装了两个nfs文件系统说明。
#more /etc/vfstab
#device device mount FS fsck auto- mount
#to mounto fsck point type oass mount? options
/dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s0 / ufs l no -
proc - .proc proc - no -
/dev/dsk/c0t0d0s1 - - swap - no -
swap - /tmp tmpfs - yes -
/dev/dsk/c0t0d0s6 /dev/dsk/c0t0d0s6 /usr ufs 2 no -
/dev/dsk/c0t3d0s7 /dev/dsk/c0t3d0s7 /files7 ufs 2 no -
cheers: /export/svr4/,man.ja5 - /usr/man nfs yes hard
cheers: /export/svr4/openwin V3.ja4 - /usr/openwin nfs yes
hard
#
注意:/和/usr的自动安装(automount)域说明为no,这是因为在mountall命令运行前,在系统启动时/和/usr已被安装上了,如果
将此值定义为yes,则mountall命令试图再去安装这两个已经安装的文件系统。/etc/vfstab文件中的每个域必须有值,若无值(即值为
no)必须填上一个"-"号。
/etc/vfstab文件的域
域 说明
Device to mount 可安装的设备有:
*本地ufs文件系统的块设备 (如:/dev/dsk/c0t0d0s0)
*远程文件系统的资源名(如nfs文件系统myserver:/export/home)
磁盘的swap区名(如:/dev/dsk/c0t4d0s1)
*/proc目录和proc文件系统
*hsfs类型的CD-ROM
*pcfs和ufs类文件系统的软盘dev/diskette, 这一域也用于说明swap文件系统
Device to fsck 对应于则域说明的文件系统的原始(字符)特别设备(例如:/dev/dsk/c0t0d0s0)定义了fsck使用的原始接口,当没有对应的设备时用“-”号说明,例如只读文件系统或网络文件系统。
Mount point 缺省的安装点目录(如/usr目录下安装/dev/dsk/c0t4d0s6)。
FS type 由域说明的文件系统类型。
fsck pass
Fsck检测次数,用于决定是否需要检测文件系统,当该域是"-"号时不检测文件系统,当该域的值大于1时,则检查文件系统;等于0时,则检查非ufs文
件系统,而不检查ufs文件系统,当fsck作用多个ufs文件系统,而fsck pass值大于1,并且使用了-op选择项时,fsck
自动以最高的效率并行检测不同盘上的文件系统,当fsck pass值为1时,则顺序检测文件系统,否则fsck pass值无效。
Automount? 系统启动时,若需mountall命令自动安装文件系统,则为yes,否则为no.注意该域与自动安装软件毫无关系。
Mount options 安装文件系统统的选择项列表,它们以","号分隔(无空格),"-"号说明无任选项,任选项的值请参见mount-(1M)手册。
4.3.1 文件系统表项的建立
下面建立文件系统表的步骤:
1、 进入超级用户;
2、 用vi等命令编辑/etc/vfstab文件;
3、 加入各项。用空格或Tab键分隔其中每个域,如果某个项没有值,则填上”-”号;
4、 保存该文件;
5、 检查安装点目录是否存在,不存在则建一个:改变目录到需要安装的地方然后键入mkdir
6、 键入mount 此项被安装上
下面的例子说明了将/dev/dsk/c0t3d0s7盘区作为ufs文件系统安装到/test1目录中,安装任选项(读/写)为缺省值,fsck设备是/dev/rdsk/c0t3d0s7字符设备,fsck pass值为2,说明该文件系统不采用顺序方式检测
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
#/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /test1 ufs 2 yes -
下面的例子说明将gtxa系统的/export/man目录作为nfs文件系统安装到/usr/man上,对nfs文件系统不必说明fsck
devices和fsck pass域,这一例中,安装任选项是ro(只读)软方式,为提高可靠性,对读/写的nfs文件系统应采用硬式。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
gtxa:/export/man - /usr/man nfs - yes ro.soft
下面的例子说明将CD-ROM安装到/hsfiles目录上,一般情况下CD-ROM文件是只读的,所以安装任选项应设置为ro,目前流行的是CDROM
自动安装,所以automount项为yes,由于hsfs是只读的,所以fsck device和fsck pass均为无值。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
/dev/dsk/c0t6d0s2 - /hsfiles hsfs - yes ro
下面的例子说明将软盘安装到/pcfiles上,autmount项为无值,是由于经常在命令行中安装和拆卸,pcfs文件系统不支持fsck,所以fsck device和fsck pass均定为无值。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
/dev/diskette - /pcfiles pcfs - no rw
下面例子说明安装根文件系统到循环安装点/etc/newroot上,automount项为yes,fsck device项和fsck
pass项为无值,循环文件系统必须在组成它的文件系统安装好后才能安装,要确保循环项是/etc/vfstab
文件中的最后一项,使其跟随在它所依赖的项的后面。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
/ - /tmp/newroot lofs - yes -
4.4文件管理命令
这一节将介绍文件系统管理命令及其语法规则、大部分文件系统管理命令包含普通文件系统命令和特别文件系统命令两部分。普通文件系统命令,可加到特别文件系
统部分一起使用,表4.3列出了普通文件管理命令,这些命令在/usr/sbin目录中,它们大部分有一个对应的特别文件系统命令。
注意:在要直接使用特别文件系统命令,如果你使用了一个文件系统不支持的操作,普通命令会显示出错信息::Operation not applicable for FSType。
4.4.1普通命令语法规则
大部分普通命令的语法是:
[-F][-v][][-o] [][operands]
普通文件系统管理命令
命令 说明
clri(1M) 清除inode
df(1M) 报告磁盘空间、空闲磁盘块和文件数
ff(1M) 列出一个文件系统的文件名和统计信息
fsck(1M) 检测一文件系统的完整性,并修复发现的损坏
fsdb(1M) 文件系统调试器
fstyp(1M) 确定文件系统的类型
labelit(1M) 当文件系统拷贝到磁带上时,列出或提供文件系统的标号(适用于volcopy命令)
mkfs(1M) 建立新的文件系统
mount(1M) 安装文件系统和远程资源
mountall(1M) 安装文件系统表中说明的全部文件系统
ncheck(1M) 用inode号产生路径名清单
umount(1M) 拆卸文件系统和远程资源
umountall(1M) 拆卸文件系统表说明的全部系统
volcopy(1M) 产生文件系统映象
4.4.2普通文件系统命令和特别文件系统命令手册
普通文件系统命令和特别文件系统均有手册,在手册中特别命令紧接普通命令。查看特别命令,在普通命令名后附加一个下划线和文件系统类型的缩写即可, 例如:为了查看安装hsfs文件系统特别命令手册,键入
man mount -hsfs
lofs pcfs 以及procfs的文件系统没有mount特别命令手册
4.4.3利用文件系统命令确定文件系统类型
普通文件系统命令确定文件系统类型的步骤是:
1、 如果有-F选择项,由它决定.
2、 通过匹配/etc/vfstab中的项和特别设备来决定任选项,例如:fsck 首先查找与fsck device域的一个匹配,如果未找到,则查设备域。
3、 对本地文件系统使用/etc/default/fs中说明的缺省值,对远程文件系统使用/etc/dfs/fstypes中说明有缺省值。
普通文件系统命令句法描述
任选项 说明
-F 说明文件系统类型,如果不使用该任选项,则寻找/etc/vfstab表中与特别原始设备或安装点相匹配的项,否则:从/etc/default/fs取本地文件系统缺省值,从/etc/dfs/fstypes中取远程文件系统缺省值。
-v 回显完整的命令行,显示行可能包括来自/etc/vfstab中的附加信息,用这一任选项来验证命令行,它并不执行命令。
各类文件系统共同的选择项。
-o 特定某类文件系统的任选项,其格式是跟一空格,然后是由","号分隔并且无空格插入的一系列 [=]对。
说明文件系统,给出存贮文件系统磁盘的安装点或设备文件和名称,对一些命令,文件必须是原始(字符)设备.对一些命令,则必须是块设备,关于盘的命名请参
见第三章。这个参数有时用来做关键字与/etc/vfstab表中某项相匹配,从而得到别的信息,大多数情况,这一参数是需要的,并且紧跟在之后,然而当
你希望一个命令作用于/etc/vfstab 文件中说明的所有文件系统时,则不需要这一参数。
4.4.4文件系统类型
如果你想确定某文件系统类型,可以从上述普通命令所使用的文件中来获取信息。
*文件系统表(/etc/vfstab)中的FS类型域
*对本地文件系统使用/etc/default/fs文件
*对远程文件系统使用/etc/dfs/fstypes文件
为了从/etc/vfstab中找出文件系统类型,键入grep /etc/vfstab,安装点信息显示如下:
gtxa%grep /tmp /etc/vfstab
swap - /tmp tmpfs - yes -
gtxa%
如果vfstab中不含要找的文件系统项,则用下面的命令决定文件系统类型。为了查出安装的文件系统类型,键入grep /etc/mnttab,安装点的信息显示如下:
gtxa% grep /home /etc/mnttab
gtxapid129) /home nfs fo ,ignore,map=/etc/auto-home,indirect,dev21c0004693606637
bigriver:/export/home/bigriver/tmp-mnt/home/bigriver nfs rw,dev21c0005695409833
gtxa%
或键入mount所有安装的文件系统及其类型即可列出:
gtxa%mount
/on/dev/dsk/cot3doso read/write on Tue Dec 24 12:29:22 1991
/usr on /dev/dsk/cotldos6 read/write on Tue Dec 24 2:29:22 1991
/proc on /proc read/writ on Tue Dec 24 12:29:22 1991
/usr/man on swsvr4-50:/export/svr4/man read/write/remote on Mon Dec30 12:44:11 1991
/usr/openwin on swsvr4-50:/export/svr4/openwinV3 read/write/remoteon Mon Do 30 13:50:54 1991
/tmp on swap o on Wed Jan 8 13:38:45 1992
/mnt on swsvr4-50:/export/svr4 read/write/remote on Fri Jan 10 15:51:23 1992
/tmp-mnt/home on bigriver:/export/home read/write/remote on Tue Jan14\09:24:53 1992
gtxa%
或者用下列步骤:
1、 键入devnm 原始设备名显示出来;
2、 成为超级用户;
3、 键入fstyp /dev/rdsk/cWtXdYsZ文件系统的类型显示如下:
gtxa% devnm /usr
/dev/dsk/cotldos6 /usr
gtxa%su
Password:
# fstyp /dev/rdsk/cot3doso
ufs
#
4.5如何使文件系统有效
为了使已创建的一个文件系统有效,必须将其进行安装。一个已安装的文件系统,就意味着它被加到系统目录树中指定的某个安装点上,并且是有效的。根文件系统总是被安装好的。其它任何文件系统可连到根文件系统上或从根中拆掉。
可以用下列步骤安装本地文件系统:
在/etc/vfstab(虚拟文件系统表)文件中加一项。/etc/vfstab中包含的一系列文件系统,在系统以多用户方式启动时被自动安装。/etc/vfstab文件已在前面介绍过。
在命令行中用mount命令安装。
其它系统访问某文件系统之前,必须将该文件系统安装到网络服务器文件系统中,并使其成为可共享的文件系统(输出exported)。后面将会介绍怎样共享服务器文件,当服务器上的文件系统可共享时,客户则可以以下列三种方式将共享文件系统安装为nfs系统:
*在/etc/vfstab表中加一项,以便系统以多用户方式启动时,能够自动安装该文件系统.
*使用自动安装程序。当用户进入或退出一个自动安装目录时,自动安装程序就会自动安装或拆卸对应的文件系统.
*在命令行中使用mount命令.
4.5.1安装与拆卸
文件系统可加到系统的目录层次结构中,这一过程称为安装(mounting),为了安装一个文件系统需要:
*成为超级用户。
*本地系统的一个安装点,安装点是指与安装的文件系统相联结的一个目录。
*要安装的文件系统资源名。(例:/usr)
一般情况,本地硬盘总是包含在/etc/vfstab文件中,而服务器上的软件,如openwindows联机手册或服务器上的主目录,是在/etc/vfstab中安装还是自动安装,取决于你所采用的策略。
当安装文件系统时,只要文件系统一安装好,那么安装点上原来存在的任何文件或目录就不再有效。被屏蔽掉的文件并不永久受安装过程的影响,当文件系统拆卸后,原来的文件或目录又恢复为有效。安装目录最好是采用空目录,这样不会屏蔽掉原来的文件。
系统在/etc/mnttab(mount表)文件中记录了已安装的文件系统。可以用cat或more命令列出mount表的内容。但决不能编辑修改mnttab文件。(/etc/vfstab是可以编辑的)。下面是一个mount表的例子:
gtxa%more /etc/mnttab
/dev/dsk/cot3doso/ufs rw,suid 693186371
/dev/dsk/cotldos6/usr ufs rw,suid 693186371
/proc/proc proc rw,suid 693186371
swap/tmp tmpfs,dev=0 6931863712
swsvr4-50:/expor/svr4/openwinV3/usr/openwin nfs rw,dev=21c0000 6963186443
swsvr4-50/export/svr4/man/usr/man nfs rw,dev=22c0000 693186447
gtxapid127)/nse nfs
ro,ignore,map=/etc/auto.nse,indirect,dev=21c0002 69318449
gtxapid127)/net nfs ro,ignore,map=-
hosts,indirect,dev=21c0003 693186449
gtxapid127)/home nfs
ro,ignore,map=/etc/auto-home,indirect,dev=21c0004 693186449
bigriver:/export/home/bigriver/tmp-mnt/home/bigriver nfs rw,dev=21c0005 693186673
gtxa%
4.5.1.1安装与拆卸文件系统命令
表4.5列出了/usr/sbin目录下的安装和拆卸文件系统命令。
Mount命令不能安装一个数据不一致的读/写文件系统,所以当mount命令或mountall命令返回一个出错信息时,就需要去检查文件系统。
表4.5安装与拆卸文件系统命令
命令 说明
mount(1M) 安装文件系统和远程资源
Mountall(1M) 安装文件系统表中说明的全部文件系统
Umount(1M) 拆卸文件系统及远程资源
Umountall(1M) 拆卸文件系统表中说明全部文件系统
文件系统忙时,umount命令不会拆卸它。所谓文件系统忙是指用户正在该文件系统的某个目录中操作,或是某个程序找开了该文件系统中的文件。
4.5.1.2查找已安装的文件系统
为了显示已安装的文件系统,可键入mount命令,这时当前安装的文件系统将显示出来
gtxa%mount
/on/dev/dsk/c0t0d0s0 read/write/setuid on Wed Oct 23 10:08:501991
/usr on /dev/dsk/c0t0d0s6 read/write/setuid on Wed Oct 23 10:08:501991
/proc on /proc read/write/setuid on Wed Oct 23 10:08:50 1991
/tmp on swap on wed Oct 23 10:08:50 1991
/usr/openwin on cheers:/export/openwin hard/remote on Wed Oct 23 10:11:08 1991
/home on blowuppid136)read only/intr/map=auto.home/indirect on Wed Oct 23 10:11:10 1991
/vol on blowuppid136)read only/intr/map=auto.vol/indirect on Wed Oct 23 10:08:50 1991
/nse on blowuppid136)read only/intr/map=/etc/auto.nse/indirecton Wed Oct 23 10:08:50 1991
gtxa%
4.5.1.3安装/etc/vfstab文件中的全部文件系统
下面是安装/etc/vfstab文件中全部文件系统的步骤:
1、 进入超级用户;
2、 键入mountall /etc/vfstab中所有的本地文件系统被安装上。
gtxa%su
Password:
#mountall
#
4.5.1.4安装特定类型的文件系统
下面说明/etc/vfstab文件中,特定类型的文件系统的安装步骤,最常见的是本地硬盘的ufs文件系统和网络文件系统nfs。
1、 进入超级用户
2、 键入mountall -F,/etc/vfstab中的此种类型的文件系统被安装上。
下面是安装nfs类型文件系统的例子。
gtxa%su
Password
#mountall -F nfs
#
4.5.1.5安装单个文件系统(mount)
安装/etc/vfstab中单个文件系统的步骤是:
1、进入超级用户:
2、键入mount
gtxa%su
Password:
#mount /opt
#
4.5.1.6拆卸所有的远程文件系统(umountall -F nfs)
下面是拆卸远程文件系统的步骤:
1、进入超级用户;
2、键入umountall -F nfs,拆掉/etc/vfstab中全部远程文件系统。
gtxa%/su
password:
#umountall -F nfs
#
注意:如果你要拆掉全部文件系统(用umountall命令且不带参数),系统就不能再使用。必须重新启动。
4.5.1.7拆卸个别的文件系统(umount)
不能拆卸正在使用的安装目录,若想拆卸一个正在使用的目录,必须让所有的用户转出这一目录。
1、进入超级用户;
2、如果必要,让用户转出你要拆除的目录;
3、键入umount 指定的文件系统就被拆除了。
下面是用mount命令查找安装点,并拆掉这一安装点的例子:
gtxa%mount
/on/dev/dsk/c0t0d0s0 read/write/setuid on Wed Oct 23 10:08:501991
/usr on /dev/dsk/c0t0d0s6 read/write/setuid on Wed Oct 23 10:08:501991
/proc on /proc read/write/setuid on Wed Oct 23 10:08 50 1991
/tmp on swap on wed Oct 23 10:08:50 1991
/usr/openwin on cheers:/export/openwin hard/remote on Wed Oct 23 10:11:08 1991
/home on blowuppid136)read only/intr/map=auto.home/indirect on Wed Oct 23 10:11:10 1991
/vol on blowuppid136)read only/intr/map=auto.vol/indirect on Wed Oct 23 10:08:50 1991
/nse on blowuppid136 read only/intr/map=/etc/auto.nse/indirecton Wed Oct 23 10:08:50 1991
[41] gtxa%su
Password:
#cd /
#umount /home
#
4.5.2自动安装程序
可以通过nfs实现共享文件系统的安装,这种方法称为自动安装(automounting)。自动安装程序在后台运行,根据需要安装或拆卸远程目录。正在
运行自动安装程序的客户系统,一旦用户存取自动安装程序可访问的远程文件或目录,自动安装程序就自动将用户要访问的文件系统安装到该用户系统。只要用户在
远程目录中或正在使用其中的文件,远程目录或文件就是安装着。如果一定的时间内没访问远程文件系统,则它自动地被拆掉。自动安装程序根据需要自动地安装或
拆卸文件系统,除了进入或转出目录的操作外,不需用户进行任何干预。
可以用自动安装程序安装一些文件,用/etc/vfstab文件和mount命令安装另外一些文件,对于无盘节点,/etc/vfstab表中必须有/
(根),/usr,/usr/kvm几项,共享文件系统应一直保持有效,所以不要用自动安装程序安装/usr/share。
自动安装程序根据映象表中的说明对文件系统进行操作,这些映象表可作为NIS,NIS+或本地文件来维护。自动安装程序映象表可说明文件的多个远程位置。
由于采用了这种方法,当其中一个服务器出问题时,自动安装程序会再从其它机器上安装,在映象表中可为每一服务器分配一个加权因子,用它来决定哪个服务器对
映象表中的资源有较高的优先级。
当系统进入运行第三级(run level 3)时,将自动启动自动安装程序。当然也可以从命令行中启动自动安装程序。缺省时,sunos5.x系统软件自动安装/home。(如何建立和管理自动安装程序的内容已超出本手册的范围)。
4.5.3共享服务器文件
nfs是一个分布式文件系统,通过nfs可将运行不同操作系统的机器联结在一起例如,运行DOS的系统可与运行UNIX的系统共享文件。
nfs使得文件系统的实际物理位置与用户无关。用户可通过nfs查看所有相关文件,而不管它们的位置。由于采用了nfs共享文件,用户只需在一个系统的盘
中放一个拷贝,其它系统可以通过网络进行存取,而不需在每个系统中均放一个拷贝。在nfs下,远程文件系统与本地文件系统看起来没什么区别,一个系统称为
nfs服务器是指该系统上的某些文件系统可通过网络共享或输出(export),服务器内保留着当前已输出的文件系统表及其存取权限(如读/写或只读)。
用户可以通过网络共享其它机器(通常是服务器)的资源,如文件、目录或设备等,例如可以与其它机器上的用户共享第三方厂家的应用软件。
当你准备让其它用户共享你的资源时,必须保证其它的远程系统安装你的资源。
下面的方法可实现资源共享:
1、用share或shareall命令。
2、在/etc/dfs/dfstab(分布式文件系统表)文件中加一项。缺省的/etc/dfs/dfstab文件给出了资源共享的语法规则和实例:
gtxa%more /etc/dfs/dfstab
#place share(1M) commands here for automatic execution
# on entering init state 3.
#
# share [-F fstype][-o options][-d""][resource]
# .e.g;
share -F nfs -o rw=engineering-d"home dirs"/export/home2
share -F nfs/var/mail
gtxa%
4.6检查文件系统的数据一致性(fsck)
ufs文件系统根据一些内部表来来跟踪inode、已用掉的块和可用的块,当这引起内部表与磁盘的数据没有适当同步(synochronized)时,就产生了不一致,这时就需要修复文件系统。
下面是操作系统突然终止时使文件系统毁坏或产生不一致的几种情况:
*电源出故障
*系统故障性阻塞(unplugging)
*不正常的关机
*核心中的软件错误
文件系统损坏虽然严重,但并不经常发生,系统启动时会自动检测文件系统,大部分情况下能修复检测到的问题。 文
件系统检测是用fsck(file system
check)程序实现的。fsck命令将已分配的但没有说明其来源的文件和目录放在lost+found目录下,如果该目录不存在,则由fsck建立。如
果lost+found中没有足够的空间,fsck也会自动增大其空间。
下列情况发生时需要检测文件系统:
*文件系统不能安装
*正在使用的文件系统产生问题
*正在使用着的文件系统出现不一致时,控制台窗口会提示出非常醒目的出错信息,严重情况会发生系统瘫痪。使用fsck前请详细阅读fsck(1M)手册。
4.6.1决定文件系统是否需检测
按下列步骤测定文件系统是否需检测:
1、 进入超级用户;
2、 键入fsck –m
/dev/rdsk/cWtXdYsZ命令,上述命令通过检查指定的文件系统超级块中的状态标志来判断文件系统是否有问题,是否进一步修复检测。如果省略
了设备参数,/etc/vfstab文件中列出的fsck pass数大于0的全部ufs文件系统均需检测。
下例中说明第一个文件系统需要检测,第二个不需要检测:
#fsck -m /dev/rdsk/c0t0d0s6
**/dev/rdsk/c0t0d0s6
ufs fsck:sanity check:/dev/rdsk/c0t0d0s6 needs checking
# fsck –m /dev/rdsk/c0t0d0s7
* */dev/rdsk/c0t0d0s7
* * */dev/rdsk/c0t0d0s7
* ufs fsck:sanity check:/dev/rdsk/c0t0d0s7 okay
#
4.6.2以交互方式检测文件系统
下面是以交互方式检测文件系统的步骤:
*进入超级用户;
*拆卸文件系统;
*键入fsck,/etc/vfstab文件中fsck pass域值大于0的文件系统全部被检测,也可以和安装点目录或/dev/rdsk/cWtXdYsZ作参数进行检测。检测中任何不一致处将显示出来。
下面的例子中检测/dev/rdsk/c0t0d0s6并校正其不正确的块计数:
#fsck /dev/rdsk/c0t0d0s6
checkfilesys:/dev/rdsk/c0t0d0s6
*Phase1 - Check Block and Sizes
INCORRECT BLOCK COUNT I=2529(6 should be 2)
CORRECT?y
* * Phase 2-Check Pathnames
* *Phase3- Check Connectivity
* *Phase 4-Check Reference Counts
* *Phase 5_Cylinder Groups
Dynamic 4.3 FFFS
929 files,8928 used.2851 free(75 frags,347 blocks.o.6% fragmentation)
/dev/rdsk/cotoos6 FILE SYSTEM STATE SET TO OKAY
*****FILE SYSTEM WAS MODIFIED ********
4.7备份和恢复文件系统
备份是指做文件的拷贝,作为原文件被删除或毁坏时的安全措施,通常是将其拷到可移动的介质中。备份文件后可方便地恢复误删的文件,但最重要的是用于处理严重的硬件故障和其它灾难性故障。
备份文件是最关键的系统管理功能之一,按照一定的步骤和计划实现系统文件的备份有下述三个主要原因:
*确保系统瘫痪时文件系统的完整性;
*防止用户文件被误删;
*作为重新安装系统或修复系统的重要保护措施。
当按计划备份文件系统时,应保证能够将备份文件恢复为适当的当前状态,另外,你可能也想将备份好的文件系统从一个系统传到另一个系统中或做为文档,将文件保存到可移动的介质上,你就能够移动或改变系统上的文件。
按计划备份文件需考虑下面几方面的内容:
*用哪个命令备份文件系统
*用何种介质
*使用什么备份计划
*这一系统中哪些文件对用户是至关重要的
*这些要备份的文件在什么地方:它们是在一个单独的文件系统中吗?
*这些文件经常变化吗?
*当文件丢失或损坏时需要多快恢复?
*为备份文件,相关文件系统可经常拆卸吗?
介绍可能的备份策略已超出本手册范围,参见联机手册ufsdump(1M)命令中提供的转贮(dump)策略。
下面介绍如何用ufsdump命令备份文件,用ufsrestore命令恢复文件。
4.7.1用QIC-150盒式磁带备份文件系统(ufsdump)
为了备份完整的文件系统,所有的用户必须退出,并使系统进入单用户方式。(磁带设备命名的内容请参见第三章"磁带设备命名约定"。
可以在磁带设备名之前加从远程驱动器上进行备份和恢复。下面是语法:/dev/rmt/。
例如:远程系统gtxa上的磁带机名是/dev/rmt/0,则远程设备名应为gtxa:/dev/rmt/0。
下列步骤说明如何实现文件系统级(完整)备份:
*键入init s这时系统进入单用户方式,这样就保证了备份全部文件系统时没有用户修改文件系统。
*插入QIC-150磁带。
*键入ufsdump 0 cuf /dev/rmt/ /dev/dsk/cWtXdYsZ。
任选项0说明的0级(全部)备份。C任选项说明是盒式磁带;U任选项更新转贮记录;f任选项说明随后是设备文件名。也可以键入硬盘区代替备份的文件系统,例如用c0t0d0s7代替/files1。
gtxa%su
Password:
# init s
#ufsdump 0 cuf /dev/rmt/0 /dev/dsk/c0t0d0s7
DUMPate of this level 0dump:Wed Mar 11 10:16:53 1992
DUMPate of last level 0 dump:the epoch
DUMPumping /dev/rdsk/c0t3d0s7(/export/home)to/dev /rmt/0
DUMP:mapping (Pass I)[regular files]
DUMP:estimated 956 blocks (478KB)
DUMP:Writing 63 Kilobyte records
DUMP:dumping(Pass III)[directories]
DUMP:dumping (pass IV)[regular files]
DUMP:level o dump om Wed Mar 11 10:16:53 1993
DUMP:956 blocks (478KB)on 1 volume
DUMPUMP IS DONE
#
如果一盒带存不下,则ufsdump命令会提醒你什么时候该换一盒新带。在磁带上标明命令、文件系统名及备份日期等信息。
4.7.1.1实现增量备份
用ufsdump命令可指定不同的备份级别,这样就可只备份那些上次备份过,而又已经修改了的比较低级别的文件,下列步骤说明在最后一次完整的转贮上增量式备份的过程:
1、 使系统进入单用户模式;
2、 进入超级用户;
3、 将磁带放入磁带机中;
4、 键入ufsdump [1-9] ucf /dev/rmt/ /dev/rdsk/ctds在ufsdump参数前加上级数,例如:9级备份,键入9ucf;
5、 执行完ufsdump命令后取出磁带并贴上标签。
4.7.2恢复备份文件系统
ufsrestore命令可以将用ufsdump命令备份的文件拷贝到当前工作目录中,可以用ufsrestore命令重装使用0级备份后使用增量备份的
文件系统,或从任何备份带中恢复一个或多个文件,文件是以原始的所有者、最后的修改时间和模式(许可权)进行恢复的。恢复文件或文件系统之前需要知道:
*需要哪个带或盘;
*备份文件系统的设备名、你使用的磁带设备类型;
*磁带设备名(本地或远程)。
4.7.2.1决定使用哪一备份带
在开始恢复文件或文件系统之前,必须决定使用哪一备份磁带,当需要恢复全部文件系统时,需要最新的0级备份带。同样,如果是部分备份就需要最新的在较高级
别上做的增量备份带,具体情况需要参考你使用的备份计划来确定你需要的级别和磁带号。例如,如果做了0级和9级的备份,就需要0级和9级的最新的备份带。
下面是决定用哪个带恢复单独的文件或整个文件系统的步骤:
1、 向用户寻问有关文件或文件系统丢失的日期,或文件要被复原到的大概时间。
2、 参考你的备份计划找出最后备份的日期,不一定用最新的备份版本恢复。为了恢复文件的适当的版本,要从逆向查看增量备份文件,从最高级看到最低级,从最新的看到最旧的。
3、 如果有用ufsdump -a命令产生的在线存档文件,则键入ufsrestore ta /path/一定要用文件的全程路径,这时存贮的文件和介质就会显示出来。
4、 找出包含备份的介质,要知道存贮介质是找到数月甚至数年所前的备份介质。
5、 这步是可选的,将存贮介质插入驱动器中,键入ufsrestore tf /path/,对一定用完整的路径名。如果一个文件在备份介质中,则显示出它的文件名和inode号,否则显示信息说明此文件不在该介质中。
6、 如果一个带上有多个备份文件,可以用-sn任选项来定位,选择需要的备份文件。例如键入ufsrestore xfs /dev/rmt/05将磁带定位在第五个备份文件上并将其恢复。
4.7.2.2恢复全部备份
下列步骤说明,采用QIC-150盒式磁带恢复一个文件系统的完整备份的过程,注意:这一过程将生成一新的文件系统,并将毁掉盘上原来存在全部文件系统。
1、 进入超级用户;
2、 键入init s系统进入单用户模式,保证了没有人使用你将恢复的文件系统;
3、 键入umount 命令将相应的安装点(mount-point)(例:/files1)拆卸下来;
4、 键入newfs /dev/rdsk/cWtXdYsZ将磁盘区对应的原始设备文件(例如:/de/rsk/c0t0d0s7对应/home)清掉并重建文件系统;
5、 键入mount /dev/dsk/cWtXdYsZ将相应的块文件设备的文件系统(例如:/dev/dsk/c0t0d0s7对应的/home)重新安装在相应的安装点;
6、 键入cd 则进入你希望做恢复的目录中;
7、 插入QIC-150盒式磁带;
8、 键入ufsrestore rvf /dev/rmt/0h将文件系统恢复。
下例说明恢复/files1对应的c0t0d0s7盘区:
gtxa%su
Password:
#init s
#umount /files1
#newfs /dev/rdsk/c0t0d0s7
#mount /dev/dsk/c0t0d0s7 /files1
#cd /files1
#ufsrestore rvf /dev/rmt/0h
4.7.2.3交互式恢复文件
恢复单个文件或目录时,将它们存入临时目录(例如:/var/tmp)是个好方法,经过确认后才执行恢复操作,事实上要确保不会用备份带上的旧版本文件重写已有的新版本。下面是交互式恢复文件的步骤:
1、 进入超级用户;
2、 将磁带写保护;
3、 将备份带放入磁带驱动器中;
4、 键入cd /var/tmp,如果你希望将文件存放在其它目录下,则用相应的目录名代替/var/tmp;
5、 键入ufsrestore if /dev/rmt/,一些提示信息和提示号显示出来;
6、 建立要恢复的文件清单;
7、 用ls命令列出一个目录的内容:
*键入cd 改变目录
*加一个目录名或文件名到将要恢复的文件清单,键入add
*若要删除将要恢复的文件清单中的目录名或文件名,键入delete
*保持当前目录的模式不变,键入setmodes然后键入n并回车;
8、 建完清单后,键入extract,ufsrestore会问你用哪一卷;
9、 键入卷号回车,如果只有1卷,键入1并回车,清单中的文件或目录就被取出并恢复到当前工作目录中;
10、 键入quit则显示shell提示符;
11、 用ls -l命令列出已恢复的文件或目录;
12、 检查文件列表,确保所有文件或目录均被恢复;
13、 用mv命令将文件移到合适的目录中。
下例说明从pubs目录中恢复backup.example和junk文件的过程:
#cd /var/tmp
#ufsrestore if /dev/rmt/0
ufsrestore>;ls
:
lost+found/pubs/
ufsrestore>;cd pubs
ufsrestore>;ls
./pubs:
.Xauthority login
.profile backup.example%
.Xdefaults .mtdeletelog
wastebasket/ core
.cshrc openwin-init
junk/ dead.letter
desksetdefaults .openwin-init.Bak
backup.examples junk
usrestore>;add backupo.examples
ufsrestore>;add junk
ufsrestore>;setmodes
set owner/mode for "."?[yn]n
ufsrestore>;extract
you have not read any volumes yet
Unless you know which volume your file(s)are on you should start
with the last volume and work towards the first.
Specify next volume #:1
set owner/mode for "."?(yn)n
ufsrestore>;quit
#ls-1
total 6
drwxrwxrwt 3sys sys512 Mar 11 10:36./
drwxrwxr-x 18 oot sys512 Mar 10 16:43.
Drwxr-xr-x2 pubs staff 512 Mar 11 10: 11 pubs/
# pwd
# var/tmp
# cd pubs
# ls
./ ../ backup.examples junk
#
4.7.2.4从备份带中恢复单个文件( ufsrestore)
下面是从备份带上恢复单个文件的过程:
1、 进入超级用户;
2、 将备份带插入;
3、 键入cd /var/tmp进入/var/tmp目录下,如果要将备份文件恢复到不同的目录中,用相应的目录代替/var/tmp即可;
4、 键入ufsrestore xf /dev/rmt/ ,x任选项说明拷贝文件或目录时是否设置所有者/模式的信息;
5、 键入n,目录的模式保持不变;
6、 键入卷号,如果只有1卷,键入1,这时文件被恢复到当前工作目录中;
7、 键入ls –l 文件清单显示出来;
8、 用mv命令将文件移到合适的目录中。
第5章、管理网络服务
本章将介绍:检查远程系统状态、向远程系统注册(rlogin)、系统之间传送文件(rcp,ftp)、管理NIS+数据库(admintool)。
5.1检查远程系统状态
这一节说明显示远程系统状态的命令:rup、ping及rcpinfo –d。
5.1.1确定一个远程系统已运行了多长时间
命令rup告诉你系统运行的时间及平均负载。当键入这个命令时系统显示出主机名、运行时间及平均负载。
gtxa%rup ash
ash up 59 days,3:42,load average:0.12,0.12,0.01
gtxa%
如果在命令后面不跟随任选参数,还可以显示出子网上所有远程主机的一些信息,如果是以表的形式显示,则可以使用表中的任选项对输入分类。
表5.1 RUP命令的任选项
选项 功能
-h 按主机名字字母顺序分类显示
-l 按平均负载字母顺序分类显示
-t 按运行时间长短分类
下例说明,输出按主机名的字母顺序分类;
gtxa%rup -h
ash up 1 day,1:42,load average,0.00,0.31,0.34
elm up 14 days, 0 min, load average:0.07,0.01,0.00
maple up 32 days,14:39,load average:0.21,0.05.0.00
gtxa up 8 days, 15:44,load average.o.02,0.00.0.00
gtxa%
5.1.2确定一个远程系统是否在运行(ping\rup\rpcinfo-p)
下面的步骤判断一个远程系统是否在运行: *
键入ping ,回答信息" is alive"。意指这个系统在网络上是可以存取的,若出现信息"ping:unknown
host",指这个系统可能不存在,因为名字解析系统不能找到这个名字的机器。若出现信息"ping:no answer from
",指远程系统可能没有在运行。
*键入rup 显示系统运行时间及平均负载的信息。
*键入rpcinfo -p,显示服务的相关信息。
*键入rlogin ,注册到远程系统。
*以上以r开头的命令需要远程系统允许才可能得到相关信息。
openet%ping gtxa
gtxa is alive
openet%rup gtxa
gtxa up 3 days,15:10 load average:0.07,0.08.0.09
openet% rpcinfo-p gtxa
program vers proto port service
program vers proto port service
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100000 3 rcp 111 portmapper
100000 2 tcp 111 portmapper
100007 3 tcp 1029 ypbing
100007 3 udp 1025 tobind
100021 1 tcp 1030 nlockmgr
100021 1 udp 1026 mlockmgr
100024 1 tcp 1028 status
100024 1 udp 1027 status
100021 3 tcp 1030 nlockmgr
100021 3 udp 1026 nlockmgr
100020 2 tcp 4045 llockmgr
100020 2 udp 4045 llockmgr
10021 2 tcp 1030 nlockmgr
openet%rlogin gtxa
password
last login; Mon Mar 2 10 :31 56 from cinderella
openet%
还可以键ping 的命令格式,系统会显示信息"is alive",意指系统在网络上是可存取的。若显示信处息"ping:no answer
from,即意指网络上没有激活。或显示信息"ping:unreachable address from ....
",即意指这个系统在网络上可能不存在,因为没有路由可以到此地址。
gtxa%ping 129.144.52.199
129.144.52.199 is alive
gtxa% ping 129.144.52.200
unknown host 129.144.52.200
gtxa% ping 129.145.52.199
ping:no answer from 129.145.52.119
gtxa%
5.2注册到一个远程系统(rlogin)
下面是注册到远程系统的步骤:
1、键入rlogin <系统名>;,这时系统可能提示你键入口令。
2、如果你在想注册的那个系统上有一个本地帐号,则键入口令。否则,键入你NIS+口令。如果你在这上系统上有一个可存取的主目录,就注册进入到那个目录。否则只能注册到根(/)目录上。
gtxa%rlogin openet
password:
no directory:logging in with home=/
Last login:Tue Sep 17 13:54:28 from 119
sun microsystems,inc,sunos5.0 june 1992
openet%
5.3系统之间传送文件(rcp、ftp)
如果网络环境设置了automount,可以直接使用cp及mv命令在系统之间传送文件,但本节只讨论如何使用RCP及FTP命令在系统之间传送文件
5.3.1使用RCP命令
要使用远程拷贝命令从远程系统上传送文件到本地机器上,键入RCP <源PATHNAME>; <目标>;,如果你有存取这个远程系统的合法权限,那么,文件就拷贝到你指定的目标路径位置上。
下例说明,将文件quest从系统ash的/tp目录,拷贝到系统gtxa的当前工作目录中:
gtxa% rcp ash:/tmp/quest.
gtxa%
要从本地系统传送一个文件到远程系统,键入rcp ,如果你有存取远程系统权限的话,就将文件从本地系统拷贝到你指定的远程目标路径名中。
下例说明,将文件quest从系统gtxa的当前工作目录拷贝到系统openet的/tmp目录下:
gtxa%rcp quest openet:/tmp
gtxa%
如果需要改变文件名,可以将文件名作为目标中径名的一部分。例如,将文件quest改名为question,并将其放到/tmp目录中,则键入/tmp/question作为目标路径名。
5.3.2使用文件传送程序(ftp)
下面是使用文件传送程序从本地系统传送一个文件到远程系统的步骤。
注:要使用文件传送程序,可能需要在每个系统上有一个你的帐号,或在/.rhosts文件中有个入口,有些系统允许匿名登录是以anonymous或ftp作为注册名,并在口令提示时打入形如电子邮件地址的字符串。
如果有一个NIS或NIS+帐号,可以使用注册名及网络口令通过FTP存取远程系统。
1、 键入ftp命令,则FTP>;提示符显现
2、 键入open <远程系统名>;,系统显示连接信息,并请求用户输入用户名。
3、 键入远程系统上的用户名。
4、 系统请求你输入口令(如果无口令,也可能不出现)。
5、 键入口令(如果需要),系统注册信息及FTP>;提示出现。
6、
键入bin设置二进制格式,或asc设置ASCII格式,这个命令设置文件传送时的类型。bin格式传送时对文件不作任何更改。asc格式传送时,根据双
方系统的类型,自动将文件中的换行符更改为回车符和换行符(如果文件是从unix系统传送至DOS系统),或相反(如果从DOS系统传送到unix系
统),或不变(两端系统相同)。
7、 键入put <本地文件>; <目标文件>;,系统就显示文件传送信息并出现ftp>;提示。
8、 键入quit则goodbye信息及shell命令提示符出现
gtxa%ftp
ftp>;open elm
Connected to elm
220 elm FTP server(unix(r ) system v Release 4.0)ready.
Name(elm:testuser):testuser
331 Password required for testuser
Password:
230 User ignatz logged in .
ftp>;asc
ftp>;put quest/tmp/quest
200 PORT command successful.
150 ASCII data connection for /tmp/quest
(129. 144.52.199.1333)
226 Transfer complete
ftp>;quit
221 Goodbye.
gtxa%
可以使用send命令替代put命令,还可以使用mput命令拷贝多个文件,但没有msend命令,详细内容请见ftp(1)手册。注:你必须在对方系统上有一个帐号或对方系统允许匿名登录才能使用文件传送程序
如果你有一个NIS或NIS+帐号的话,你可以使用你的注册名及网络口令通过ftp存取远程系统。下面是使用文件传送程序将远程系统的文件传送到本地系统的步骤:
1、键入ftp命令,则ftp>;提示符出现
2、键入open<远程系统名>;,系统显示连接信息,并请求你的用户名
3、键入远程系统上你的用户名并按回车.如果需要口令的话,会请求你输入
4、如果需要,键入口令,系统显示注册信息及ftp>;提示
5、键入bin设置二进制格式,或asc设置ascii格式,这步设置文件类型
6、键入get <远程文件名>; <目标文件名>;并按回车,显示传送信息及ftp>;提示信息
7、键入quit,系统显示goodbye信息,退出ftp命令,重新显示shell提示符。
gtxa%ftp
ftp>;open clm
Connected to elm
220 elm FTP server (UNIX(r)system v Release 4.0) ready.
Name (elm;ignatz):ignatz
331 Password required for ignatz.
Password
230user ignatz logged in .
ftp>;asc
ftp>;get quest/tmp/quest
200 port command successful.
150 ASCII data connection for /tmp/quest
(129. 144.52.119.1333)
266 transfer complete.
Tp>;quit
221 Goodbye
gtxa%
注:可以使用mget命令拷贝多个文件,详细资料见ftp(1)手册