Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2460318
  • 博文数量: 367
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 3555
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-04 15:12
个人简介

MEI SHENME

文章分类

全部博文(367)

文章存档

2009年(2)

2008年(1)

2007年(2)

2006年(362)

我的朋友

分类:

2006-09-21 11:00:25

目 录
第1章、前言7
1.1了解超级用户状态8
1.1.1成为超级用户(su)9
1.1.2退出超级用户状态9
1.1.3以root注册9
1.2与用户通信9
1.2.1在注册时显示系统专用信息10
1.2.2将信息发送给单个用户10
1.2.2.1发送一个短消息给一个单独的用户10
1.2.2.2将作为一个文件的消息发给个别用户11
1.2.3将消息发送给一个系统或网络中的所有用户11
1.2.4通过电子邮件发送消息12
1.3启动和关闭系统12
1.3.1选择init状态12
1.3.1.1查看系统运行级13
1.3.1.2使用掉电状态,运行级013
1.3.1.3使用系统管理员状态,运行级113
1.3.1.4使用多用户状态,运行级213
1.3.1.5使用远程资源共享状态,运行级313
1.3.1.6使用替换多用户状态,运行级414
1.3.1.7使用交互重引导状态,运行级514
1.3.1.8使用重引导状态,运行级614
1.3.1.9使用单用户状态,运行级s或S14
1.3.1.10改变运行级14
1.3.2选择所用的关闭命令15
1.3.2.1 shutdown15
1.3.2.2 telinit和init15
1.3.2.3 halt15
1.3.2.4 reboot15
1.3.3 引导系统15
1.3.3.1 引导到多用户状态15
1.3.3.2 引导到单用户状态15
1.3.3.3交互式引导16
1.3.3.4查看引导信息17
1.3.3.5增加新的硬件后引导系统17
1.3.3.6退回引导进程18
1.3.4关闭系统18
1.3.4.1关闭一个多用户系统18
1.3.4.2关闭系统:可选方式19
1.4监视进程19
1.4.1 ps命令报告的内容20
1.4.2使用ps报告22
1.4.3杀死进程23
1.5基本管理工具24
1.5.1经常使用的命令24
1.5.1.1在文件系统中移动24
1.5.1.2查看在文件系统中所处的位置24
1.5.1.3改变目录24
1.5.1.4查看文件的有关信息24
1.5.1.5显示文件信息24
1.5.1.6查找一个文件25
1.5.1.7查看一个文件的类型25
1.5.1.8查看文件中的信息26
1.5.1.9查找文件中的字符串26
1.5.1.10查看文件27
1.5.1.11浏览文件27
1.5.1.12查看文件尾28
1.5.1.13查看文件头28
1.5.1.14改变文件的所有权和许可权29
1.5.1.15改变文件组30
1.5.1.16设置或显示系统环境30
1.5.1.17定义Bourne和Korn shell环境变量31
1.5.1.18定义C shell环境变量31
1.5.1.19显示环境变量的设置31
1.5.1.20使用PATH变量32
1.5.1.21设置Bourne和Korn shell路径32
1.5.1.22设置C shell路径32
1.5.2使用管理工具32
第2章、基本OS命令33
2.1查找用户信息33
2.1.1确定系统中有谁注册33
2.1.1.1使用who命令33
2.1.1.2使用finger命令33
2.1.1.3使用rusers -1命令33
2.1.1.4使用whodo命令34
2.1.2检查用户的用户号和组号(id命令)34
2.2查寻环境信息35
2.3创建和编辑文件35
2.3.1使用cat命令35
2.3.2使用touch命令36
2.3.3文件拷贝(cp)或改名(mv)36
2.3.4文本编辑器的使用36
2.3.5 vi的使用37
2.4命令组合及输出重新定向37
2.4.1在同一命令行里键入多个命令37
2.4.2输出重新定向(<>38
2.4.3组合命令(|)38
2.5使用手册38
2.5.1显示手册(man)39
2.5.2找命令节号(whatis、man)39
2.6查阅磁盘信息40
2.6.1显示磁盘空间的信息(df -k)40
2.6.2判别某文件系统是否为本地文件系统(df)40
2.6.3找出某种类型已安装的文件系统(df -F)40
第3章、设备管理42
3.1磁带的使用42
3.1.1磁带设备的命名习惯42
3.1.1.1使用缺省密度规定驱动器号43
3.1.1.2为磁带机指定密度43
3.1.1.3指定"不倒带"选项44
3.1.1.4不同磁带控制器和介质的设备名缩写44
3.1.1.5 1/2英寸卷绕式非SCSI内接(Rack mounted)磁带机44
3.1.1.6 1/4英寸SCSI盒式和1/2英寸前部装入的卷绕式磁带机45
3.1.1.7 螺线扫描磁带机45
3.1.2读写磁带的命令45
3.1.2.1拉紧磁带45
3.1.2.2倒带45
3.1.2.3列出磁带机状态46
3.2 磁带与软盘操作46
3.2.1 tar命令46
3.2.1.1向磁带写文件(tar)46
3.2.1.2列出磁带上的文件(tar)47
3.2.1.3向磁带上增加文件(tar)47
3.2.1.4从磁带中析取文件(tar)48
3.2.2cpio命令48
3.2.2.1将某目录下的所有文件拷入磁带(cpio)48
3.2.2.2列出磁带上的文件(cpio)49
3.2.2.3析取磁带上所有文件(cpio)49
3.2.2.4自磁带中析取个别文件(cpio)50
3.2.2.5软盘的使用50
3.2.3软驱设备名50
3.2.4ufs文件系统的软盘50
3.2.4.1格式化ufs软盘50
3.2.4.2自软驱中取出软盘51
3.2.4.3将ufs文件拷入单张格式化过软盘51
3.2.4.4列出软盘上的文件51
3.2.4.5向一个格式化好的软盘上附加文件(tar)52
3.2.4.6从软盘上拷出文件(tar)52
3.2.4.7自软盘上拷出bar格式的文件(cpio)53
3.2.5使用多张软盘存档53
3.2.5.1在软盘上创建一个ufs文件系统(newfs /dev/rdiskette)53
3.2.6pcfs(DOS)文件系统的软盘53
3.2.6.1 格式化pcfs(DOS)文件系统软盘54
3.2.6.2安装pcfs软盘54
3.2.6.3卸下pcfs软盘54
3.3硬盘命名管理54
3.3.1硬盘命名习惯54
3.3.1.1带有总线控制器的硬盘的使用55
3.3.1.2带有直接驱动器的硬盘的使用56
3.3.2检查硬盘使用状况56
3.3.3检查硬盘信息(Prtvtoc)57
3.3.3.1将文件存档58
3.3.3.2将硬盘上文件拷出58
3.3.3.3修复坏块58
3.3.3.4重新格式化硬盘58
3.3.3.5换下旧硬盘58
3.3.3.6加入错误表对硬盘进行格式化、分区及标记58
3.3.3.7重建文件系统(newfs)60
3.3.3.8在临时安装点安装文件系统(mount)61
3.3.3.9向文件系统转储文件(ufsrestore)61
3.3.3.10自临时装入点拆卸文件系统(umount)其方法如下:62
3.3.3.11检查文件系统的不一致性(fsck)62
3.3.3.12对恢复文件系统做0级备份62
3.3.3.13在永久安装点安装文件系统(mount)62
第4章、文件系统管理63
4.1文件系统类型63
4.1.1磁盘文件系统63
4.1.2网络文件系统64
4.1.3伪文件系统64
4.1.3.1临时文件系统(tmpfs)64
4.1.3.2循环文件系统(lofs)65
4.1.3.3进程文件系统(procfs)65
4.1.3.4别的伪文件系统66
4.2 SunOS 5.x缺省的文件系统66
4.3虚拟文件系统表(/etc/vfstab)66
4.3.1 文件系统表项的建立68
4.4文件管理命令69
4.4.1普通命令语法规则69
4.4.2普通文件系统命令和特别文件系统命令手册70
4.4.3利用文件系统命令确定文件系统类型70
4.4.4文件系统类型70
4.5如何使文件系统有效71
4.5.1安装与拆卸72
4.5.1.1安装与拆卸文件系统命令73
4.5.1.2查找已安装的文件系统73
4.5.1.3安装/etc/vfstab文件中的全部文件系统73
4.5.1.4安装特定类型的文件系统74
4.5.1.5安装单个文件系统(mount)74
4.5.1.6拆卸所有的远程文件系统(umountall -F nfs)74
4.5.1.7拆卸个别的文件系统(umount)74
4.5.2自动安装程序75
4.5.3共享服务器文件76
4.6检查文件系统的数据一致性(fsck)76
4.6.1决定文件系统是否需检测77
4.6.2以交互方式检测文件系统77
4.7备份和恢复文件系统78
4.7.1用QIC-150盒式磁带备份文件系统(ufsdump)78
4.7.1.1实现增量备份79
4.7.2恢复备份文件系统80
4.7.2.1决定使用哪一备份带80
4.7.2.2恢复全部备份80
4.7.2.3交互式恢复文件81
4.7.2.4从备份带中恢复单个文件( ufsrestore)83
第5章、管理网络服务84
5.1检查远程系统状态84
5.1.1确定一个远程系统已运行了多长时间84
5.1.2确定一个远程系统是否在运行(ping\rup\rpcinfo-p)84
5.2注册到一个远程系统(rlogin)86
5.3系统之间传送文件(rcp、ftp)86
5.3.1使用RCP命令86
5.3.2使用文件传送程序(ftp)86
第6章、管理用户帐号和用户组89
6.1增加和管理用户帐号89
6.1.1增加用户帐号89
6.1.1.1编辑Passwd数据库89
6.1.1.2定义用户组91
6.1.1.3建立主目录(home director)92
6.1.1.4自动安装目录94
6.1.1.5用nfs安装主目录94
6.1.1.7定义初化文件95
6.1.1.8建立用户的邮件帐号98
6.1.1.9建立口令99
6.1.2管理用户帐号99
6.1.2.1修改用户帐号100
6.1.2.2取消用户帐号100
6.1.2.3冻结用户帐号100
6.2设置和管理用户组100
6.2.1设置Group数据库中的域值101
6.2.1.1设置组名(Group Name)域101
6.2.1.2设置Group ID域101
6.2.1.3设置成员表域101
6.2.2建立缺省的UNIX用户组101
6.2.3建立新的组102
6.2.4修改或删除用户组102
6.2.4.1修改某个组103
6.2.4.2删除某个组103
第7章、UNIX的shell命令104
7.1各种shell的公共命令104
7.1.1设置某种缺省shell104
7.1.2在命令行中改变shell类型(sh,csh,ksh)105
7.1.3从shell解释器中退出(exit)105
7.1.4清除一个shell窗口(clear)105
7.2标准shell105
7.2.1标准shell的初始文件106
7.2.2定义标准shell的环境变量106
7.3 C shell106
7.3.1C shell的初始文件106
7.3.2C shell环境变量的定义106
7.3.3建立C shell的别名106
7.3.4设置C shell的历史功能107
7.3.5使用C shell历史功能107
7.3.6设置C shell的退格键(stty erase)109
7.3.7新命令的嵌入109
7.3.8Cshell历史命令的编辑109
7.4 Korn shell110
7.4.1Korn shell的初始化文件110
7.4.2Korn shell的选择项110
7.4.3创建Korn shell的别名112
7.4.4用Korn shell的联机编辑器编辑命令113
7.4.5设置Korn shell的历史114
7.4.6显示Korn shell的历史命令114
7.4.7使用Korn shell的历史命令115
7.4.8编辑Korn shell的历史命令115
第8章、管理系统116
8.1显示系统专有信息116
8.1.1确定主机ID号(sysdef -h)116
8.1.2确定硬件类型(uname -m)116
8.1.3确定处理机类型(uname -p)116
8.1.4确定OS版本号(uname -r)116
8.1.5显示系统配置信息(prtconf)116
8.1.6确定系统已经运行了多长时间118
8.1.7确定系统的日期和时间(date)118
8.1.8设置系统的日期和时间118
8.1.9改变系统的时区(/etc/TIMEZONE)119
8.2配置附加的交换空间(mkfile,swap)120
8.3创建一个本地邮件别名(/etc/mail/aliases)121
第9章、文件存取问题分析122
9.1 诊断与查找路径有关的问题122
9.1.1显示当前查找路径122
9.1.2为Bourne和Korn shells设置路径122
9.1.3Source Bourne和Korn shell的初始化文件122
9.1.4为C shell设置路径123
9.1.5Source C shell初始化文件123
9.1.6检查当前的查找路径123
9.1.7执行一个命令123
9.2分析与权限和所有权有关的问题123
9.2.1改变文件的所有权124
9.2.2改变文件的权限124
9.2.3改变文件组的所有权125


第1章、前言
本手册主要供Solaris系统管理员使用,所提供的内容包含SUN OS操作系统系统的安装、环境的建立及重要文件的创建,以及系统管理员在网络系统环境下如何建立、维护、管理网络系统下的工作环境,还包括系统管理的日常使用命令、主要命令、文件的索引等。
本章将介绍:系统管理员的职责、了解超级用户状态、如何与用户通信、启动和关闭系统、进程管理、基本管理工具。
SunOS 5.x操作系统,是Sun公司所推出的Solaris 2.x软件系统环境的主要组成部份,Solaris 2.x可运行于SPARC和Intel硬件平台,是一个支持对称式多处理机的UNIX系统环境。
系统管理员的职责
系统管理员的职责是确保一个独立(Standalone)系统或网络上的一组系统能正常运行(主要指软件)。 不同领域的系统管理员,其责任也不相同,一个系统管理员可能在一个或多个领域是专家,而在别的领域却显生疏。
下面列出本手册所描述的系统管理员的工作:
1、 管理设备
*磁带机的使用
*格式化磁盘
*监视盘的使用
2、 了解服务访问机制
*建立一个双向调制解调器(modem)
3、 管理文件系统
*安装或拆卸文件系统
*备份和恢复文件或文件系统
4、 管理网络服务
*查找网络信息
*系统间传送文件
*管理NIS+数据库
5、 管理打印服务
*设置一个打印客户和打印服务器
*使用打印命令
6、 管理用户和用户组
*增加用户
*删除用户
*改变用户信息
*建立新组帐号
7、 了解shell
*使用Generic shell命令
*使用Bourne shell命令
*使用C Shell命令
*使用Korn shell命令
8、 管理系统
*查找系统信息
*建立局部邮件别名
*配置额外的交换空间(swap space)
*管理系统日期和时间
*识别文件存取故障
*搜索路径的问题
*存取权和所有权问题
*网络存取问题
*获得存取全部文件系统和资源的权限
*与用户通信
*关闭和启动系统
*监视进程

本手册的章节按照以上给出的标题顺序安排,你还必须了解何时及如何进行如下管理工作: (本手册不包含如下系统管理工作:安装系统软件、安装第三厂家软件、建立和管理网络服务、建立和管理邮件服务、扩充和删除硬件、管理安全性和记帐、监视系统和网络性能。)这章其余部分将描述如何完成系统管理员的工作,并介绍一些基本命令和管理工具。
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.

INIT: New run level S
INIT: SINGLE USER MODE
Type: Ctrl-d to proceed with normal start-up,
(or give root password for system maintenance):
1.3.4.2关闭系统:可选方式
如果想改变shutdown命令的缺省功能,选择以下所述的六种方式之一来完成。
1、 在不确认的情况下关闭系统:
*变成超级用户
*键入cd /,必须在root目录下运行shutdown命令。
*键入shutdown等待时间(Grace Period)
2、 为了改变shutdown等待时间(Grace Period),用以下几步:
*变成超级用户。
*键入cd /,必须在root目录下运行shutdown命令。
*键入shutdown -t .系统在等待用户确定的秒数后关闭。
*下面是改变等待时间(Grace Period)例子:
# cd /
# shutdown -g 120
3、 关闭且重新引导多用户系统
*变成超级用户。
*键入cd /, 必须在root目录下运行shutdown命令。
*键入shutdown -i6 将一条消息发送给所有的用户且执行re6 shell程序;系统关闭为掉电状态,然后恢复到多用户状态。
4、 关闭单用户系统
要关闭一个单用户系统,键入telinit 0(或init 0)命令运行shell程序使系统很快地关闭,没有警告信息。
5、 关闭且重新引导单用户系统
要关闭且重新引导单用户系统,键入telinit 6 (或init 6)。此时系统信息写到硬盘上,杀死所有的活动进程且系统回到掉电状态。系统再重新引导到缺省级(通常是多用户级)。
6、 紧急关闭系统
要紧急关闭一个系统,键入uadmin 2 0. 将系统信息写到硬盘上,系统回到掉电状态,且显示PROM提示。
1.4监视进程
某一时刻在系统中运行的程序称为进程。用户可以监视进程的状态,控制一个进程获得的CPU时间,挂起或终止一个进程的执行。
ps命令是获得进程信息的主要工具。可以用ps和grep命令查寻所需要的信息,可以确定哪些进程正在(或没有)运行,而且可以获得一个进程的详细信息,这些信息包括:
*PID<进程ID>;
*UID<用户ID>;
*优先级
*控制终端
*存贮器的使用
*CPU时间
*当前状态
ps命令反映的是命令被键入时的系统状态,因此当你正在监视系统时间的活动情况时,必须明白当你读结果时它们已经有点过时,表1.2列出了ps(1)手册。
表1.2  ps 命令最常用的选择项目
可选项说明
-e 报告所有的进程
-l 生成一个长报告,此报告中包括除STIME之外的所有域。
-f 显示进程启动程序的全路径名
1.4.1 ps命令报告的内容
当键入ps-e时,可获得如下所示的信息
gtxa% /usr/bin/ps -e
PID TTY TIME COMD
0 ? 0:02 sched
1 ? 0:01 init
2 ? 0:00 pageout
192 ? 0:00 sac
79 ? 0:10 inetd
75 ? 0:01 in route
136 ? 0:04 automoun
143 ? 0:01 crom
123 ? 0:01 statd
104 ? 0:01 rpcbind
106 ? 0:01 rpc. rwal
108 ? 0:01 rpc. ruse
110 ? 0:01 rpc. spra
113 ? 0:01 ypbind
115 ? 0:00 keyserv
117 ? 0:01 kerbd
127 ? 0:02 lockd
251 pts/0 0:00 ps
165 ? 0:00 scndmail
193 ? 0:01 ttymon
174 ? 0:03 sysylogd
156 ? 0:01 lpsched
209 ? 0:02 in rlogi
211 pts/0 0:03 csh
164 ? 0:00 lpNet
gtxa%
各栏内容说明如下:
*PID: 进程标识号
*TTY: 启动此进程(或其父进程)的终端。如果进程没有控制终端这一栏显示一个问号<?>;──显示问号的进程常常是系统进程。
*TIME: 进程所用的CPU时间
*COMD: 产生此进程的命令名,注意:ps-e 命令仅显示出文件名的头八个字符。
当键入ps -el时,可看到如下的显示内容:
gtxa% /usr/bin/ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME COMD
19 T 0 0 0 80 O SY f010f1c8 0 ? 0:02 sched
8 S 0 1 0 251 0 20 fflad800 48 fflad9c4 ? 0:01 init
19 S 0 2 0 0 0 SY fflad000 0 fflad07d ? 0:00 pageout
8 S 0 192 1 49 1 20 ff1f7000 238 ff2de348 ? 0:00 sac
8 S 0 79 1 80 1 20 ff232800 258 f010fla4 ? 0:10 inetd
8 S 0 75 1 80 1 20 ff249000 327 ff2de448 ? 0:01 in route
8 S 0 136 1 80 1 20 ff2c3000 287 f010fla4 ? 0:04 automoun
8 S 0 143 1 80 1 20 ff293000 270 f010fla4 ? 0:01 cron
8 S 0 123 1 49 1 20 ff28e800 258 f010fia4 ? 0:01 statd
8 S 0 104 1 80 1 20 ff25a000 301 f010fla8 ? 0:01 rpcbind
8 S 0 106 1 77 1 20 ff258800 272 f010fia4 ? 0:01 rpc.rwal
8 S 0 108 1 80 1 20 ff260800 272 f010dla4 ? 0:01 rpc.ruse
8 S 0 110 1 78 1 20 ff266800 272 f010fla4 ? 0: 01 rpc. spra

表1.3是ps -el长报告中各域的说明表
域说明
F 十六进制标示,加在一起表示进程目前的状态
     00进程已经终止,它对应的进程表项已空
     01此进程是一个进程且总是在内存中
     02此进程正被它的父进程跟踪
     04此进程在被它的父进程跟踪,且已经停止运行
     08此进程不能用信号激活
     10进程正在内存中且在一个文件完成之前被锁住
     20此进程不可换出
S 进程的当前状态,由下列字母之一表示:
     O正在处理器上运行
     S睡眠;等待IO事件完成
     R运行就绪。
     I空闲状态,进程正在创建
     Z僵尸状态;进程已经终止且父进程不再等待,但此死进程仍留在进程表中。
     T因父进程正在跟踪它而停止执行
     X等待获得更多的内存
UID 进程所有者的用户ID号
PID 进程标识号
PPID 父进程的标识号
C 进程所用的CPU时间(该进程所用CPU时间的百分比估计值)
PRI 进程调度优先级,数字越大表示优先级越低
NI 进程的nice数,影响其调度优先级,提高进程的nice数意味着降低其优先级、使用更少的CPU时间
SZ 进程所需虚存数量,它很好地表示出进程对系统存贮器的要求。
TTY 启动此进程(或父进程)的终端,或者是“?”表示无控制终端(通常表示系统进程)。
TIME 进程从启始到目前所使用的CPU时间总和
COMD 产生此进程的命令。
1.4.2使用ps报告
当需要哪些进程或系统管理进程正在运行时,使用ps -e选择项,如果还想得到过程的更详细信息,用ps -el选择项。各选择项的详细说明参考ps(1)命令手册。
下面是如何发现潜在问题的指南:
*查看有没有由同一用户所有的相同作业,若有,这可能是由于某用户运行了启动一组后台作业的shell程序,但没有等待作业终止,找用户谈谈,看是否是这种情况,如果必要,用kill命令杀死其中一些进程,有关杀死一个进程的详细介绍参见后面几节。
*查看TIME域,看哪些进程占用了大量的CPU时间,这样的进程可能导致死循环。
*查看C域,找出占用大量CPU时间且不重要的进程,如果认为此进程确实不值占用如此多的CPU时间,可以用priocntl命令降低它的优先级,有关priocntl命令的详细信息,参考prioentl(1)手册。
*查看SZ域,找出占用太大内存的进程。如果某个进程占用了过于大的内存,将它杀死,如果系统中有许多进程都需要大量内存,则可能需要扩充内存。
*查找占用CPU时间越来越多的失控进程,可以用带-f可选项的ps命令查看其超始时间(STIME),也可直接看其TIME域所指的CPU累计时间。
1.4.3杀死进程
有时用户需要彻底地消除一个进程,这时用kill命令,kill命令的格式为kill-,此处是一个数或一个名称。
注意:仅当进程不能正常退出时用kill命令。
有时用kill命令后进程仍未死掉,最常见的三种情况:
;进程退出前正在等待一个设备(如磁带机)完成某种操作。
;进程正在等待由于nfs出现问题而无效的资源,在这种情况应该用kill-QUIT命令来杀死一个进程。
;进程处于僵尸态,正如ps报告的消息所显示,僵尸进程已经释放了它所占资源,但还没有接收到父进程的回应,一般接收到回应后删除对应的进程表项,在下次启动系统时,僵尸进程被消除,僵尸(Zombies)进程不影响系统性能,所以用户不必删除它们。
要杀死一个进程:
1、 变成超级用户,要杀死一个非你拥有的进程,你必须成为超级用户。
2、 键入ps -e,将显示出一组进程,使用第一栏的PID(进程ID)号作为下一步的输入,如果你知道是哪个进程出了问题,则可以键入:
ps -e | grep 来找到其进程ID
3、 键入kill-15 ,若仅键入kill,无参数,则缺省的信号是15。
4、 键入ps -e,检查进程是否已经终止,如果进程还存在,则到第5步。
5、 键入kill-9 ,这个进程应该被终止。 键入man -s5 signal,查看kill所使用的信号描述。
例如:如果gtxa系统上的Open Windows 死了,你必须从另一个系统远程注册来杀死此进程。
elm% rlogin gtxa
Password:
gtxa% ps-e │ grep openwin
PID TTY TIME COMD
2212 pts/0 0:00 openwin
2213 pts/1 0:00 grep openwin
gtxa # kill 2212
gtxa # exit
gtxa% logout
elm%
1.5基本管理工具
Solaris系统软件提供以下两种管理工具:
*一组通用的操作系统命令
*具有图形用户接口的管理工具(Administration Tool)。
1.5.1经常使用的命令
下面几节简单地介绍基本的Solaris命令,你很可能会使用它们作为系统管理例程的一部分,更详细的介绍参见第二章中的“Basic OS Commands”及附录A列出的SunOS 4.x命令与SunOS 5.x命令的对照表。
1.5.1.1在文件系统中移动
Solaris系统软件是有一个层次结构的文件系统,当管理系统时,你需要了解目前处于文件系统的哪个位置、如何转到不同的目录。
1.5.1.2查看在文件系统中所处的位置
要知道目前处于文件系统的哪一层,键入pwd。pwd(打印工作目录)命令显示当前目录:
gtxa&pwd
/etc
gtxa%
1.5.1.3改变目录
要改变目录,键入cd 。cd(改变目录)命令使你进入所键入的目录中:
gtxa% cd /usr
gtxa%% pwd
/usr
gtxa%
如果仅键入cd而没键入路径名,你就返回注册目录下。
1.5.1.4查看文件的有关信息
用ls命令可以显示目录内容以及文件的许可权、符号链、所有者、组、文件长度(字节数)、修改日期及时间和文件名,许多用户存取文件出错的原因,追根底在于拥有不正确的许可权或所有权,有关此类问题的详细说明见第10章“识别文件存取问题”。
1.5.1.5显示文件信息
要显示某个文件的有关信息,键入ls -1 ,则显示许可权、符号链、所有者、组、文件长度(字节数)、修改日期及时间和文件名。
要看目录中的全部文件,键入ls -1a,有关ls的选择项清单可参见命令手册。
gtxa% ls -1 /etc/passed
-r--r--r--lrootsys659 Feb 24 17:28/etc/passed
gtxa%
1.5.1.6查找一个文件
要从根目录开始搜索寻找到一个文件, 就键入find $HOME -name -print. $HOME变量表示查找从根目录开始。 -name选项表示要查找指定的文件名,-print 选项要求显示出查找的结果。如果没找到中指定的文件则系统回到提示符状态。
下面例子是查找文件core:
gtxa% find $HOME -name core -print
/home/ignatz/core
gtxa%
表1.4 find命令的可选项
可选项 说明
-fstype 查找指定类型的文件系统,通常用ufs或nfs中的文件
-prune 限制搜索到指定的目录
-nouser 查找不属于/etc/passwd中用户的文件
-nogroup 查找不属于/etc/group中组的文件
-atime 查找在最后天被存取过的文件
-mtime 查找在最后天被修改过的文件
-ctime 查找在最后天被改变过的文件, 这种改变包括改变文件的属性。如链接数、所有者或组
-Xdev 限制只对一个文件系统搜索
有关find命令可选项的完整说明见find(1)。
1.5.1.7查看一个文件的类型
某些情况下需要确定一个文件的类型,如要查看一个文件的类型,则键入file 。输出结果是指定文件的文件类型。
例如:如果一个用户试图执行一个无执行许可权的ASCII 文件或空文件,查看文件的类型可以得知此文件是ASCII 文件或空文件而不能执行。
以下是空文件的例子:
gtxa% file junk
junk: empty file
gtxa%
以下是ASCII文件的例子:
gtxa% file junk
junk: ascii text
gtxa%
以下例子中,文件是具有可执行许可权的文本文件,所以file命令报告该文件可执行,且是文本文件。
gtxa%chmod 777 junk
gtxa% file junk
junk: commands text
gtxa%
你也可以用ls -1命令来查看某文件是否有执行许可权。
可以用file *命令查看一个目录中全部文件的类型。文件按字母顺序列出,后面跟文件类型:
gtxa% file *
coterie: directory
course: ascil text
dead. letter ascii text
ksyms English text
people: directory
personal: directory
showrev: ascii text
status: directory
text: directory
toodo: ascii text
gtxa%
1.5.1.8查看文件中的信息
用grep和egrep命令可查找文件或命令输出的某些特定信息。
1.5.1.9查找文件中的字符串
键入grep 可查找文件中的指定字符串,且显示文件可包含该字符串的行。
例如:查找passwd文件中包含csh的行:
gtxa% grep csh /etc/passwd
ignatz: 6693: 10:Ignatz 64607:/home/ignatz: /bin/csh
fred: 14072:10:Fred Lux:/home//home/fred:/vin/csh
gtxa%
同时查找多个文件的方法是:在命令中输入多个文件名,它们之间以空格分开;或者用无字符代文件名(或与文件名一起使用)。
为显示出不包含某字符串的行,可以键入grep -v 。
查找具有某种模式的输入行,可以将grep以管道的方式与许多管理命令结合起来使用。
例如:要查找某一用户当前的全部进程,可以将ps命令和grep结合起来使用,并查找该用户名,键入ps -e│grep 。即显示该用户名的清单。可用下面的命令查找Open Windows的全部进程:
gtxa%ps -e │grep openwin
PID TTY TIME COMD
2212 pts/0 0:00 openwin
gtxa%
1.5.1.10查看文件
毫无疑问,人们要花很时间查看文件的内容,需要查看整个文件时可以用more命令,当只需看文件尾的内容时(如日志(log)文件),可用tail命令来显示文件的最后10行,当重要信息在文件头时,可用head命令显示文件的前10行。
1.5.1.11浏览文件
可以键入more 来浏览文件,文件一次只显示一屏,按空格键显示下一屏。当你用more浏览文件时,若想查找文件中的某个字符串,可以键入/。屏幕滚到你要查找的字符串的位置, 并在窗口顶部显示要找的字符串的“... skippin”信息。如果未找到,则屏幕不滚动并显示出“Pattern not found”。
例如:要查找/etc/mail/aliasses文件中的Local aliases串, 可键入/Local aliases.
/Local aliases
... skipping

# # # # # # # # # # # #
# Local aliases below #
# # # # # # # # # # # #
注意:在more命令中一定要用正确的大小写字母。上例中,如果你键入了/local aliases,则会告诉你没有找到。
为了查找下一个匹配的字符串,键入n。键入q退出more命令,显示shell 提示符。
为显示shell intr 字符,可键入stty -a,就显示stty的设备清单,下列中:^h(退格键)是删除字符:
gtxa%
speed 9600 bau;
rows=35; columns=80; ypixel =9; xpixels=0;
eucw 1:0:0:0, scrw 1:0:0:0
intr=^c;quit=^│; erase=^?;kill=^u
eof=^d; eol+^; eo12=;swtch=;
start=^d; stop =^s;susp=^z;dsusp=^y;
rprnt=^r; flush =^o; werase=^w; lnext =^V;
parenb-parodd cs-cstopb hupcl cread-clocal -loolk -
crtscts-parext
-ingbrk btkint ignpar-parmrk-inpck istrip -inncr -
igncr icrnl-iucle
ixon-ixany-ixoff imaxbel
isig icanon-xcase echo echoe echok-echonl-noflsh
-tostop echoctl -echoprt echoke -defecho -flusho -
pendin inxten
opost-olcuc onler -onocr -ofill-ofdel
1.5.1.12查看文件尾
若要查看文件尾,键入tail , 显示出文件的最后10行(缺省情况),下例显示了/etc/lp/system文件尾:
gtxa% /usr/bin/tail /etc/lp/system
#
# Kepler:-: s5: -:n:10:-:-:SVR4.0 OS
# fubar:-bsd:10:n-:-:BSD OS
# Galialeo:-:s5:-30:10-:-:
# # # # #

billboard-:bsd:-:n:10:-:-:
homeboyl-:s5:-:n:10-:-:
regal:-:s5:-:n:10-:-:
mrplod:-:s5:-:n:10:-:-:
gtxa%
缺省时,head和tail命令显示10行,可靠用-n任项来控制显示行数,用你要显示的行数代替n。例如:要显示最后20行, 可键入tail -20 。
注意:tail命令最多能显示4096字节(大约400行)。
1.5.1.13查看文件头
若要查看文件头,可键入head这时显示出头10行
下例中显示/etc/password文件:
gtxa% /usr/bin/head /etc/pased
rood:0:1:0000-Admin(0000):/:sbin/sh
daemon:1:1:0000-Admin(0000):/:
bin:2:2:0000-Admin(0000):/var/adm:
sys:x:3:3:0000-Admin(0000):/:
adm:x:4:4:0000-Admin(0000):/var/adm:
lp:x:71:8:0000-lp(0000):/usr/spool/lp:
smtp:x:0:0:mail daemon user:/:
uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:
nuucp:x:9:9:0000-
uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:
gtxa%
1.5.1.14改变文件的所有权和许可权
用户的许多问题可能是由文件的所有权和许可权问题产生的,用ls命令可查看文件的所有权和许可权,如果要改变它们,可用:chown、chmod和chgrp命令。
*改变文件所有权
你必须拥有一个文件或目录(或者你是超级用户)你才能成为属主
1>;键入ls -1 。文件的属主显示在第三列中
2>;进入超级用户
3>;键入chown . 所有权按赋予指定的新属主文件。
gtxa% ls -1 quest
-rw-r--r--1fred staff 6023 Aug5 12:06 quest
gtxa% su
Password:
# chown ignarz quest
# ls-1 quest
-rw-r--r--lignatzataff6023 Aug5 12:06 quest
#
更详细的介绍请参见第10章。
* 改变文件的许可权
表1.5列出的设置文件许可权的8进制值。可以用三个这样的数来分别设置属主、组和其它用户的许可权。例如:644 说明属主有读/写权限,同组用户和其它用户有只读权限。

表1.5 文件权限的八进制值
值 说明
0 无权限
1 只可执行
2 只可写
3 可写、可执行
4 只读
5 可读、可执行
6 可读、可写
7 可读、写、执行

1>;键入ls -1 。列表显示出文件当前的权限。
2>;键入chmod 。改变文件的权限变为你指定的值。
注意:可以用元字符(如* ?)替换文件名,或与它们一起使用来更改多个文件或一个目录中所有文件的权限。
下例中,将一个文件权从666改为644。
gtxa% ls - 1 quest
-rw-rw-rw-lignatzstaff 6023 Aug5 12:06 quest
gtxa% chmod 644 quest
gtxa%ls -1 quest
-rw-r--r--lignatzstaff6023 Aug5 12:06 quest
gtxa%
1.5.1.15改变文件组
若要改变文件组,键入chgrp 。改变指定文件的组ID
$ls -lg junk
-rw-r--r--l other 0 Oct 31 14:49 junk
$chgrp 10 junk
$ls -lg junk
-rw-r--r--l ataff 0 Oct 31 14:49 junk

组ID号在Group数据库或本地/etc/group文件中定义, 关于组的详细信息请参见第7章。
1.5.1.16设置或显示系统环境
shell使用shell初始化文件中给出的一组说明来维护环境,用户也可以直接发命令给shell来修改shell从环境变量中得到有关环境的信息。Solaris系统软件提供7个缺省的环境变量。
*PSI:定义shell提示符。Bourne和Korn shell的缺省提示符是$。C shell的缺省提示符是%,任何shell中root的缺省提示符皆是#。用户可以在.profile,.login 或.cshrc 文件中下义不同的shell提示符。
*HOME:定义用户主目录的绝对路径。作为注册进程的一部分,自动定义HOME的缺省值,并且设置为/etc/passwd 文件中说明的注册目录。当键入cd命令且无参数时,shell转到HOME 变量所确定的目录之下。
*LOGNAME:定义用户的注册名。作为注册进程的一部分,LOGNAME的缺省值被自动定义且设置为/etc/passwd文件中说明的注册名。
*PATH:列出一组目录。当用户敲入命令后,shell 按顺序从这些目录中查找要执行的程序。如果一个命令所在的目录不在该查找路径中,则用户必须键入该命令的全部路径。做为注册进程的一部分,PATH的缺省值是按.profile(Bourne和Korn shell)或.cshrc(C shell)文件中的说明设置。查找路径的顺序是非常重要的。当同名的命令在不同的目录存在时,执行的是第一个找到的命令。例如:假设PATH(以Bourne 和Korn shell方式)定义为PATH =/bin:/usr/bin/:usr/sbin:$HOME/bin,在usr/bin和/home/jean/bin目录中均有名为sample的程序,当用户不键入路径,而只是键入sample命令时,则执行/usr/bin目录中的sample程序。
其它环境变量包括:
*LPDEST:设置用户的缺省打印机
*OPENWINHOME:设置Open Wimdows可执行码的路径
*DESKSET:设置DESKSET的可执码的路径
*LANG:设置本地语言,可能值是:english、japanese、German、French、Swedish和Italian等
*HZ:设置Borne和Korn shell的历史
*TZ:设置时区
*SHELL:设置make,vi或其它工具所使用的缺省shell
*MAIL:告诉shell到哪去查找新的邮件
*MANSECTS:设置手册的有效章节
用户和系统管理员可另外定义自己使用的环境变量,当用户从shell命令中定义环境变量时,只要用户不退出shell,则定义的环境变量就一直起作用。退shell,则不再起作用。可将“永久”环境变量存在.profile、.login或.cshrc文件中,定义环境变量的语法依不同的shell而不同。
1.5.1.17定义Bourne和Korn shell环境变量
若要定义Bourne和Korn shell环境变量,键入=;export .
$HZ=100;export HZ

1.5.1.18定义C shell环境变量
若定义C shell 环境变量,键入setenv .
%setenv DISLAY rogue:0

1.5.1.19显示环境变量的设置
若要显示出当前的环境变量设置,键入env。
$env
HOME=/home/irving
HZ=100
LOGNAME=irving
MAIL=/var/mail/irving
MANSECTS=\1:1m:1c:1f:1s:1b;2\3:3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:9:4:5:7:8
PATH=/usr/bin
SHELL=/bin/sh
TERM=sun
TZ=ESTS5EDT

1.5.1.20使用PATH变量
PATH环境变量是非常重要的。当用户执行一个带有全路径名的命令,shell按给定的全路径名去查找命令,当用户只给出命令名时,shell就按PATH环境变量给定的路径顺序去查找目录,若在某一目录中找到该命令时,就执行它。
缺省的根PATH(sbin:/usr/sbin:/usr/bin:/etc)是由系统设置的,但许多用户还在上面添加一些别的命令目录,用户的许多问题,如有关设置环境使用命令或工具的不正确版本等,常常是由于路径设置不正确所产生的。
1.5.1.21设置Bourne和Korn shell路径
Bourne与Korn shell的路径是在用户的$HOME/.profile 文件中如下设置的:
PATH=.:/usr/bin:/$HOME/bin
1.5.1.22设置C shell路径
C shell的路径是在用户的$HOME/.cshrc 文件如下设置的:
set path=(./usr/bin $ home/bin)
更详细说明请参阅有关手册和第10章。
1.5.2使用管理工具
管理工具是Open Windows的一个具有图形用户接口的工具。它用来管理主机系统和/etc下的17个数据库。使用这一管理工具可以管理用户和组,可以管理NIS+数据库和本地/etc目录下的文件。


第2章、基本OS命令
本章将介绍:查找用户信息、查找环境信息、创建和编辑文件、命令组合和输出定向、使用手册、查找硬盘信息 。
本章解释基本的操作系统命令,提供查找有关用户和系统环境信息的方法,同时讲述建立和编辑文件、命令组合、输入重定向,显示手册以及查寻基本磁盘信息的各种方法。
2.1查找用户信息
在管理系统时,经常需要知道谁在使用系统及他们在做些什么。本节描述了解用户信息的命令:who、finger、rusers -1、whodo、id等。
2.1.1确定系统中有谁注册
(who、finger、rusers -1、whodo、id)可以使用上述四个命令之中的一个来发现谁注册进入系统。每个命令还显示各种不同附加信息。
2.1.1.1使用who命令
who命令显示注册进入系统的用户名单,注册的tty端口,以及日期和时间,如果某用户是远程注册的,那么本命令还显示该用户的远程系统名,使用who命令的方法是:键入who。
在下例中,用户irving是远程注册的,用户ignatz是系统gtxa 的本地用户。
gtxa% who
irving pts/1 Oct 31 14:33(elm)
ignatz console Oct 31 12:22
gtxa%
2.1.1.2使用finger命令
finger命令显示注册进入系统的用户注册名,同时显示用户全名(取名/etc/passwd文件对应项的information域),tty端口,星期几,注册时间,如果是远程注册的用户,还显示远程系统名。使用finger命令的方法是:键入finger
在这个例子里,用户winsor从系统castle远程注册
gtxa%flogin @openet
openet%finger
Login Name TTY Idle When Where
Winsor Janice Winsor pts/0 11 Thu 09:59 castle
gtxa%
2.1.1.3使用rusers -1命令
rusers -1(远程用户注册)命令,显示从远程系统注册的用户名清单,同时显示用户注册的系统名,tty端口,日期,登录时间以及空闲时间(idle time)。如果主机不空闲,那么最后一列不显示,使用本命令的方法是:键入rusers-1后再回车。
gtxa%rusers -1
Sending Broadcast for rusersd protocol version 3...
Sending Broadcast for rusersd protocol version 2...
jah caps:consloe Mar 3 13:03 22:03
amber facehole: console Mar 2 07:40
sebree ondine: consloe Mar 2 10:35 14
tut cairo: consloe Mar 2 16:48
jrt cairo: ttyp5 Mar 2 16:20 47:54(gap)
ramseyis mowthelawn: consloe Mar 2 16:33 28
ramseyis mowthelawn: ttpy6 Mar 3 14:20 25:14
(:0.0)
(More logins not shown)
gtxa%
2.1.1.4使用whodo命令
whodo命令显示日期、时间和系统名。它为每一个注册的用户显示设备名、UID、注册时间以及一个与此UID相联系的活动进程表。此表的内容包含设备名、PID、使用的CPU时间(分、秒)以及进程名。
键入Whodo,可以看到谁注册了,以及注册者在做什么。
gtxa%whodo
Tue Mar 12 15:483 1992
SunOs
tty09 men 8:51
tty09 28158 0:9sh
tty52 bdr 15:23
tty52 21688 0:05sh
tty52 22788 0:01whodo
tty52 22017 0:03vi
tty52 22549 0:01sh
2.1.2检查用户的用户号和组号(id命令)
使用id命令可以显示注册用户的用户id和组id号,当用户不能访问他们认为属于自己的文件时,使用这些信息来查找错原因,据此信息也可知道用户所属的组。使用id命令时,用户先注册,然后键入id命令。如果uid和uid与出现问题的文件的uid或gid不匹配,就需要改变文件的属主或组,或者将用户加入相应的组中。详见第5章。
gtxa%id
uid=6693(winsor)gid=10(staff)
gtxa%su
Password:
#id
uid=0(rood) gid=1(other)
#
2.2查寻环境信息
每个系统都有一个运行环境,这些环境说明在用户初始化文件标准shell和Korn shell的.profile或C shell的.cshrc和.login中定义,也可通过shell直接定义环境变量。环境变量可以规定诸如用户主目录,注册名,缺省打印机,电子邮件地址以及访问Open Windows环境的路径。本讲讲述如何查到环境变量的设置。这方面的更详细信息请见第8章。
为了显示用户的环境变量设置,键入env命令。这样系统地显示出环境变更的设备清单,关于环境变量的缺省设置值及如何设置环境变量,请见第1章的有关内容。
gtxa%env
HOME=/
PATH=:/home/ignatz:/usr/bin:
/home/ignatz/bin:/bin:/home/bin:/etc:/usr/etc
LOGNANME=ignatz
HZ=100
TZ=PST8PDT
TERM=sun
SHELL=/bin/csh
MAIL=var/mail/ignatz
PWD=/
MANSECTS=\1:1m:1c:1f:1s:1b:2:\3:3
c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:9:4:5:7:8
gtxa%
2.3创建和编辑文件
本节描述如何使用cat、touch、cp、mv、Text Editor和vi命令来创建和编辑文件。
2.3.1使用cat命令
使用cat命令可创建短文件或附加少量文本信息到一个已存在的文件末尾。用cat命令创建文件可以:
1、键入cat ;
2、录入文本内容;
3、键入回车;
4、键入Control-D。
文本被存盘,shell提示符重新出现。
用cat命令将文本附加到已存在的文件上可以:
1、键入cat ;
2、录入内容;
3、键入回车;
4、键入Control-D。
文体被存盘,shell提示符重新出现。
2.3.2使用touch命令
touch命令将每个文件的访问和改动时间设为当前时间,如果文件不存在,就创建一个新文件。可以用touch命令创建一个空文件来检查允许权和属主,或创建一个文件用于以后录入文本。
要创建一个空文件,只需键入touch 这样一个新的空文件就创建出来了,如果此文件已存在,那么文件的修改时间就变为当前的日期和时间。
gtxa%ls -1 junk
junk: No such file of directory
gtxa%touch junk
gtxa%ls -1 junk
-rw-r--r--livringstaff 0 Sep 11 15:06 junk
gtxa%
2.3.3文件拷贝(cp)或改名(mv)
可以通过一对一已存在的文件进行拷贝或改名来创建一个新文件。
拷贝已存在的文件的方法是:键入cp ,这样就得到了原文件的拷贝,而且保留了原来的文件。
mv
原文件被改名,原名文件就不再存在。
gtxa%mv quest /tmp/quest。old
gtxa%
2.3.4文本编辑器的使用
可以使用Open Windows的文体编辑来创建和编辑文件。然而普通用户在使用文本编辑器来编辑具有根允许权限(root pemissions )的文件时可能会出现一些问题。
进入Open Windows工作区的主菜单中选择programs,再在programs菜单中选择Editor来打开文体编辑器,也可以在命令行键入:textedit &来打开文体编辑器。打开之后,显示一个文本编辑器窗口。进行编辑时,可使用键盘上Cut、Copy、Paste、Undo键来加快文本的编辑速度。
2.3.5 vi的使用
全屏幕编辑器vi,通常是由系统管理员编辑文本文件。有专门的一些书讲述vi使用法。本节仅提供其中最常用的编辑命令供用户参考。只需键入 vi 。就可启动vi,如果文件不存在,那么就打开一个新文件,当存入内容时,此新文件就创建出来,如果文件已经存在,则在启动完vi以后,就在屏幕上显示此文件的开头一部分内容。
表2.1一些基本的vi命令
功能命令
不存盘退出:qi
存盘:w
存后退出:wq
存后退出ZZ
左移一字符h
右移一字符i
上移一行k
下移一行j
移到文件尾G
插入文本(插入方式)v(文本)ESC
在光标后附加文本a(文本)ESC
在行尾附加文本A(文本)ESC
如何退出命令方式ESC
删行dd
删字符x
删词dw
在上一行开始加入新文本O
在下一行开始加入新文本o
拷贝一行到缓冲区Y
将缓冲区内容置于当前光标之前P
将缓冲区内容置于当前光标之后p

2.4命令组合及输出重新定向
SunOS 5.0系统允许以多种方法组合命令,本节讲述命令组合的三种方法。
2.4.1在同一命令行里键入多个命令
在命令之间用分号(;隔开,就可以在同一命令行中键入多个命令,例如,可以用cd /usr/bin;ls命令先转到一个目录中,再列出此目录中的目录和文件,另外一个例子是为Bourne shell设定环境变量再输出(export)该变量。
PATH=。:/usr/bin:$HOME/;export PATH
2.4.2输出重新定向(<>
除非另外说明,命令结果通常显示在屏幕上,使用重新定向符(“<”和“>;”),可以将输出结果重新定向,例如:将结果存入一个文件而不是将它显示在屏幕上,只需使用重新定向符“>;”,指示shell将内容放入一个文件,下面的例子中,date命令的输出被重新定向到Sample.file文件中:
gtxa%date >; samle.file
gtxa%
下面是Sample.file的内容:
gtxa%more sample.file
Tue May 26 13:26:59 PDT 1992
gtxa%
也可以重新定向输入。例如,将一个文件的内容邮件寄到用户ignatz@gtxa,键入mail igzatz@gtxa < report.file,report.file文件就通过电子邮件发给ignatz@gtxa。
2.4.3组合命令(|)
使用管道操作符(|)来联结两个或更多的命令,管道操作符把前一命令的输出作为后一命令的输入。有许多方法可以将命令用管道线组合起来,本节只举两例:
键入man cat│lp再回车,可以打印cat(1)手册。上述手册就不显示在屏幕上,而是将输出内容传给lp命令,使之在缺省打印机上打印出来。
将ps -ef命令用管道(|)与grep命令联结起来,可以在进程表中找出某个命令对应的过程,输出结果显示在屏幕上。例如,显示Open Windows的进程信息:
gtxa%ps -e│grep openwin
260 ? 0:00 openwin
gtxa%
如果想要打印上述信息,可以另加管道命令(|lp )于上述命令之后:
gtxa%ps-ef │grep openwin │lp
request id is castle─51(request id is cstle ─51
(standard input)
gtxa%
2.5使用手册
SunOS 5.x提供联机参考手册,手册被分为不同的节(section),同一类型的命令组成一节。例如,大多数用户命令归并为(1)节,系统管理归并为(IM)节。手册可以存放在本地系统上,也可以在服务器上,本节描述如何显示手册,及如何找到某条命令在哪一节。
2.5.1显示手册(man)
显示手册,只需键入man ,手册页即显示出来。
gtxa%man grep
grep(1) USER COMMANDS grep(1)
NAME
grep -search a file for a pattern
SYNOPSIS
grep [-bchilnsvw] limited -expression
...
2.5.2找命令节号(whatis、man)
有些命令的名字可以出现在几个章节中,此时可以使用whatis找到命令在手册中的节号(section number)。
注意:仅当使用了cat man来命令建立手册之后whatis命令才起作用。在超级用户状态下键入#cat man 可以建立手册页,其中是欲建立的节号。
依下列步骤可以找到手册的节号:
1、 键入whatis 。本命令手册的第一行显示出来,此行中含有该命令手册的节号。
2、键入man -s 再回车,则显示手册页。
gtxa%whatis chown
chown chown(1) -change owner of file
chown chown(1b) -change owner
chown chown(1m) -change owner
chown chown(2) -change owner and group of a file
gtxa%man -s2 chown
chown(2) SYSTEM CALLS chown(2)
NAME
chown, lchown, fchown-change owner and group of a file
SYNOPSIS
# include
# include
int chown(const char * path, uid-t owner, gid-t group);
int chown(const char * path, uid-t owner, gid-t group);
int fchown(int fildes, udi─towner, gid─t group);
DESCRIPTION
chown()sets the owner ID and group ID of the file specified by path or feferenced ty the open file descriptor fields to owner and group respectively. if owner or group is specified as-1, chown() does not change the corresponding ID of the file. ...
2.6查阅磁盘信息
下面的命令可用来查磁盘使用信息,并指出某文件系统是本地的UFS还是远程的(nfs)。
2.6.1显示磁盘空间的信息(df -k)
Solaris中的df命令,当不加参数使用时, 输出结果与以前的df命令不同。df加上-k选择项,可以按SunOS 4.x中的格式来显示磁盘信息。键入df -k显示文件系统名,总字节数,已使用的字节数,剩余字节数,已经使用的百分比,以及安装点。
gtxa%df -k
/dev/dsk/c0t0d0s0 30383 19926 7427 73% /
/dev/dsk/c0t0d0s6 189683 66503 104220 39% /usr
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
swap 44268 12 44256 0% /tmp
/dev/dsk/c0t0d0s7 331953 116133 182630 39% /opt
/dev/dsk/c0t3d0s7 189858 24293 146585 14% /export/home
openetpid146) 0 0 0 0% /nt
openetpid146) 0 0 0 0% /home
....
2.6.2判别某文件系统是否为本地文件系统(df)
键入df 可以查出某文件系统是本地文件系统还是远程安装的网络文件系统(nfs)。与指定的文件系统相应的磁盘格式信息(包括磁盘位置或安装点)也将显示出来。
在下例中,文件系统是nfs文件系统。
gtxa%df /home/ignatz
bigriver:export/home/ignatz 5388980 399435 85647 82%/tmp-mmt/home/ignatz
gtxa%
在下例中,文件系统在本地硬盘上
#df /
/dev/dsk c0t0d0s0 30383 11885 15468 43% /
2.6.3找出某种类型已安装的文件系统(df -F)
若欲显示同一类型的所有已安装文件系统,可使用-F选择项,后接文件系统类型。最常用的文件系统结构是本地文件系统ufs 和网络文件系统nfs。键入df -F 可列出所有特定类型的已安装文件系统。下例中,显示所有已安装的nfs文件系统:
gtxa%df -F nfs
/net (cinderella: (pid153):0 blocks-1 files
/usr/dist( cinderellapil53)):1276248 block.-1 files
/home (cinderella pid153): 0 block-1 files
/usr/man (ocak: /export/man) : 272934 blocks-1 files
gtxa%
在下例中,显示已安装的ufs(本地)文件系统。
cinderella%df ─F ufs
/ (/dev/dsk/c0t0d0so): 36992 blcoks 13558 files
/usr (/dev/dsk/cotodod6): 274346 blocks 94403 files
/export/home/cinderella (/dev/dsk/cotddos7): 379670 blocks 96046 files
cinderell%
在下列中,显示已安装的临时文件系统信息
cinerella%df ─F tmpfs
/tmp (swap): 88528 block 3156 files
注: 由于交换区文件系统(swapfs)从不安装,故不可用df命令显示之。


第3章、设备管理
本章主要介绍:磁带的使用、软盘的使用、磁盘管理、服务访问机制、建立双向调制解调器
本章描述如何使用磁带和软盘拷贝文件,而如何备份和恢复整个文件系统是第四章的内容,第四章还讲述磁带设备名和用来管理磁盘命令,介绍有关管理终端、调制解调器及其它使用SunOS 5.x系统软件的网络设备的服务访问机制(SAF) ─提供为打印服务器和打印客户启动端口管理器、向系统中加入与Hayes兼容的调制解调器的步骤,第六章中介绍如何管理打印机。
3.1磁带的使用
本节讲述磁带设备命名约定、读写盒式磁带的命令、以及如何使用tar和cpio命令对带存取文件。
tar和cpio命令可将文件或文件系统拷入磁带,按照拷贝灵活性和精度的要求可以决定选用哪个命令。
tar命令将文件和目录树拷入单个磁带,注意: SunOS 5.x的tar命令可以存取特殊文件(块设备,字符设备文件fifo文件)但SunOS 4.x的tar命令则不可存取这类文件,cpio命令的可移植性则好些。
cpio命令用于拷贝需使用多卷磁带的任何文件、 特殊文件或文件系统,也可以用于将SunOS 5.x系统中的文件拷贝到SunOS 4.x系统中,cpio命令比tar 命令更为高效地将数据装入磁带,而读出时又可跳过磁带上的坏区,cpio命令还提供了写文件时不同格式头(tar,ustar,crc,doc,bar)的选择,以保证不同类型系统之间的可移植性。
由于tar和cpio命令使用原始设备(raw device), 故不用在使用之前对磁带格式化或创建新的文件系统,使用的磁带驱动器和设备名取决于硬件及系统配置。
3.1.1磁带设备的命名习惯
磁带设备命名习惯采用逻辑的─而非物理的设备名,磁带机依控制器类型分为两类:
•;Xylogics472类,1/2英寸装于机架上的(顶部装入)对卷(reel to reel)式驱动器,(每个控制器最多带4个驱动器) 。
•;SCSI类,1/4英寸盒式带,1/2英寸前部装入对卷式,及4mm或8mm螺旋扫描驱动器,(每个控制最多带8个驱动器)。
在/dev/rmt子目录中,有唯一一组磁带设备文件,它们支持不同的输出密度,通常可按图3.1来规定磁带机设备。
/dev/rmt/XAn
Optional
No-Rrwind
Optional n no-rewind;
Density omit for rewind
l low
Drive m medium
0 h high
1 u ultra
2
3
4
n
图3.1 磁带机设备名
后面三节讲述驱动器号、密度选择及不倒带选择。
3.1.1.1使用缺省密度规定驱动器号
通常磁带驱动器是通过其逻辑单元号来指定的,其单元号由0至n,如果不指定密度,则驱动器依磁带优先密度(通常指它支持的最高密度)写。
指明第一个驱动器,可使用:/dev/rmt/0
指明第二个驱动器,可使用:/dev/rmt/1
注意:多数设备名的序列号从0开始,所以,当使用第一磁带或目标时,其号码为0而不是1。
3.1.1.2为磁带机指定密度
有时会遇到某系统的磁带机只支持某种密度,这时若拷贝磁带,则需指定一个以此密度写的设备名,使用下列规则:
/dev/rmt/
表3.1列出了驱动单元和密度符号,例如,指明第一个(0号)驱动器使用中密度的原始磁带机,使用:
/dev/rmt/0m
表3.1 磁带设备名中的驱动器单元和密度符号
设备名 =/dev/rmt/
磁带驱动器号(数字),0-n,与控制器类型无关
密度(字符),取决于控制器和驱动器类型
null 缺省,优先(最高)密度
l 低密
m 中密
h 高密
u 极高密(ultra)
3.1.1.3指定"不倒带"选项
命令执行后,除非将"不倒带"的选项作为设备名的一部分,否则磁带机将自动倒带,指定"不倒带"选项,只需在设备名之尾加上"n"字。如:/dev/rmt/0mn
3.1.1.4不同磁带控制器和介质的设备名缩写
一个系统中,可以同时有SCSI和非SCST磁带机,SCSI控制器至多可带8个SCSI磁带机, 非SCSI控制器至多可带4个磁带机,对于一驱动器号(x),密度符号取决于后面介绍的控制器和驱动器类型。
表3.2列出不同磁带控制器驱动器和介质的设备缩写。
注: 设备缩写中驱动器号不一定为列出的0,可以1、2或3等等,它取决于系统上连有多少磁带机。
表3.2 磁带控制器/驱动器和介质的设备名缩写
控制器 驱动器单元 大小 类型 格式 磁道 设备缩写
Xylogics 472 Fujitsu 1/2inch 卷绕式 1600bpi 9 /dev/rmt/0m
M2444 1/2inch 卷绕式 800bpi 9 /dev/rmt/0h
SCSI/前插入式 HP 1/2inch 卷绕式 1600bpi 9 /dev/rmt/0m
6250bpi 9 /dev/rmt/0h
SCSI Sysgen 1/4inch 盒式 QIC-11 4 /dev/rmt/0l
QIC-24 4 /dev/rmt/0m
QIC-11 9 /dev/rmt/0l
QIC-24 9 /dev/rmt/0m
Emulex 1/4inch 盒式 QIC-11 4 /dev/rmt/0l
MT-02 QIC-24 4 /dev/rmt/0m
QIC-11 9 /dev/rmt/0m
QIC-24 9 /dev/rmt/0m
Archive 1/4inch 盒式 QIC-150 18 /dev/rmt/0h
QIC-15O
Wangtek 1/4inch 盒式 QIC-150 18 /dev/rmt/0h
QIC-150
Desktop 1/4inch 盒式 QIC-150 18 /dev/rmt/oh
Backup Pack
3.1.1.5 1/2英寸卷绕式非SCSI内接(Rack mounted)磁带机
这类磁带机,无论是Tapemaster还是Xylogics472控制器,其设备名/dev/rmt/XA 中选择都基于表3.3中的密度项。
表3.3 Rack-mounted 1/2英寸磁带机的指定密度
符 号 密度
null 缺省最高密度(6250bpi非压缩)
1800 bpi

m1600 bpi
h6250 bpi
u6250 bpi,压缩
若省去密度符号,那么就依磁带的最高密度写,且不压缩。
3.1.1.6 1/4英寸SCSI盒式和1/2英寸前部装入的卷绕式磁带机
对于这这类磁带机,其设备名(/dev/rmt/XA)中表示密度的A项基于表3.4。
表3.4 SCSI磁带机的指定格式和密度
字符 密度(1/4英寸盒式) 密度(1/2英寸前部装入对卷式)
null 缺省最高密度 缺省最高密度
l QIC-11格式 800bpi
m QIC-24格式 1600bpi
l QIC-150 6250bpi
u 保留 保留
对于1/4英寸盒式带,密度是由写入数据的格式----QIC决定的,QIC-11和QIC-24 格式磁道上每英寸约写1000字节,QIC-150的密度要高些,60Mb 1/4 英寸盒式磁带机的优选密度是QIC-24,150Mb 1/4英寸盒式磁带则为QIC-150。150Mb 的磁带机只能按QIC-150格式写,不可以按QIC-24或QIC-11格式写,格式的选择仅可同时可依QIC-24和QIC-11写的磁带机才有意义。
3.1.1.7 螺线扫描磁带机
螺线扫描磁带机(例如: Exabyte 8mm 或 Wang/DAT 4mm)是特殊的SCSI磁带机,它们仅依指定密度写,因此,通常只需通过磁带机号来指定它们,例如:
/dev/rmt/0
3.1.2读写磁带的命令
下面介绍一些读写磁带的命令
3.1.2.1拉紧磁带
如果读磁带时出错,则可以拉紧(retnsion)磁带带清扫磁带机,再重读一次。
gtxa%mt -f /dev/rmt/1 retension
gtxa%
3.1.2.2倒带
键入mt -f /dev/rmt/ rewind
指定的n号磁带机倒带。下例中,对/dev/rmt/1进行倒带:
gtxa%mt –f /dev/rmt/1 rewind
gtxa%
3.1.2.3列出磁带机状态
键入mt –f /dev/rmt/ status则可显示磁带机状态
此例显示磁带机/dev/rmt/1中无磁带:
gtxa% mt -f /dev/rmt/1 status
/dev/rmt/1:no tape loaded or dri e offline
gtxa%
在此例中,显示/dev/rmt/<1>;的状态:
gtxa%mt –f /dev/rmt/1 status
Archive QIC-150 tape drive:
sense key(0x6)=nuit attention residual=0 retries
file no=0 block no=0
gtxa%
3.2 磁带与软盘操作
3.2.1 tar命令
下面几节描述如何使用tar命令将文件拷入磁带,并从磁带上列出文件,增加文件和读出文件。
3.2.1.1向磁带写文件(tar)
依下列步骤向磁带写文件:
1、 进入含有欲拷文件的目录;
2、 插入有写权限的磁带到磁带机中;
3、 键入tar cvf /dev/rmt/
注意: 使用c选项写带,将破坏磁带上原有文件,如果欲保护磁带上原有文件,则需使用后面讲述的"r"选择项来附加文件。
c选项表示拷贝(copy)指定的文件,v选项(verbose)表示在拷贝过程中显示文件信息,f选项(files)后面加上磁带设备名,指定文件向何处拷贝,被指定的文件拷贝到磁带上,覆盖磁带上原有文件。
注: 可以使用元字符(?和*)作为文件名的一部分。例如,为了拷贝所有具有.doc后缀的文件,在文件名部分键入*.doc即可,如果指定文件名部分是一目录名,那么此目录及其所有子目录均递归地拷入带中。
4、 自磁带机中取出磁带,填写标签。
在下面的例子中,将两个文件拷入0号磁带机中的磁带
gtxa%cd /home/winsor
gtxa%ls evaluation*
evaluation. doc evaluation. doc. backup
gtxa%tar cvf /dev/rmt/0 evaluation*
a evaluation. doc 86 blocks
a evaluation. doc backup 84 blocks
gtxa%
3.2.1.2列出磁带上的文件(tar)
依下列步骤列出磁带上的文件:
1、 将磁带插入磁带机;
2、 键入tar tvf ./dev/rmt/
t选项(table)表示将指定文件列出,v选项(vevbose)表示在列文件时仿ls -l的格式显示文件信息,f选项(files)表示在此选项后的磁带机设备名表示文件所在设备。
在下列中显示0号磁带机中所放磁带的内容
gtxa% tar tvf /dev/rmt/0
rm-rm-rm-6693/10 44032 Apr 23 14:54 1991 evaluation. doc
rm-rm-rm-6693/10 44008 Apr 23 14:57 1991 evaluation. doc. backup
gtxa%
从左向右,上面信息的第一列显示文件存取权限,第二列显示文件的属主与属组,第三列显示文件字节数,第四、五、六、七列是文件最后修改的月、日、时间和年号,最后一列是文件名。
3.2.1.3向磁带上增加文件(tar)
依下列步骤可以向磁带上拷入文件而不破坏磁带原来内容:
1、 进入含拷贝文件的子目录;
2、 将具有写权限的磁带插入磁带机;
3、 键入tar rvf /dev/rmt/ ......
则指定文件被拷入指定磁带中;
注:可以使用元字符(?和*)作为文件各的一部分。例如,拷贝所有具有.doc后缀的文件,只需在指定文件名部分键入*.doc即可。
4、 自磁带机中取出磁带,填写标签。
下例中,向0号磁带机中的磁带上增加文件:
gtxa%cd /home/winsor
gtxa%tar rvf /dev/rmt/0 junk
a junk 1 blocks
gtxa% tar tvf /dev/rmt/0
rm-rm-rm-6693/10 44032 Apr 23 14:54 1991 evaluation. doc
rm-rm-rm-6693/10 44008 Apr 23 14:57 1991 evaluation. doc. backup
rm-rm-rm-6693/1018 Dec 10 11:36 1991 junk
gtxa%
tar命令的使用n选项(不倒带),可以让用户多次使用tar命令顺序向磁带上拷文件,例如:拷文件后不倒带,下次使用此磁带拷贝时,文件就写在前次拷贝的文件后面。
3.2.1.4从磁带中析取文件(tar)
1、 进入欲存文件的子目录;
2、 将磁带插入磁带机;
3、 键入tar xvf /dev/rmt/
磁带上所有的文件都拷入当前目录。
此例中,0号磁带机中磁带内容全部被拷贝出来:
gtxa%cd /home/winsor/Evaluations
gtxa%tar xvf /dev/rmt/0
x evaluation.doc,44032 bytes,86 tape blocks
x evaluation.dos.backup,43008 bytes,84 tape blocks
gtxa%
自磁带中析取个别文件,只需键入tar xvf /dev/vmt/ ......指定文件则从磁带中拷贝出,并放入当前目录,此例中前缀是evaluation文件自0号磁带机的磁带中拷贝出:
gtxa%cd /home/winsor/Eealuations
gtxa%tar xvf /dev/rmt/0 evaluation *
x evaluation.doc, 44032 bytes, 86 tape blocks
x evaluation.dos, backup, 43008 bytes, 84 tape blocks
gtxa%
下面步骤表示如何自磁带中析取整个子目录:
1、 进入欲放文件的目录,如果拷入的子目录已存在,那么,应进入该子目录的父目录中,而且应保证原子目录中的内容可以覆盖掉,例如,将磁带中的目录Book拷入/home/winsor/Book中,应键入cd /home/sinsor; tar xvf /dev/rmt/Book,若原先就进入/home/winsor/Book中,则拷入内容则存于/home/winsor/Book/Book中。
2、 键入tar xvf /dev/rmt/ 则此目录与其所有子目录递归地自磁带上拷出。
注意: 自磁带中拷出的文件名就是所存的文档文件名,如果对文件名不清楚,可以先列出磁带上的文件名,步骤详见"列出磁带上的文件(tar)"或tar(1)手册。
3.2.2cpio命令
使用cpio命令建立磁带文档时,它自标准输入设备取得一串文件或路径名, 然后将它们写到标准输出设备上,输出通常反向到文件或设备,后面讲述怎样使用cpio命令将文件拷入盒式磁带,列出盒式磁带文件,及析取磁带上的某个文件子集。
3.2.2.1将某目录下的所有文件拷入磁带(cpio)
依下列步骤将某目录下的所有文件拷入磁带:
1、 将具有写权限的磁带插入磁带机;
2、 键入ls l cpio –oc >; /dev/rmt/
当目录中所有文件则拷入指定磁带机中的磁带内,覆盖磁带上已有文件,显示拷贝总块数;
3、 取出磁带,填好标签。
在下列中,/home.winsor/TOI目录的文件均拷入0号磁带机内的磁带。
gtxa%cd /home/winsor/TOI
gtxa%ls -1 cpio –oc >; /dev/rmt/0
31 blocks
gtxa%
3.2.2.2列出磁带上的文件(cpio)
依下列步骤:
1、 将磁带插入磁带机;
2、 键入cpio -civt < /dev/rmt/
其中i选项自磁带读入(in)内容,v选项仿ls -l格式列出文件;t选项对指定磁带机中的磁带内容列表。
注意: cpio命令列表使用的时间与读整个文档的时间一样长,因为cpio命令需遍历整个文档。
在本例中,0号磁带机中的磁带有四个文件:
gtxa%cpio -civt < /dev/rmt/0
100666 winsor 3895 Feb 24 15:13:02 1992 Boot.chapter
100666 winsor 3895 Feb 24 15:13:23 1992 Directory.chapter
100666 winsor 6491 Feb 24 15:13:52 1992 Install.chapter
100666 winsor 1299 Feb 24 15:14:02 1992 Intro.chapter
31 biocks
gtxa%
第一列是八进制表示的存取权限;第二列显示文件属主;第三列列出文件所占字节数;第四、五、六、七列显示文件最后改动的月、日、时间和年份;最后一列是文件名。
3.2.2.3析取磁带上所有文件(cpio)
如果(磁带上)文档是使用相对路径名建立的,那么输入文件在当前目录下, 如果文档是使用绝对路径名建立的,则以相同的绝对路径重新生成此文件。
注意: 使用绝对路径名来拷贝磁带文件是危险的,因为这样会覆盖文件系统中的原有文件。
依下列步骤拷贝文件:
1、 进入欲放文件的子目录;
2、 将磁带插入磁带机;
3、 键入cpio -icv < dev/rmt/
指定磁带机中磁带上所有文件拷入当前目?/span>
阅读(2491) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~