Solaris 操作培训


Sun Solaris OS Training 第 1 页 共 121 页 SSuunn SSoollaarriiss OOSS TTrraaiinniinngg 2008 年 3 月 Sun Solaris OS Training 第 2 页 共 121 页 目录 1、Solaris简介..................................................................................................................................................................3 1.1 Unix&Solaris发展简史.....................................................................................................................................3 1.2 硬件支撑环境.......................................................................................................................................................4 1.3 SUN服务器和存储系统介绍...............................................................................................................................5 1.4 了解更多.............................................................................................................................................................16 2、系统安装......................................................................................................................................................................18 2.1 安装Solaris之后的 9 个主要的设置..............................................................................................................18 2.2 安装Solaris之后NFS安装和配置 .................................................................................................................19 2.3 安装Solaris之后NIS安装和配置 ..................................................................................................................20 2.4 挂接文件资源....................................................................................................................................................22 2.5 自动挂接文件资源 ............................................................................................................................................23 2.6 NFS资源 ............................................................................................................................................................24 2.7 卷管理 ................................................................................................................................................................24 2.8 系统操作等级....................................................................................................................................................24 3、Unix命令 ....................................................................................................................................................................28 3.1 文件的复制、删除和移动.................................................................................................................................28 3.2 目录的创建与删除 ............................................................................................................................................29 3.3 文本处理 ............................................................................................................................................................33 3.4 备份与压缩........................................................................................................................................................34 3.5 改变文件或目录的访问权限 ............................................................................................................................37 3.6 修改密码,改变用户 .........................................................................................................................................40 3.7 系统管理 .............................................................................................................................................................41 3.8 磁盘管理.............................................................................................................................................................43 3.9 其它命令............................................................................................................................................................46 4、vi编辑器 ......................................................................................................................................................................53 5、进程管理......................................................................................................................................................................58 6、网络应用配置..............................................................................................................................................................59 6.1 网络基本配置文件.............................................................................................................................................59 6.2 远程访问命令....................................................................................................................................................59 6.3 相关文件............................................................................................................................................................59 6.4 网络监控............................................................................................................................................................59 7、图形窗口配置 ..............................................................................................................................................................61 8、系统命令......................................................................................................................................................................62 附录A:测试 .....................................................................................................................................................................63 附录B:FAQ ....................................................................................................................................................................66 附录C:系统维护命令......................................................................................................................................................99 附录D:RAID技术说明................................................................................................................................................115 Sun Solaris OS Training 第 3 页 共 121 页 1、Solaris 简介 1.1 Unix&Solaris 发展简史 Solaris 是在 UNIX 的发展过程中逐渐发展起来的。1969 年 AT&T 贝尔实验室开发出了第一套 UNIX 操作 系统,尽管这只是个单用户的操作系统,却标志着 UNIX 的诞生。 UNIX 发展的下一个里程碑是在 1973 年,当时在贝尔实验室的工作人员利用 C 语言重新编写了 UNIX 内核 程序,这也是为什么 C 语言总是和 UNIX 联系在一起的原因。即使在今天,尽管已经有许多其他编程语言可以选 择,但大多数 UNIX 应用仍是采用 C 语言进行编写的。 到了 1975 年,伯克利大学发布了它的第一个 UNIX 软件,这个软件称为 BSD。BSD UNIX 在 UNIX 的历史 发展中有相当大的影响力,被许多商家采用,成为很多商业 UNIX 的基础,而 Sun 公司的 Solaris 正是在这个 BSD UNIX 的基础上发展起来的。 与此同时,AT&T 贝尔实验室也在不断改变他们的商用 UNIX 版本。直到 AT&T 贝尔实验室在吸收了 BSD UNIX 已经有的各种优先特性,并结合其本身特点,推出了 UNIX System V 版本之后,才形成了 BSD UNIX 和 UNIX System V 两大主流 UNIX 系统。 20 世纪 80 年代初期,UNIX System V 仍然主要由 AT&T 所拥有。但到 1993 年初,AT&T 将开发 UNIX 系 统的实验室(USL)卖给了Novell 公司,UNIX即为 Novell 所拥有。后来,Novell将自己的UNIX 改名为UNIXWare, 而将 UNIX 商标赠送给 X/OPEN——一个由众多 UNIX 厂商组成的联盟,这样这个联盟内的所有成员均可以使用 UNIX 商标。从此以后,UNIX 不再是专有产品了。 由于 Solaris 最初是由伯克利大学的 BSD 派生出来的,因此,SunOS 4.x(常被称为 Solaris1.x)的命令风格 与其他的 BSD 非常相似,只是由于后来改用了 System V 的版本 4(SVR4),才使得 SunOS 5.x(也就是 Solaris 2.x) 发生了变化。 而 SunOS 5.x 也逐渐被 Solaris 2.x 名称代替,在 Solaris 2.6 以后,Solaris 7(SunOS 5.7)开始改变它的版 本编号方法,它以过去的小版本编号为基础,采用了单一版本号的形式。也就是说,Solaris 的版本序号顺序为 2.5,2.6,7,8,9,10。 Sun 操作系统版本发展的时间顺序如下: ● 1971 年,第一个 UNIX 版本发布。 ● 1982 年,Sun 选择 UNIX 操作系统用于其第一个工作站。 ● 1983 年,SunOS 1.0 发布。 Sun Solaris OS Training 第 4 页 共 121 页 ● 1984 年,Sun 发明 NFS 技术。 ● 1985 年,SunOS 2.0 支持 NFS 技术。 ● 1988 年,SunOS 4.0 支持其第一个 SPARC 处理器和使用虚拟内存技术。 ● 1992 年,Solaris 2 发布,基于 UNIX SVR4,并支持其第一款多处理器工作站。 ● 1992 年,Solaris 2.1 增加支持线程技术。 ● 1993 年,Solaris 2.2 增加支持对称多处理器技术。 ● 1995 年,Solaris 2.5 支持 UltraSPARC 工作站/服务器。 ● 1997 年,Solaris 2.6 支持 1TB 大文件。 ● 1998 年,Solaris 7 采用 64 位技术,支持 Java。 ● 2000 年,Solaris 8 增加支持安全的企业级 Web 应用。 ● 2002 年,Solaris 9 服务提供平台,U5 版支持 CMT 技术,并增加 Sun Java 企业系统。 ● 2005 年,Solaris 10 虚拟化 OE,增加 N1 Grid Container,DTrace 等。 ● 2006 年,Solaris 10 增加了 ZFS 文件系统。 其中,Solaris 10 是最具有里程碑意义的。从此,Solaris 走向了开源,代码不再由专门的 Sun 公司的操作系 统专家所编写。也就是说,下一个版本的 Solaris 将是由开源社区的众多自由软件开发者编写的。 1.2 硬件支撑环境 典型的 Sun 系统的 CPU 是 SPARC 芯片,SPARC 有很多种,如 SPARC 5,SPARC 10 和 SPARC 20 等,它 们的处理速度在 40MHz~60 MHz 之间,后来的系统采用的是 UltraSPARC 芯片,主频达到 1.6GHz 的 UltraSPARC IIIi 是目前运行速度最快的 PARC 处理器。不过目前,可以安装并运行 Solaris 10 的硬件平台已经不限于 SPARC 平台了。按硬件平台分类,有三种可以安装并运行 Solaris 10 的平台:SPARC, x86,x64。 SPARC 平台 Sun 公司基于 SPARC CPU 的工作站和服务器的安装版本,Solaris 10 是真正的 64 位操作系统,而有些老的 SPARC CPU 是 32 位的,因此一些老机器上的 Solaris 10 也可以切换到 32 位模式。 x86 平台 各类 x86 IA32 架构的机器(Intel/AMD CPU)可以安装的版本,是纯粹的 32 位操作系统。 Sun Solaris OS Training 第 5 页 共 121 页 AMD64 平台 Sun 公司的 V20z 和 V60z 服务器都采用了 AMD 公司最新的 Opteron 64 位 CPU。32 位的 Solaris 10 已经可 以运行在 Opteron 上;对于 64 位的 Solaris 10 来说,此芯片的 64 位计算能力将被充分发挥。 如果一般桌面的用户想知道自己的计算机是否可以安装 Solaris 10,那么他可以在网址为 http://www.sun.com/ bigadmin/hcl/的站点上查找硬件兼容表(HCL),HCL 中列出了所有经过测试可以与 Solaris 10 一起工作的系统、组件和外围设备。如果硬件没有在 HCL 中列出,那么,该硬件可能不被支持。但目 前的很多基于 Intel 芯片的标准,包括 PCL 总线标准,都已经被 Sun 公司所采用,并被 Solaris 10 所支持。 1.3 SUN 服务器和存储系统介绍 服务器产品线 Sun Blade 系列(刀片式) Netra 系列(运营商级服务器) SUN Fire 系列:V 系列(中低端)/E 系列(中高端)/T 系列(CoolTreads 服务器)/X 系列&V40z(x64 服务 器) Sun Rack 系列(机架型机柜) 存储产品线(磁带库、磁带机、磁盘存储、虚拟磁带库以及密钥管理站)叫做 Sun StorageTek SUN公司产品线地址:http://cn.sun.com/products/ 服务器产品线 (1)Sun Blade 8000 模块化系统 * 每个服务器模块 4 个双核 AMD Opteron 处理器 * 每个服务器模块 6 个 PCI-Express 接口 * 每个服务器模块最多 64 GB 内存 * 完整版载 Sun Integrated Lights Out Manager 服务处理器 * 每个服务器模块 2 个 PCI-Express 接口 - 每个底盘共 20 个(其余相同) *Sun Blade 8000 P 模块化系统是第一种专门用于高端 x86 群集和网格计算的刀片式服务器,可在单一机架中 向您提供 240 个处理核心以及 1.248 TFLOPS。 Sun Solaris OS Training (2)Netra 系列(运营商级服务器) 通过 NEBS 级别 3 认证 Netra X4200 M2 最多支持 2 个双核下一代 AMD Opteron 处理器 Netra 210/240/440 UltraSPARC IIIi 处理器(210/240 两个,440 可支持 4 个) Netra T2000 芯片多线程技术 (CMT) UltraSPARC T1 处理器(8 核*4 线程) 预装 Solaris 10 操作系统 Netra 1280/1290 最高可达 12 个 UltraSPARC IV+ 双核处理器 Netra CT 410/810 单个 UltraSPARC IIi 处理器 第 6 页 共 121 页 Sun Solaris OS Training Netra CT 820 基于 cPSB 的 Netra CT 820 刀片式服务器的一个 12U 底盘最多可支持 18 个热插拔刀片式服 务器(如 Netra CP2300 Telecom 刀片式服务器) Netra CT 900 ATCA 服务器 Netra CT 900 ATCA 刀片式服务器是 Sun 在服务器设计中对 AdvancedTCA 规格的实施。 AdvancedTCA 是 一款瞄准电信基础架构的业界标准刀片架构。 从一开始,ATCA 就设计可用于 5-9 和 6-9 应用程序。 ATCA 是 从 PICMG 标准体起的第三代刀片规格。支持多达 12 个 SPARC、x64 或其它 ATCA 刀片 (3)Sun Fire 各种系列 V & E 系列 入门级:采用 UltraSPARC IIIi 处理器,第一个数字代表最多支持的 CPU 个数 Sun Fire V125/210/215(1u 高度)/V240/V245(2u 高度)/440/445(4u 高度) 第 7 页 共 121 页 Sun Solaris OS Training 中端级:多数采用 UltraSPARC IV+,V1280/V4900 例外 Sun Fire V490(5U 高度)/890/1280/2900(12cpu)/4900(12cpu)/6900(24cpu) 高端级:Sun Fire E20K(36cpu)/E25K(72cpu) Sun Fire E20K 服务器 高端计算、经济实惠和可伸缩性:Sun Fire E20K 具有 36 个 UltraSPARC IV+ 处理器,可处理 72 个多线程, 提供大型机级可靠性和安全性。 将来,它可扩展至具备 Sun Fire E25K 的性能。 * 最多 36 个 UltraSPARC IV+ 双线程处理器 * 每个域最多容纳 288 GB 内存 * 存储容量超过 120 TB * 最多 9 个动态系统域 Sun Fire E25K 服务器 Sun 的旗舰产品 Sun Fire E25K 服务器具有 72 个处理器,可以处理多达 144 个多线程,该服务器的计算能力 几乎比任何高容量、大型机级服务器的计算能力都更胜一筹。 第 8 页 共 121 页 Sun Solaris OS Training * 可达 72 个 UltraSPARC IV 双线程处理器 * 单个域的内存超过 1/2 TB * 支持 120 TB 以上的存储 * 可达 18 个动态系统域 x64 服务器 AMD Opteron 处理器,大部分型号只支持 2 个处理器 Sun Fire X2100(单个处理器)/2200 M2/X4200/X4200 M2/X4500/X4600(8 个处理器) Sun Fire V40z(4 个处理器) 最多支持 4 个双核或单核 AMD Opteron 800 系列处理器 最高支持 64 GB 内存 最多支持 6 个 Ultra320 SCSI 磁盘 具有带内和带外控制的无人值守管理功能 支持多种操作系统,预装 Solaris10 第 9 页 共 121 页 Sun Solaris OS Training Sun Fire T 系列 Sun Fire T1000 6 或 8 个内核,1.0 GHz UltraSPARC T1 处理器 多达 16 GB 内存 4 个 10/100/1000 Mb/秒以太网端口 1U 高的外形尺寸 Sun Fire T2000 4、6 或 8 内核的 1.0-GHz 或 8 内核的 1.2-GHz UltraSPARC T1 处理器 多达 32 GB 内存 多达 4 个磁盘驱动器 2U 高的外形尺寸 (4)SUN Rack 系列 所有产品目前均为 60 厘米宽,188 厘米高 Sun Rack 1000-42 1000 代表深度 1000 毫米,42 代表最多可达 42 RU 空间 第 10 页 共 121 页 Sun Solaris OS Training 磁盘存储系统 数据中心磁盘 - Sun StorageTek 9990 系统 - Sun StorageTek 9985 系统 - Sun StorageTek 9980 系统 Sun StorageTek 9990 系统的容量 * 300 GB,10,000-rpm 驱动器:330 TB * 146 GB,10,000-rpm 驱动器:165 TB * 73 GB,15,000-rpm 驱动器::85 TB 中档磁盘 - Sun StorageTek 6140 磁盘阵列 - Sun StorageTek 6540 磁盘阵列 工作组磁盘 - Sun StorageTek 3510 FC 磁盘阵列 - Sun StorageTek 3320 SCSI 磁盘阵列 - Sun StorageTek 3120 SCSI 磁盘阵列 第 11 页 共 121 页 Sun Solaris OS Training 引导磁盘 - Sun StorageTek D240 介质托盘 Sun StorageTek D240 介质托盘是一种紧凑、可伸缩、高度灵活的存储解决方案,是为支持最新 Sun Fire 服务 器而专门设计的,可用作启动磁盘、数据加载和数据交换的解决方案。 此款介质托盘采用薄型、2U 架装式或机 顶式配置,可适应各种存储设备,包括可拆卸硬盘、DVD-RW 和磁带备份。 Sun StorageTek D240 介质托盘采 用单总线或双总线配置,每台系统最多可支持两个独立服务器根域,非常适合于安装软件修补程序、文件更新程 序和启动磁盘驱动器数据的磁带备份。作为标准功能,Sun StorageTek D240 介质托盘可通过两个热插拔、均分 负载电源得以优化,从而最大程度地提高系统可用性。 * 一个或两个总线配置选件 * 左右两侧的 5.25 英寸支架支持可以互换的磁盘、磁带或 DVD-RW 驱动器 * 两个均分负载、热插拔电源 * 2U 机架空间 磁带存储 磁带库用来安装多个磁带机 Sun StorageTek StreamLine SL8500 模块化磁带库系统消减成本且不会牺牲性能! 降低风险。 支持企业。 强 大的 Sun StorageTek StreamLine SL8500 模块化磁带库系统具有史无前例的价值,它可以提供增强的可靠性、 节省合并成本和灵活的可扩展性。 StreamLine SL8500 具有令人难以置信的经济效益,可以满足企业当前迫切 的数据存储需求。 可从 1,448 个插槽扩展为 300,000 个插槽,且不会造成系统停工 支持 64 到 2,048 个磁带机的任意组合 冗余和热插拔自动控制、电源及供电组件 第 12 页 共 121 页 Sun Solaris OS Training Sun StorageTek T10000 磁带机 提高了等级。 Sun StorageTek T10000 磁带机借助容量、吞吐量、可靠性和介质可复用性的技术优势,提高了 数据保护、效率和风险缓解的等级。 除了快达 500 GB 的容量和 120 MB/秒容量,T10000 磁带机还可以提供 巨大的容量并降低复杂性以提高信息应用,为企业 IT 部门提供优越的整体价值。 它可以通过多重可靠性增强功能、保密机就绪型设备加密及 Sun StorageTek VolSafe 安全介质技术帮助缓解风 险。 它通过轻松集成 Sun 解决方案及第三方解决方案,为任务繁重的企业和开放式环境提供了无比的简便性。 合理的价格及存储大量数据的可靠性能可以支持企业获得极限增长 120 MB/秒的突破性能可以缩短备份 Windows 的时间,通过较少的设备执行更多的任务,极大节省了时间和金 钱 可以通过高可用性功能(如 SafeGuide 系统)帮助确保业务连续性,以缓解数据中心的风险 T10000 磁带机上的 crypto-ready 技术可以增强安全性 虚拟磁带库 通过基于磁盘的虚拟磁带和磁带库模拟解决方案来解决备份/恢复问题,此解决方案适用于广泛的开放式系统环 境。 型号有 VTL1000/2000/3000 加速恢复,为用户找回急需的数据并确保数据完好无损 减少备份窗口,提高备份成功率,并增加磁盘到磁盘解决方案的可用性 降低数据保护成本并创造业务价值 第 13 页 共 121 页 Sun Solaris OS Training 虚拟磁带库存储设备可以从多个备份服务器和备份应用程序上管理数据 原始容量:5.6 到 179.2 TB 可用容量:3.8 到 139.5 TB 模拟:DLT、SDLT、LTO、LTO 3、StorageTek T9840 和 T9940 磁带机 StorageTek L 系列磁带库(L20 到 L700e) 虚拟磁带管理系统 Sun 的 StorageTek Virtual Storage Manager (VSM) 系统是用于大型机环境的市场领先的虚拟磁带解决方案。 VSM 通过最大化存储投资的价值和最小化大型机生产资源的使用率,提高了操作效率并降低了总拥有成本。 型号有 VSM4e/4/5 控制了成本,并且在管理大量数据增长时无需添加更多磁带库、驱动器和介质 通过离站透明地复制和迁移重要业务信息和/或自动根据策略制作附加副本,转移了风险 通过改善信息访问时间提高了客户服务水平 磁盘性能:15,000-rpm 磁盘驱动器 物理高速缓存:8 GB 1.25 TB-28TB 通道:FICON,ESCON;FICON(根据型号不同) 第 14 页 共 121 页 Sun Solaris OS Training Sun StorageTek Crypto 密钥管理站 对于数据可靠性和安全性对业务至关重要的客户及记录在磁带上的物理数据意外损失会造成重大财务汇密的客 户,Sun Microsystems 是其理想的解决方案。 Sun 可以通过加密为您提供卓越的性能、数据可靠性、数据完整 性、降低业务风险以及简化管理大量数据的能力。 此外,Sun 的专业服务产品还可以帮助客户定义加密策略, 提供处理建议和最佳实践,并实施整体加密解决方案。 执行数据加密,且不会对磁带机性能或磁带匣容量造成重大影响 保证数据在磁盘上的安全,可以提供诸多受益 不受设备约束的密钥管理 术语解释 PCI Express(标准) PCI Express (亦称为 PCIe),最初是由 Intel 公司所开发,被视为是取代 PCI 以提供更高频宽的最新 I/O 接口。 PCI Express 最明显的改善就是其点对点的拓朴,能够让共享交换器根据优先级,分配共享资源 (总线频宽) 给 接附的 PCI Express 装置。在此情况下,每个装置都可直接且独立地存取 (连接) 到交换器。此外,交换器将会 优先处理传输的资料,因此实时的应用程序将可以立即存取交换器。 NEBS: Network Equipment-Building System(网络设备制造系统) 第 15 页 共 121 页 Sun Solaris OS Training 第 16 页 共 121 页 指适用于电信枢纽内之电信设备的相关文件。 NEBS level 1(一级) 适用于对于人员和设备的安全以及对于网络性能影响程度最低的情形。 Level 1 并不强调可营运性,通常原型机 进场试用或者是区域性电信服务业者 (CLEC) 用来接续 RBOC 的网络设备都仅要求 Level 1 NEBS level 2(二级) 强调在特定环境下的可营运性,由于所谓 ” 特定 ” (Controlled) 的环境需明确定义,因此 Level 2 较不常见。 NEBS level 3(三级) 目前可认定的最高等级,也可说是电信机房等级 (Carrier Class) 。 GR-63-CORE 及 GR-1089-CORE 的各项 标准都需完全符合。 PICMG PCI Industrial Computer Manufacturer's Group PCI 工业计算机厂商组 AdvancedTCA 是一款瞄准电信基础架构的业界标准刀片架构。 从一开始,ATCA 就设计可用于 5-9 和 6-9 应用程序。 ATCA 是从 PICMG 标准体起的第三代刀片规格。 光纤连通性(FICON: Fiber Connectivity) 光纤连通性(FICON)是把服务器连接到存储设备一个高速输入/输出(I/O)接口。FICON 信道通过一个新架构和快 速物理链路速率的结合来增加 I/O 容量使它们是 ESCON(企业系统连接)的 8 倍效率。 FICON 信道通过光纤 电缆在不重复的距离达 20km 下提供 100-Mbps 双向链路速率。 ESCON 多重图象设备(EMIF: ESCON Multiple Image Facility) ESCON 多重图象设备(EMID)是主机 I/O 软件功能,其允许一个企业系统连接(ESCON)信道在相同主机的多重逻 辑分区中被共享。 1.4 了解更多 Sun 公司的网站 http://www.sun.com/网站是有关Sun技术的主要站点,包括了所有Sun技术的内容。 http://www.sun.com/software/Solaris 10/是介绍有关Solaris 10 的网站。 http://docs.sun.com/Solaris网站包含所有关于Solaris的文档。 Sun Solaris OS Training 第 17 页 共 121 页 Sun 公司的中国技术社区网站 http://developers.sun.com.cn 中文社区网站 http://www.chinaunix.net是中国最大的Solaris论坛网站。 http://www.unix-center.net提供了多个版本的Solaris操作系统可供学习和测试 Sun Solaris OS Training 第 18 页 共 121 页 2、系统安装 2.1 安装 Solaris 之后的 9 个主要的设置 1. 下载并安装最新的补丁 e.g. ftp://sunsolve.sun.com/pub/patches/ 8_Recommended.zip J2SE_Solaris_8_Recommended.zip 安装补丁前,kill dtlogin 和 inetd 进程,以确保没有人登录进系统。安装后重启系统。 2. 设置路由: vi /etc/defaultrouter, add the default gateway to the file. # cat /etc/defaultrouter 10.6.2.1 3. 设置 DNS:vi /etc/resolv.conf # cat /etc/resolv.conf nameserver 10.6.2.15 nameserver 10.0.13.11 search sz.mydomain.com abcd.mydomain.com mydomain.com abcd.com 4. vi /etc/nsswitch.conf 在 hosts:file 后,加上 dns, e.g. # cat /etc/nsswitch.conf hosts: files dns ...... 5. 把管理域的域名加到 /etc/defaultdomain 中。 e.g. # cat /etc/defaultdomain abcd.sz 注意:这个域名与主机的 DNS 域名是两个概念。这是基于管理的需要而设,与实际 DNS 可不相同。 6. vi /etc/hosts # cat /etc/hosts # # Internet host table # 127.0.0.1 localhost 10.6.3.191 admin Sun Solaris OS Training 第 19 页 共 121 页 # 10.6.3.192 db1 10.6.3.193 app1 10.0.13.5 loghost 7. 为 man 建立 index,这样就可用 man -k 搜索。 catman -w 8. 建立一个管理用户作为远程登录,用 su 来管理 # user add -s /usr/bin/bash -d /export/home/admin -m admin # passwd admin 9. 下载并安装 Sudo 请参考: http://www.chinaunix.net/bbsjh/3/10466.html 实际工作中,这是很有用的:不必告诉有特殊需要的普通用户关的 Root 的帐号,但给他权限。Sudo 的 操作是有记录可查的,可将 log 放到远程的 log 服务器中。 2.2 安装 Solaris 之后 NFS 安装和配置 NFS 服务器(被共享) 1.启动服务 /etc/rc3.d/S15nfs.server start 2:共享目录 vi /etc/dfs/dfstab e.g. # hostname admin # cat /etc/dfs/dfstab share -F nfs -o ro=db1:app1:app2:app3:app4,anon=0 /usr/js share -F nfs -o rw=db1:app1:app2:app3:app4,nosuid /home 3. 诊断 查看服务器的已共享资源 dfshares 查看共享资源被利用的状况 dfmounts NFS 客户端(使用共享) 1.启动服务 /usr/lib/nfs/statd Sun Solaris OS Training 第 20 页 共 121 页 2. 运行 mount , e.g. app4# mount admin:/home /home 3. 开机自动 mount vi /etc/vfstab, 加入新的一行启动 mount 配置: e.g app4:~% cat /etc/vfstab #device device mount FS fsck mount mount admin:/home - /home nfs - yes - ..... 这样,开机后,系统自动将 admin:/home 目录 mount 到 app4 的/home 目录. 关于 Linux 的 NFS 与 Solaris 不同点: 1. Solaris 的目录共享设置文件是/etc/dfs/dfstab, 而 RadHat Linux 共享目录设置文件是/etc/exports 2. Solaris 开机自动 mount 设置文件是/etc/vfstab, 而 RadHat Linux 开机自动 mount 设置文件是 /etc/fstab 2.3 安装 Solaris 之后 NIS 安装和配置 参见:http://www.chinaunix.net/bbsjh/3/13779.html Server 1. /etc/nsswitch.conf e.g. # cat /etc/nsswitch.conf passwd: files nis group: files nis netgroup: files nis ... 2. vi /etc/defaultdomain e.g. # cat /etc/defaultdomain agile.sz 注意:这个域名与主机的 DNS 域名是两个概念。这是基于管理的需要而设,与实际 DNS 可不相同。 Sun Solaris OS Training 第 21 页 共 121 页 3. /var/yp/Makefile 4. ypinit -m 5. 启动 /usr/lib/netsvc/yp/ypstart 6. 诊断 ypcat hosts ypcat passwd yp which -m Client 1. /etc/nsswitch.conf e.g. # cat /etc/nsswitch.conf passwd: files nis group: files nis netgroup: files nis ... 2./etc/hosts #app4:~% cat /etc/hosts 10.6.3.197 app4.sz 10.6.3.191 admin 3. /etc/defaultdomain #app4:~% cat /etc/defaultdomain agile.sz 注意:要与 Server 的设置相同。 4. ypinit -c 5./usr/lib/netSvc/yp.ypstart 根据所示,输入 NIS Server 的 hostame:admin 6. 诊断 ypcat hosts ypcat passwd Sun Solaris OS Training 第 22 页 共 121 页 7.增加 NIS 用户: login to nis server:admin run /var/yp/etc/adduser to add NIS users, run /var/yp/etc/rsetpass to change Nis users password. If you want to perm change and IP, you need to change files: /etc/hosts /etc/hostname.interfacename depends on your network configuration, you might also need to change: /etc/defaultrouter /etc/netmasks Reset the hostname---use this command: uname -S newname reboot 2.4 挂接文件资源 1.mount 文件系统挂接 本地或远程文件资源被接到根文件层次,看起来就象是一个单一的文件系统.这个连接操作称为“挂接”, 利用 mount 命令完成 文件资源挂接到根文件层次的目录被称为挂接点.在调用挂接命令前,挂接点必须 存在. 命令格式: mount file_name mount_point 没有选项的 mount 命令显示当前已挂接的文件资源. 例子: # mount /dev/dsk/c0t3d0s0 /export/home Sun Solaris OS Training 第 23 页 共 121 页 监视文件系统 2. df 显示文件系统所占用的硬盘空间 df -k 命令按 Kbytes 显示可用硬盘空间的总量和已用的硬盘空间. 各域的含义为: Filesystem 被挂接的文件系统. Kbytes 按 Kbyte 计算的文件系统大小. Used 已用的数量(Kbytes). Avail 可用的数量(Kbytes). Capacity 已用的百分比. Mounted on 挂接点. 注意:大约 10%的硬盘空间为文件系统保留,在 df -k 命令的输出中没有反映这一点. 3.umount 摘下文件资源 从本地系统上摘下文件资源,超级用户可使用 umount 命令. 命令格式: # umount mount_point 如果在被挂接的文件资源目录里有活动,则文件资源不可摘下.在摘下前 cd 至/ 目录是一个很好的习惯, 不要不加区别地将系统正常运转所需要的文件系统摘下. 2.5 自动挂接文件资源 /etc/vfstab 文件 系统引导时读/etc/vfstab 文件以自动挂接文件资源.该文件包含本地和远程文件资源的登记项.各域的含 义: Device-to-mount 标识 NFS 服务器和文件系统,或被挂接的本地文件系统. Device-to-fsck 标识用于执行 fsck 的本地原始设备. Mount point 挂接点路径. FS-type 文件系统类型,通常是 ufs 用于本地文件系统,nfs 用于远程文件系统. Fsck-pass 此域中的数字是 fsck 经过文件系统检查的顺序,相重的数字表示检查并行进行. Mount-at-boot 决定文件系统是否在系统引导时被自动挂接. Mount-options 定义挂接选项,如读/写访问. Sun Solaris OS Training 第 24 页 共 121 页 域中的-表示无选项. /dev/[r]dsk/cwtxdysz 用于本地 ufs 文件系统.w,s,y,z 分别表示控制器、目标、设备、片.一旦系统建立, 手工在单机系统的/etc/vfstab 文件中加入远程文件资源登记项. 2.6 NFS 资源 Sun 的 NFS 分布式文件系统允许在网络上的机器共享他们的资源.NFS 文件系统使机器共享本地文件系 统和目录,允许远程用户象本地用户那样访问这些文件系统和目录. 1.share,shareall 共享文件资源 share –o ro user directory /etc/init.d/nfs.server start 2.dfshares 显示远程机共享资源 dfshares remote 3.mount 挂接远程文件资源 mount remote:directory localdir 2.7 卷管理 1./etc/init.d/volmgt [start|stop] 启动卷管理 2.volcheck 检查软盘,如有挂接在 floppy 目录下 3.eject [cdrom|floppy] 弹出设备 2.8 系统操作等级 1. 运行等级说明 在 Solaris 2.x 环境中有 8 个系统运行等级,这里涉及到 4 个等级: (1) 运行等级 3 运行等级 3 也就是完全多用户模式.这是系统的缺省运行等级,也是系统的缺省状态所有系统处理均被 执行,文件资源可用挂接,用户可用注册. (2) 运行等级 s,S 运行等级 S 是单用户模式,是一个特殊的运行等级.操作系统正在执行,但是所有用户均被注销,大多 数系统处理如打印、邮件等都没有执行.只有一个用户,即超级用户向系统注册.运行等级 S 对执行备份 Sun Solaris OS Training 第 25 页 共 121 页 是很方便的,因为没有用户注册,所以所有数据都是稳定的. 系统由 shutdown 命令带入运行等级 s,S. (3) 运行等级 0 该等级关闭(shutdown)系统至 PROM 等级,所以此等级对于关电源是安全的. (4) 运行等级 5 该等级关闭(shutdown)系统至关电源状态. (4) 运行等级 6 运行等级 6 用于关闭(halt)系统至等级 0 并重新引导至等级 3. 2. 显示运行等级 调用 who -r 命令可以显示系统的运行等级. $ who -r run-level 3 Feb 6 15:46 3 2 S 在此例中,系统在缺省等级 3.其他域表示: Feb 6 15:46 最后一次运行等级改变的日期和时间. 3 当前运行等级. 2 最后一次再引导后在此运行等级的次数. S 前一运行等级. 3.关闭系统的原因 (1)SunTM 工作站设计为大部分时间是工作时间.但也有必须关闭系统的时候,运行 等级 S 用于系统维 护,如完成备份等.这一系统等级的变化仍被认为是关闭. (2) 改变一个系统的配置,如增加或删除某个磁带机或 CD-ROM 机. (3) 改变系统硬件配置,如增加或去除一个 CPU 板子. (4) 从极端情况的恢复,假如一个挂起的工作站对所有的恢复工作都不反应,可能就必须关掉电源重新 开始. 4.关闭系统(shutting down) 关闭系统的方式根据关闭的原因而不同.执行关闭有的是为了转至执行等级 S,有的是要停止操作系统并 关闭设备的电源. halt init 0 (3)紧急关闭 Sun Solaris OS Training 第 26 页 共 121 页 .紧急情况,按 Stop_A,如 Stop_A 不起作用,则将设备电源关闭再打开.这是不得已的极端情况.这两种 方法不是干净的关闭,是突然关闭的,仅在紧急情况使用. 例子 1.增加一个磁带机并完成重新配置引导: (1)成为超级用户,并确认在/(root)目录下. (2)键入 touch 命令: # touch /reconfigure (3)键入如下关闭命令: #halt (4) 关闭设备电源. (5) 增加磁带机. (6) 给设备通电. 2.从挂起的工作站上恢复 如一挂起的工作站对所有键入的命令无反应时,用以下过程恢复: (1) 按下 Stop_A 放弃系统并移至 PROM 监控等级,提示符为: > 或 ok (2)键入 sync 命令来同步磁盘. (3)一旦看见“Syncing file system ... done”信息,再按下 Stop_A. (4)发出 boot 命令来返回至多用户模式. 3.从轻微问题中恢复 如/etc/default/login 登记项阻止超级用户注册,也没有用户帐号可以注册,可采用以下步骤恢复: (1) 按 Stop_A 放弃系统并移至 PROM 监控等级. (2) 输入 sync 命令来同步磁盘. (3) 一旦看见“Syncing file system ... done”信息,再按下 Stop_A. (4) 发出 boot -s 命令至执行等级 S. ok boot -s (5) 修改/etc/default/login 文件以使得 root 可以注册. # cd /etc/default # vi login (6) 按 Control_D,进入运行等级 3. 在此过程中,你可能会被提示要输入 root 口令. Sun Solaris OS Training 第 27 页 共 121 页 4.从重要问题中恢复 如果你忘记了 root 口令,或是在/etc/passwd 文件中 root 项无效,则可用以下步骤恢复: (1) 从 Solaris 2.x 安装 CD-ROM 盘上作单独引导. # boot cdrom -sw (2) 如需要,可设置终端类型. #TERM=sun; export TERM (3) 挂接适当的文件系统并编辑 passwd 和 shadow 文件. # cd / # mount /dev/dsk/c0t3d0s0/mnt # cd /mnt/etc # vi shadow (4) 卸下文件系统. # umount /mnt (5) 重新引导系统. # reboot Sun Solaris OS Training 第 28 页 共 121 页 3、Unix 命令 3.1 文件的复制、删除和移动 1. cp 作用:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中。 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。 该命令的各选项含义如下: - a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于 dpR 选项的组合。 - d 拷贝时保留链接。 - f 删除已经存在的目标文件而不提示。 - i 和 f 选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答 y 时目标文件将被覆盖,是交互式拷贝。 - p 此时 cp 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 - r 若给出的源文件是一目录文件,此时 cp 将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个 目录名。 - l 不作拷贝,只是链接文件。 需要说明的是,为防止用户在不经意的情况下用 cp 命令破坏另一个文件,如用户指定的目标文件名已存在, 用 cp 命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用 cp 命令拷贝文件时,最好使用 i 选项。 2. mv 作用:用户可以使用 mv 命令来为文件或目录改名或将文件由一个目录移入另一个目录中。 语法:mv [选项] 源文件或目录 目标文件或目录 说明:视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个 新的目录中。当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目 录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目 Sun Solaris OS Training 第 29 页 共 121 页 录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv 先拷贝, 再将原有文件删除,而链至该文件的链接也将丢失。 命令中各选项的含义为: - I 交互方式操作。如果 mv 操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答 y 或 n,这样可以避免误覆盖文件。 - f 禁止交互操作。在 mv 操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i 选项将不再起作用。 如果所给目标文件(不是目录)已存在,此时该文件的内容将被新文件覆盖。为防止用户用 mv 命令破坏另一个 文件,使用 mv 命令移动文件时,最好使用 i 选项。 3.rm 作用:用户可以用 rm 命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也 可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。 语法:rm [选项] 文件… 说明:如果没有使用- r 选项,则 rm 不会删除目录。 该命令的各选项含义如下: - f 忽略不存在的文件,从不给出提示。 - r 指示 rm 将参数中列出的全部目录和子目录均递归地删除。 - i 进行交互式删除。 使用 rm 命令要小心。因为一旦文件被删除,它是不能被恢复的。了防止这种情况的发生,可以使用 i 选项来逐 个确认要删除的文件。如果用户输入 y,文件将被删除。如果输入任何其他东西,文件则不会删除。 3.2 目录的创建与删除 1.mkdir 作用:创建一个目录(类似 MSDOS 下的 md 命令)。 语法:mkdir [选项] dir-name 说明:该命令创建由 dir-name 命名的目录。要求创建目录的用户在当前目录中(dir-name 的父目录中)具有写 权限,并且 dirname 不能是当前目录中已有的目录或 文件名称。 Sun Solaris OS Training 第 30 页 共 121 页 命令中各选项的含义为: - m 对新建目录设置存取权限。也可以用 chmod 命令设置。 - p 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存 在的目录,即一次可以建立多个目录。 2.rmdir 作用:删除空目录。 语法:rmdir [选项] dir-name 说明:dir-name 表示目录名。该命令从一个目录中删除一个或多个子目录项。需要 特别注意的是,一个目录被 删除之前必须是空的。rm - r dir 命令可代替 rmdir,但是有危险性。删除某目录时也必须具有对父目录的写权限。 命令中各选项的含义为: - p 递归删除目录 dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某 种原因保留部分路径,则系统在标准输出上显示相应 的信息。 3.cd 作用:改变工作目录。 语法:cd [directory] 说明:该命令将当前目录改变至 directory 所指定的目录。若没有指定 directory, 则回到用户的主目录。为了改 变到指定目录,用户必须拥有对指定目录的执行和读 权限。 该命令可以使用通配符。 4.pwd 作用:在 Unix 层次目录结构中,用户可以在被授权的任意目录下利用 mkdir 命令创建新目录,也可以利用 cd 命 令从一个目录转换到另一个目录。然而,没有提示符来告知用 户目前处于哪一个目录中。要想知道当前所处的目 录,可以使用 pwd 命令,该命令显示整个路径名。 语法:pwd 说明:此命令显示出当前工作目录的绝对路径。 5.ls Sun Solaris OS Training 第 31 页 共 121 页 作用:ls 是英文单词 list 的简写,其功能为列出目录的内容。这是用户最常用的一个命令之一,因为用户需要不 时地查看某个目录的内容。该命令类似于 DOS 下的 dir 命令。 语法:ls [选项] [目录或是文件] 说明:对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls 将输出 其文件名以及所要求的 其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。 命令中各选项的含义如下: - a 显示指定目录下所有子目录与文件,包括隐藏文件。 - A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”和 “..”。 - b 对文件名中的不可显示字符用八进制逃逸字符显示。 - c 按文件的修改时间排序。 - C 分成多列显示各项。 - d 如果参数是目录,只显示其名称而不显示其下的各文件。往往与 l 选项一起使 用,以得到目录的详细信息。 - f 不排序。该选项将使 lts 选项失效,并使 aU 选项有效。 - F 在目录名后面标记“/”,可执行文件后面标记“*”,符号链接后面标记 “@”,管道(或 FIFO)后面标记“|”,socket 文件后面标记“=”。 - i 在输出的第一列显示文件的 i 节点号。 - l 以长格式来显示文件的详细信息。这个选项最常用。 每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小 建立或最近修改的时间 名字 对于符号链接文件,显示的文件名之后有“—〉”和引用文件路径名。 对于设备文件,其“文件大小”字段显示主、次设备号,而不是文件大小。 目录中的总块数显示在长格式列表的开头,其中包含间接块。 - L 若指定的名称为一个符号链接文件,则显示链接所指向的文件。 - m 输出按字符流格式,文件跨页显示,以逗号分开。 - n 输出格式与 l 选项相同,只不过在输出中文件属主和属组是用相应的 UID 号和 GID 号来表示,而不是实际的 名称。 - o 与 l 选项相同,只是不显示拥有者信息。 Sun Solaris OS Training 第 32 页 共 121 页 - p 在目录后面加一个“/”。 - q 将文件名中的不可显示字符用“?”代替。 - r 按字母逆序或最早优先的顺序显示输出结果。 - R 递归式地显示指定目录的各个子目录中的文件。 - s 给出每个目录项所用的块数,包括间接块。 - t 显示时按修改时间(最近优先)而不是按名字排序。若文件修改时间相同,则 按字典顺序。修改时间取决于 是否使用了 c 或 u 选顶。缺省的时间标记是最后一次修 改时间。 - u 显示时按文件上次存取的时间(最近优先)而不是按名字排序。即将-t 的时间 标记修改为最后一次访问的时 间。 - x 按行显示出各排序项的信息。 用 ls - l 命令显示的信息中,开头是由 10 个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类 型之一: - 普通文件 d 目录 l 符号链接 b 块设备文件 c 字符设备文件 后面的 9 个字符表示文件的访问权限,分为 3 组,每组 3 位。 第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字 符分别 表示对文件的读、写和执行权限。 各权限如下所示: r 读 w 写 x 执行。对于目录,表示进入权限。 s 当文件被执行时,把该文件的 UID 或 GID 赋予执行进程的 UID(用户 ID)或 GID(组 ID)。 Sun Solaris OS Training 第 33 页 共 121 页 t 设置标志位(留在内存,不被换出)。如果该文件是目录,在该目录中的文件只能被超级用户、目录拥有者或文 件属主删除。如果它是可执行文件,在该文件执行 后,指向其正文段的指针仍留在内存。这样再次执行它时,系 统就能更快地装入该文件。 3.3 文本处理 1.sort 作用:对文件中的各行进行排序。sort 命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内 容进行各种排序操作的。实际上,sort 命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据 库记录的文件。Sort 命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的 下一字符,如果还相同,将继续进行比较。 语法: sort [选项] 文件 说明:sort 命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“- ”,则 表示排序内容来自标准输入。sort 排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字 定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按 ASCII 字符顺序进行排序。 改变缺省设置的选项主要有: - m 若给定文件已排好序,合并文件。 - c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值 1 退出。 - u 对排序后认为相同的行只留其中一行。 - o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort 先将该文件的内 容写入一个临时文件,然后再排序和写输出结果。 改变缺省排序规则的选项主要有: - d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。 - f 将小写字母与大写字母同等对待。 - I 忽略非打印字符。 - M 作为月份比较:“JAN”<“FEB” - r 按逆序输出排序结果。 Sun Solaris OS Training 第 34 页 共 121 页 +posl - pos2 指定一个或几个字段作为排序关键字,字段位置从 posl 开始,到 pos2 为止(包括 posl,不包括 pos2)。如不指定 pos2,则关键字为从 posl 到行尾。字段和字符的位置从 0 开始。 - b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。 - t separator 指定字符 separator 作为字段分隔符。 2.uniq 作用:文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用 cat 命令将两个文件合并后,再使用 sort 命令进行排序,就可能出现重复行。这时可以使用 uniq 命令将这些重复行从输出文件中删除,只留下每条记 录的唯一样本。 语法:uniq [选项] 文件 说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较 是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如 果输入文件用“- ”表示,则从标准输入读取。 该命令各选项含义如下: - c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u 和- d 选项。 - d 只显示重复行。 - u 只显示文件中不重复的各行。 - n 前 n 个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和 空格隔开(字段从 0 开始编号)。 +n 前 n 个字符被忽略,之前的字符被跳过(字符从 0 开始编号)。 - f n 与- n 相同,这里 n 是字段数。 - s n 与+n 相同,这里 n 是字符数。 3.4 备份与压缩 1.tar 作用:tar 可以为文件和目录创建档案。利用 tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案 中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建 Sun Solaris OS Training 第 35 页 共 121 页 档案,如软盘。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件 组合成为一个文件以便于网络传输是非常有用的。Linux 上的 tar 是 GNU 版本的。 语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉 tar 要做什么事情,辅选项是辅助使用的,可以选用。 主选项: c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记 备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。 t 列出档案文件的内容,查看已经备份了哪些文件。 u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备 份文件的最后。 x 从档案文件中释放文件。 辅助选项: b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为 20(20*512 bytes)。 f 使用档案文件或设备,这个选项通常是必选的。 k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。 m 在还原文件时,把所有文件的修改时间设定为现在。 M 创建多卷的档案文件,以便在几个磁盘中存放。 v 详细报告 tar 处理的文件信息。如无此选项,tar 不报告文件信息。 w 每一步都要求确认。 z 用 gzip 来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压 缩。 2.gzip 作用:减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时 间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 语法:gzip [选项] 压缩(解压缩)的文件名 Sun Solaris OS Training 第 36 页 共 121 页 各选项的含义: -c 将输出写到标准输出上,并保留原有文件。 -d 将压缩文件解压。 -l 对每个压缩文件,显示下列字段: 压缩文件的大小 未压缩文件的大小 压缩比 未压缩文件的名字 -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。 -t 测试,检查压缩文件是否完整。 -v 对每一个压缩和解压的文件,显示文件名和压缩比。 -num 用指定的数字 num 调整压缩的速度,-1 或–fast 表示最快压缩方法(低压缩比),-9 或–best 表示最慢压缩 方法(高压缩比)。系统缺省值为 6。 3.unzip 作用:用于解扩展名为.zip 的压缩文件。 语法:unzip [选项] 压缩文件名.zip 各选项的含义分别为: -x 文件列表 解压缩文件,但不包括指定的 file 文件。 -v 查看压缩文件目录,但不解压。 -t 测试文件有无损坏,但不解压。 -d 目录 把压缩文件解到指定目录下。 -z 只显示压缩文件的注解。 -n 不覆盖已经存在的文件。 -o 覆盖已存在的文件且不要求用户确认。 -j 不重建文档的目录结构,把所有文件解压到同一目录下。 Sun Solaris OS Training 第 37 页 共 121 页 3.5 改变文件或目录的访问权限 Unix 系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和 操作。 文件或目录的访问权限分为只读,只写和 可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止 对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所 有者自动拥有 对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何 组合。 有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的 创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况 下,系统中每一位用户都能访问该用户拥有的文件或目录。 每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的 用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用 ls -l 命令显示文件或目录的详细信息时, 最左边的一列为文件的访问权限。例如: $ ls -l sobsrc. tgz -rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz 横线代表空许可。r 代表只读,w 代表写,x 代表可执行。注意这里共有 10 个位置。第一个字符指定了文件类型。 在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是 d,表 示是一个目录。 例如: - rw- r– r– 普通文件 文件主 组用户 其他用户 是文件 sobsrc.tgz 的访问权限,表示 sobsrc.tgz 是一个普通文件;sobsrc.tgz 的属主有读写权限;与 sobsrc.tgz 属主同组的用户只有读权限;其他用户也只有读权限。 确定了一个文件的访问权限后,用户可以利用 Linux 系统提供的 chmod 命令来重新设定不同的访问权限。也可 以利用 chown 命令来更改某个文件或目录的所有者。利用 chgrp 命令来更改某个文件或目录的用户组。 下面分别对这些命令加以介绍。 Sun Solaris OS Training 第 38 页 共 121 页 1.chmod 作用:chmod 命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。 语法:该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 (1)文字设定法 chmod [who] [+ | - | =] [mode] 文件名 命令中各选项的含义为: 操作对象 who 可是下述字母中的任一个或者它们的组合: u 表示“用户(user)”,即文件或目录的所有者。 g 表示“同组(group)用户”,即与文件属主有相同组 ID 的所有用户。 o 表示“其他(others)用户”。 a 表示“所有(all)用户”。它是系统默认值。 操作符号可以是: + 添加某个权限。 - 取消某个权限。 = 赋予给定权限并取消其他所有权限(如果有的话)。 设置 mode 所表示的权限可用下述字母的任意组合: r 可读。 w 可写。 x 可执行。 X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加 x 属性。 s 在文件执行时把进程的属主或组 ID 置为该文件的文件属主。方式“u+s”设置文件的用户 ID 位,“g+s”设置组 ID 位。 t 保存程序的文本到交换设备上。 u 与文件属主拥有一样的权限。 g 与和文件属主同组的用户拥有一样的权限。 Sun Solaris OS Training 第 39 页 共 121 页 o 与其他用户拥有一样的权限。 文件名:以空格分开的要改变权限的文件列表,支持通配符。 在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example 使同组和其他用户对文件 example 有读权限。 (2)数字设定法 我们必须首先了解用数字表示的属性的含义:0 表示没有权限,1 表示可执行权限,2 表示可写权限,4 表示可读 权限,然后将其相加。所以数字属性的格式应为 3 个从 0 到 7 的八进制数,其顺序是(u)(g)(o)。 例如,如果想让某个文件的属主有“读/写”二种权限,需要把 4(可读)+2(可写)=6(读/写)。 数字设定法的一般形式为: chmod [mode] 文件名 2.chgrp 作用:改变文件或目录所属的组。 语法:chgrp [选项] group filename? 说明:该命令改变指定指定文件所属的用户组。其中 group 可以是用户组 ID,也可以是/etc/group 文件中用户 组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户, 则不能改变该文件的组。 该命令的各选项含义为: - R 递归式地改变指定目录及其下的所有子目录和文件的属组。 3. chown 作用:更改某个文件或目录的属主和属组。这个命令也很常用。例如 root 用户把自己的一个文件拷贝给用户 xu, 为了让用户 xu 能够存取这个文件,root 用户应该把这个文件的属主设为 xu,否则,用户 xu 无法存取这个文件。 语法:chown [选项] 用户或组 文件 说明:chown 将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户 ID。组可以是组名或组 ID。 文件是以空格分开的要改变权限的文件列表,支持通配符。 该命令的各选项含义如下: - R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。 Sun Solaris OS Training 第 40 页 共 121 页 - v 显示 chown 命令所做的工作。 3.6 修改密码,改变用户 1.passwd 作用:出于系统安全考虑,Unix 系统中的每一个用户除了有其用户名外,还有其对应的用户口令。因此使用 useradd 命令增加时,还需使用 passwd 命令为每一位新增加的用户设置口令;用户以后还可以随时用 passwd 命令改变自 己的口令。 该命令的一般格式为: passwd [用户名] 其中用户名为需要修改口令的用户名。只有超级用户可以使用“passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的 passwd 命令修改自己的口令。 该命令的使用方法如下: 输入 passwd< Enter>; 在(current) UNIX passwd:下输入当前的口令 在 new password:提示下输入新的口令(在屏幕上看不到这个口令): 系统提示再次输入这个新口令。 输入正确后,这个新口令被加密并放入/etc/shdow 文件。选取一个不易被破译的口令是很重要的。 选取口令应遵守如下规则: 口令应该至少有六位(最好是八位)字符; 口令应该是大小写字母、标点符号和数字混杂的。 超级用户修改其他用户(xxq)的口令的过程如下, # passwd root New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully # Sun Solaris OS Training 第 41 页 共 121 页 2.su 作用:可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户的身份做一些事情。 普通用户使用这个命令时必须有超级用户或其他用户的口令。如要离开当前用户的身份,可以打 exit。 语法:su [选项] [? ] [使用者帐号] 说明:若没有指定使用者帐号,则系统预设值为超级用户 root。 该命令中各选项的含义分别为: c 执行一个命令后就结束。 加了这个减号的目的是使环境变量和欲转换的用户相同。 m 保留环境变量不变。 3.7 系统管理 1.wall 这个命令的功能是对全部已登录的用户发送信息,用户可以先把要发送的信息写好存入一个文件中,然后输入: # wall < 文件名 这样就能对所有的用户发送信息了。 在上面的例子中符号“<”表示输入重定向,有关它的含义和用法请参阅第十章的有关内容。 例如: # wall ‘Thank you!’ Broadcast message from root (tty1) Fri Nov 26 14:15:07 1999… Thank you! # 执行以上命令后,用户的屏幕上显示出“Thank you!”信息后,并不出现系统提示符$(#),再次按回车键后,屏 幕出现系统提示符。 2.write 作用:向系统中某一个用户发送信息。 语法:write 用户帐号 [终端名称] 例如: $ write Guest hello Sun Solaris OS Training 第 42 页 共 121 页 此时系统进入发送信息状态,用户可以输入要发送的信息,输入完毕,希望退出发送状态时,按组合键< Ctrl+c> 即可。 3.mesg 作用:mesg 命令设定是否允许其他用户用 write 命令给自己发送信息。如果允许别人给自己发送信息,输入命令: # mesg y 否则,输入: # mesg n 对于超级用户,系统的默认值为 n;而对于一般用户系统的默认值为 y。 如果 mesg 后不带任何参数,则显示当 前的状态是 y 还是 n.。 4.sync 作用:是在关闭 Unix 系统时使用的。 用户需要注意的是,不能用简单的关闭电源的方法关闭系统,因为在内存 中缓存了许多数据,在关闭系统时需要进行内存数据与硬盘数据的同步校验,保证硬盘数据在关闭系统时是最新 的,只有这样才能确保数据不会丢失。一般正常的关闭系统的过程是自动进行这些工作的,在系统运行过程中也 会定时做这些工作,不需要用户干预。 sync 命令是强制把内存中的数据写回硬盘,以免数据的丢失。用户可以 在需要的时候使用此命令。 语法:sync 5.shutdown 作用:可以安全地关闭或重启 Unix 系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命 令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。精确时间的格式 是 hh:mm,表示小时和分钟;时间段由“+”和分钟数表示。系统执行该命令后,会自动进行数据同步的工作。 语法: shutdown [选项] [时间] [警告信息] 命令中各选项的含义为: - k 并不真正关机,而只是发出警告信息给所有用户。 - r 关机后立即重新启动。 - h 关机后不重新启动。 - f 快速关机,重启动时跳过 fsck。 - n 快速关机,不经过 init 程序。 Sun Solaris OS Training 第 43 页 共 121 页 - c 取消一个已经运行的 shutdown。 需要特别说明的是,该命令只能由超级用户使用。 6.free 作用:查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心 使用的缓冲区。 语法: free [-b | -k | -m] 命令中各选项的含义如下: -b 以字节为单位显示。 -k 以 K 字节为单位显示。 -m 以兆字节为单位显示。 7.uptime 作用:显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少 登录用户、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。 语法: uptime 3.8 磁盘管理 1.df 作用:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间 等信息。 语法:df [选项] 说明:df 命令可显示所有文件系统对 i 节点和磁盘块的使用情况。 该命令各个选项的含义如下: -a 显示所有文件系统的磁盘使用情况,包括 0 块(block)的文件系统,如/proc 文件系统。 -k 以 k 字节为单位显示。 -i 显示 i 节点信息,而不是磁盘块。 Sun Solaris OS Training 第 44 页 共 121 页 -t 显示各指定类型的文件系统的磁盘空间使用情况。 -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与 t 选项相反)。 -T 显示文件系统类型。 2.du 作用:du 的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。 统计目录(或文件)所占磁盘空间的大 小。 语法:du [选项] [Names…] 说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024 字节)的情况。若没有 给出 Names,则对当前目录进行统计。 该命令的各个选项含义如下: -s 对每个 Names 参数只给出占用的数据块总数。 -a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示 Names 中的每一个目录及其中的各子目录所占的磁盘块数。 -b 以字节为单位列出磁盘空间使用情况(系统缺省以 k 字节为单位)。 -k 以 1024 字节为单位列出磁盘空间使用情况。 -c 最后再加上一个总计(系统缺省设置)。 -l 计算所有的文件大小,对硬链接文件,则计算多次。 -x 跳过在不同文件系统上的目录不予统计。 3.dd 作用:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现 DOS 下的 diskcopy 命令的作用。先用 dd 命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二 张软盘上,完成 diskcopy 的功能。需要注意的是,应该将硬盘上的寄存文件用 rm 命令删除掉。系统默认使用标 准输入文件和标准输出文件。 语法:dd [选项] if =输入文件(或设备名称)。 of =输出文件(或设备名称)。 Sun Solaris OS Training 第 45 页 共 121 页 ibs = bytes 一次读取 bytes 字节,即读入缓冲区的字节数。 skip = blocks 跳过读入缓冲区开头的 ibs*blocks 块。 obs = bytes 一次写入 bytes 字节,即写入缓冲区的字节数。 bs = bytes 同时设置读/写缓冲区的字节数(等于设置 ibs 和 obs)。 cbs = byte 一次转换 bytes 字节。 count=blocks 只拷贝输入的 blocks 块。 conv = ASCII 把 EBCDIC 码转换为 ASCIl 码。 conv = ebcdic 把 ASCIl 码转换为 EBCDIC 码。 conv = ibm 把 ASCIl 码转换为 alternate EBCDIC 码。 conv = block 把变动位转换成固定字符。 conv = ublock 把固定位转换成变动位。 conv = ucase 把字母由小写转换为大写。 conv = lcase 把字母由大写转换为小写。 conv = notrunc 不截短输出文件。 conv = swab 交换每一对输入字节。 conv = noerror 出错时不停止处理。 conv = sync 把每个输入记录的大小都调到 ibs 的大小(用 NUL 填充)。 4.fdformat 作用:软盘是用户常用的存储介质之一。软盘在使用之前必须先作格式化操作,然后可以用 tar、dd、cpio 等命 令存储数据,也可以在软盘上建立可安装的文件系统。低级格式化软盘 语法:format [-n] device 说明:该命令的作用是对软盘进行格式化。 -n 软盘格式化后不作检验。 device 指定要进行格式化的设备,通常是下述设备之一: /dev/fd0d360 Sun Solaris OS Training 第 46 页 共 121 页 /dev/fd0h1200 /dev/fd0D360 /dev/fd0H360 /dev/fd0D720 /dev/fd0H720 /dev/fd0h360 /dev/fd0h720 /dev/fd0H1440 3.9 其它命令 1.echo 作用:在显示器上显示一段文字,一般起到一个提示的作用。 语法: echo [ -n ] 字符串 说明:其中选项 n 表示输出文字后不换行;字符串可以加引号,也可以不加引号。用 echo 命令输出加引号的字 符串时,将字符串原样输出;用 echo 命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出, 各字符串之间用一个空格分割。 2.cal 作用:显示某年某月的日历。 语法: cal [选项] [月 [年]] 命令中各选项的含义为: - j 显示出给定月中的每一天是一年中的第几天(从 1 月 1 日算起)。 - y 显示出整年的日历。 3.date 作用:显示和设置系统日期和时间。 语法: date [选项] 显示时间格式(以+开头,后面接格式) Sun Solaris OS Training 第 47 页 共 121 页 date 设置时间格式 命令中各选项的含义分别为: -d datestr, –date datestr 显示由 datestr 描述的日期 -s datestr, –set datestr 设置 datestr 描述的日期 -u, –universal 显示或设置通用时间 时间域 % H 小时(00..23) % I 小时(01..12) % k 小时(0..23) % l 小时(1..12) % M 分(00..59) % p 显示出 AM 或 PM % r 时间(hh:mm:ss AM 或 PM),12 小时 % s 从 1970 年 1 月 1 日 00:00:00 到目前经历的秒数 % S 秒(00..59) % T 时间(24 小时制)(hh:mm:ss) % X 显示时间的格式(%H:%M:%S) % Z 时区 日期域 % a 星期几的简称( Sun..Sat) % A 星期几的全称( Sunday..Saturday) % b 月的简称(Jan..Dec) % B 月的全称(January..December) % c 日期和时间( Mon Nov 8 14:12:46 CST 1999) % d 一个月的第几天(01..31) % D 日期(mm/dd/yy) Sun Solaris OS Training 第 48 页 共 121 页 % h 和%b 选项相同 % j 一年的第几天(001..366) % m 月(01..12) % w 一个星期的第几天(0 代表星期天) % W 一年的第几个星期(00..53,星期一为第一天) % x 显示日期的格式(mm/dd/yy) % y 年的最后两个数字( 1999 则是 99) % Y 年(例如:1970,1996 等) 注意:只有超级用户才有权限使用 date 命令设置时间,一般用户只能使用 date 命令显示时间。 4.clear 作用:清除屏幕上的信息,它类似于 DOS 中的 cls 命令。清屏后,提示符移动到屏幕左上角。 5.find 作用:查找文件 语法: find dir -name filename command 例子: find . -name hello -print 寻找目前目录及所有的子目录内叫 hello 的文档. find . -ctime +7 -print 找出七天内未被更动的文档 find . -size +2000m -print 找出大小超过 2000 bytes 的文档 find /tmp -user b1234567 -print 在/tmp 下属於 b1234567 的文档 find . -name '*.c' -exec rm {} 删除所有的.c 档 find . -name test\* -print 显示当前目录及其子目录文件名前 4 位为 test 的文件名 6.ln 作用:文档连接 语法:ln -s oldname newname ( Hard link ) 同一文档,可拥有一个以上之名称,可将文档做数个连结. Sun Solaris OS Training 第 49 页 共 121 页 例子 : ln -s file1 file2 将名称 file2,连结至文档 file1. 7.grep 作用:查找一个字符串 语法:grep string filename 寻找字串的方法很多,比如说我想找所有以 M 开头的行.此时必须引进 pattern 的观念.以下是一些简单的□ 例,以及说明: ^M 以 M 开头的行,^表示开始的意思 M$ 以 M 结尾的行,$表示结束的意思 ^[0-9] 以数字开始的行,[]内可列举字母 ^[124ab] 以 1,2,4,a,或 b 开头的行 ^b.503 句点表示任一字母 * 星号表示 0 个以上的字母(可以没有) + 加号表示 1 个以上的字母 \. 斜线可以去掉特殊意义 cat passwd | grep ^b 列出大学部有申请帐号者名单 cat passwd | grep ^s 列出交换学生申请帐号者名单 cat passwd | grep '^b.503' 列出电机系各年级... grep '^\.' myfile.txt 列出所有以句点开头的行 8.fgrep 作用:搜索字符串 语法:fgrep string file 9.file 作用:显示文件类型 语法:file fileall Sun Solaris OS Training 第 50 页 共 121 页 文件类型为 shell script,ELF 32bit,ASCII text,data or tar file 10.diff 作用:比较文档或目录之不同内容 语法:diff [-r] name1 name2 ( name1 name2 可同时为档名,或目录名称.) 例子 : %diff file1 file2 比较文档 file1 与 file2 内,各行之不同处. %diff -r dir1 dir2 比较目录 dir1 与 dir2 内,各文档之不同处 11.cmp 作用:比较文档相同部分 语法::cmp file1 file2 12.ftp 作用:远程文件传输 语法: ftp [hostname|IP address] 在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你 username 与密码,如果输入对了就可以 开始进行文档传输. 注意:如用户无密码,无法注册 (1) ftp 命令 ascii 将传输模式设为 ascii 模式.通常用於传送文字档. binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像档等. cd remote-directory 将远程主机上的工作目录改变. lcd [ directory ] 更改本地主机的工作目录. ls [ remote-directory ] [ local-file ] 列出远程主机上的文档. get remote-file [ local-file ] 取得远方的文档. Sun Solaris OS Training 第 51 页 共 121 页 mget remote-files 可使用通用字元一次取得多个文档. put local-file [ remote-file] 将本地主机的文档送到远程主机. mput local-files 可使用通用字元一次将多个文档放到远程主机上. help [ command ] 线上辅助指令. mkdir directory-name 在远程主机创建一个目录. prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个文档之传输时均会询问. quit/bye 离开 ftp . (2) 后台执行 ftp 1.首先,将过程所用到的指令依顺序放入文档中,如下: %cat ftp_command !mkdir test lcd test cd test prompt binary mget *.* bye 2.其次,建一个.netrc 档,属性为 400,让 ftp 自动到此读取 Username 与 Password,方可顺利 login 到的主机,如下: %cat .netrc machine remote login anonymous password guest 3.最後再执行下面指令即可. %nohup ftp remote < ftp_command > message & 13.telnet 作用:远程终端访问 Sun Solaris OS Training 第 52 页 共 121 页 语法:telnet [hostname|IP address] 14.IO 作用:重新导向。UNIX 所有的程式执行时,均需要资料的输入以及输出资料.一般而言,资料是从键盘输入, 并将资料输出到萤幕上,这就叫做标准输入及标准输出,而我们可以更改标准出输出入. A. 更改标准输入 —— 在命令後方加"< " ,即可从这个文档输入资料. B. 更改标准输出 —— 在命令後方加"> " ,即可将萤幕输出的资料导向到这个 文档上. C. 更改标准输出 —— 在命令後方加">> ",功能与 B.相似,只不过这会将资料加在文档後 方. D. 管道 —— 在两个命令中间加上'|',即可将前方指令的输出当成後方指令的输入. 例: cd /tmp ls -l > /tmp/ls.out cat /tmp/ls.out more /tmp/ls.out rm /tmp/ls.out ls | more ls | wc -l (word count, count line number,算出文档数目)\ Sun Solaris OS Training 第 53 页 共 121 页 4、vi 编辑器 vi 是 visual edit 的缩写,文本编辑器是所有计算机系统中最常用的一种工具。UNIX 下的编辑器有 ex,sed 和 vi 等,其中,使用最为广泛的是 vi,而 vi 命令繁多 进入 vi 的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第 n 行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与 pattern 匹配的串处 vi -r filename :在上次正用 vi 编辑时发生系统崩溃,恢复 filename vi filename....filename :打开多个文件,依次进行编辑 (1)移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k 或 Ctrl+p:光标上移一行 j 或 Ctrl+n :光标下移一行 Enter :光标下移一行 w 或 W :光标右移一个字至字首 b 或 B :光标左移一个字至字首 e 或 E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 Sun Solaris OS Training 第 54 页 共 121 页 { :光标移至段落结尾 nG:光标移至第 n 行首 n+:光标下移 n 行 n-:光标上移 n 行 n$:光标移至第 n 行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 (2)屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第 n 行滚至屏幕顶部,不指定 n 时将当前行滚至屏幕顶部。 (3)插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 Sun Solaris OS Training 第 55 页 共 121 页 r:替换当前字符 R:替换当前字符及其后的字符,直至按 ESC 键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之 ncw 或 nCW:修改指定数目的字 nCC:修改指定数目的行 (4)删除命令 ndw 或 ndW:删除光标处开始及其后的 n-1 个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后 n-1 行 x 或 X:删除一个字符,x 删除光标后的,而 X 删除光标前的 Ctrl+u:删除输入方式下所输入的文本 (5)搜索及替换命令 /pattern:从光标开始处向文件尾搜索 pattern ?pattern:从光标开始处向文件首搜索 pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有 p1 均用 p2 替代 :n1,n2s/p1/p2/g:将第 n1 至 n2 行中所有 p1 均用 p2 替代 :g/p1/s//p2/g:将文件中所有 p1 均用 p2 替换 (6)选项设置 Sun Solaris OS Training 第 56 页 共 121 页 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示 NO write 信息 nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 nowrapscan:禁止 vi 在搜索到达文件两端时,又从另一端开始 mesg:允许 vi 显示其他用户用 write 写到自己终端上的信息 (7)最后行方式命令 :n1,n2 co n3:将 n1 行到 n2 行之间的内容拷贝到第 n3 行下 :n1,n2 m n3:将 n1 行到 n2 行之间的内容移至到第 n3 行下 :n1,n2 d :将 n1 行到 n2 行之间的内容删除 :w :保存当前文件 :e filename:打开文件 filename 进行编辑 :x:保存当前文件并退出 :q:退出 vi :q!:不保存文件并退出 vi :!command:执行 shell 命令 command :n1,n2 w!command:将文件中 n1 行至 n2 行的内容作为 command 的输入并执行之,若不指定 n1,n2,则表 示将整个文件内容作为 command 的输入 :r!command:将命令 command 的输出结果放到当前行 Sun Solaris OS Training 第 57 页 共 121 页 (8)寄存器操作 "?nyy:将当前行及其下 n 行的内容保存到寄存器?中,其中?为一个字母,n 为一个数字 "?nyw:将当前行及其下 n 个字保存到寄存器?中,其中?为一个字母,n 为一个数字 "?nyl:将当前行及其下 n 个字符保存到寄存器?中,其中?为一个字母,n 为一个数字 "?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 ndd:将当前行及其下共 n 行文本删除,并将所删内容放到 1 号删除寄存器中。 Sun Solaris OS Training 第 58 页 共 121 页 5、进程管理 1.ps 显示进程号 命令格式:ps -ef 2.kill 清除进程 命令格式: kill -9 pid 3.nohup 非挂起运行 Sun Solaris OS Training 第 59 页 共 121 页 6、网络应用配置 6.1 网络基本配置文件 1./etc/hosts 主机名解析 2./etc/defaultrouter 网关 3./etc/nsswitch.conf 指定查询服务顺序 4./etc/resolv.conf 指定域和域名服务器 5./etc/hostname.hme0 网络接口名 6./etc/netmasks 网络掩码 7./etc/inetd .conf 服务项目定义 6.2 远程访问命令 1. rlogin 在远程机上注册 命令格式 : rlogin hostname -l username 2. rsh 在远程机上执行一个程序 命令格式 : rsh hostname -l username order 3. rcp 在远程系统之间拷贝文件 命令格式 : rsh host:filename filename 6.3 相关文件 当 rlogin,rsh,rcp 命令时,有几个文件对网络安全是很重要的. /etc/passwd 如远程系统的口令文件有本拥护的登记项,否则必须使用 [-l] 选项以指明不同用户 $home/.rhosts rlogin,rsh,rcp 首先检查用户主目录下的.rhosts 文件,如主机及用户被列在文件中,则此用户为可信任 主机,不需口令即可登录,如远程鉴别失败,则正常询问口令 /etc/.hosts.equiv 作用与.rhosts 文件类似,文件中列出用户对于本机为可信任用户, 不需口令即可登录(除超级用户) 6.4 网络监控 Sun Solaris OS Training 第 60 页 共 121 页 1.rusers 标识网络上注册用户 命令格式:rusers -la 2.rup 标识网络上主机 命令格式:rup 3.ping 检测主机连接状况 命令格式:ping -s [hostname|IP address] 4.spray ping 命令格式为低层协议,spray 使用高层协议 命令格式:spray hostname 5.netstat 显示与网络有关的各种数据结构 命令格式:netstat -[r| i]n -r :显示路由信息 -i :显示接口信息 6.ifconfig 显示网络接口 命令格式:ifconfig -a 其中 lo0: 本机自回馈接口 le0: 10M 接口 hme0:100M 接口 hme1:第二 100M 接口 7.netstat 显示与网络有关的各种数据结构 命令格式:netstat -[r| i]n -r :显示路由信息 -i :显示接口信息 8.route 路由设置 命令格式:route [add|delete] 设置网络路由 defaultrouter <-缺省静态路由 9.arp 反响解析 命令格式:arp -[a|s] Sun Solaris OS Training 第 61 页 共 121 页 7、图形窗口配置 1.双屏配置 (1) /usr/openwin/bin/openwin -dev /dev/fb0 -dev /dev/fb1 (2) /usr/dt/config/Xservers 文件 2.ffbconfig 分辨率调整 命令格式:ffbconfig -dev /dev/fb0 -res mode 此命令只针对 creator,creator3D 卡 mode : ? 或 1280x1024x76 查看 creator/creator3d: ffbconfig -prconf 3.xwininfo 分辨率确认 4.xhost 命令格式: xhost + 〈- 使能客户显示 5.openwin 初始化 /usr/openwin/lib/openwin-init $home/.openwin-init /usr/openwin/lib/openwin-menu-programs 6.CDE 桌面初始化 /usr/dt/appconifg/C/sys.dtwmrc 7.终端窗口控制字符 erase ^H intr ^C kill ^U start ^Q stop ^S susp ^Z 定义方式:stty erase ^H Sun Solaris OS Training 第 62 页 共 121 页 8、系统命令 1.admintool 2.prtconf 3.sysdef 4.sys-unconfig 重新配置机器 5.eeprom 6.installboot /usr/platform/`uname -I`/lib/fs/ufs/bookblk raw-device 7.网络安装 /cdrom/cdrom0/s0/Solaris2.8/tools/add_install_client -e ether host sun4u Sun Solaris OS Training 第 63 页 共 121 页 附录 A:测试 1 .在 Solaris 操作系统中列出一个目录下所有文件包括隐藏文件的命令为: a. ls -l b. ls -a c. ls -s 2 .将文件名为 filename 的文件拷贝一份,将新的文件命名为 filename.bak,应该使用如下命令: a. cp filename filename.bak b. mv filename filename.bak c. cp filename.bak filename 3 .如下命令可以删除一个内部还存在一些文件的目录 mydir: a. rm mydir b. rm -r mydir c. rmdir mydir 4 .如下关于 tar 命令选项正确的是: a. n 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 b. t 列出档案文件的内容,查看已经备份了哪些文件。 c. d 从档案文件中释放文件。 5 .如下关于 gzip 命令选项的说明正确的是: a. -c 将输出写到标准输出上,并保留原有文件。 b. -d 将压缩文件解压,并删除原文件 c. -v 对每一个压缩和解压的文件,显示文件名和压缩比。 6 .如下关于 unzip 命令选项说明正确的有: a. -t 测试文件有无损坏,但不解压。 b. -v 查看压缩文件目录,但不解压。 c. -x 目录 把压缩文件解到指定目录下。 7 .如下关于 chmod 命令参数说明正确的是: a. 设置 mode 所表示的权限可用下述字母的任意组合:r 可读,w 可写,e 可执行。 b. 操作对象 who 可是下述字母中的任一个或者它们的组合:u, g, o, a。 c. 操作符号 + 添加某个权限, - 取消某个权限。 在添加或者取消给定权限的同时取消其他原有的所有权限。 8 .如下关于 chmod, chgrp, chown 等命令参数的说明正确的是: a. - group 指定将文件或者目录的原有属性授予给名为 group 的用户组。 Sun Solaris OS Training 第 64 页 共 121 页 b. - R 递归式地改变指定目录及其下的所有子目录和文件的属组。 c. - user 指定将文件或者目录的原有属性授予给名为 user 的用户。 9 .在一个利用本地文件管理用户名和密码的 Unix/Linux 操作系统当中,修改用户密码的命令是: a. pass b. passwd c. password 10 .如下关于 su 命令的说明正确的是: a. su命令也可以用来将自己的身份切换称其他普通用户,获得该用户的权限。 b. 输入 su 命令,在提示输入密码的时候输入超级用户的密码,就可以获得超级用户权限。 c. 输入 su 命令,在提示输入密码的时候输入自己的密码,就可以获得超级用户权限。 11 .拥有超级用户权限的用户可以使用如下命令关机: a. shutup b. shutoff c. shutdown 12 .用户可以使用如下命令格式向用户 guest 发送内容为"hello"的信息: a. write guest hello b. wall guest hello c. mesg guest hello 13 .如下关于 mesg 命令参数的说明正确的是: a. 允许别人给自己发送信息,输入命令:mesg y b. 允许别人给自己发送信息,输入命令:mesg on c. 允许别人给自己发送信息,输入命令:mesg ok 14 .如下关于命令的说明当中哪些是正确的? a. sync命令仅可以在关闭 Unix/Linux 系统之前使用。在其它时间使用会损坏文件系统。 b. free命令的功能是查看当前系统内存的使用情况以及空闲的 CPU 状况。 c. uptime命令显示系统已经运行了多长时间。 15 .如下关于磁盘管理的命令正确的是: a. du命令显示磁盘空间的使用情况。 b. df命令检查文件系统的磁盘空间占用情况 c. dd命令把指定的输入文件拷贝到指定的输出文件中。 Sun Solaris OS Training 第 65 页 共 121 页 16 .如下关于 du 命令参数的说明正确的是: a. -s 对每个 Names 参数只给出占用的数据块总数。 b. -l 计算所有的文件大小,对硬链接文件,则计算多次。 c. -b 以字节为单位列出磁盘空间使用情况(系统缺省以 k 字节为单位)。 17 .如下关于 date 命令参数的说明正确的是: a. –date datestr 显示由 datestr 描述的日期 b. –get datestr 显示由 datestr 描述的日期 c. –set datestr 设置 datestr 描述的日期 18 .如下命令用法的说明正确的是: a. echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。 b. cal命令的功能是启动一个带有图形界面的计算器程序。 c. clear 命令的功能是清除屏幕上的信息。 19 .如下关于 sort 命令选项的说明正确的是: a. - c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值 1 退出。 b. - m 若给定文件已排好序,合并文件。 c. - u 对排序后认为相同的行只留其中一行。 20 .如下关于 uniq 命令选项的说明正确的是: a. +n 前 n 个字符被忽略,之前的字符被跳过(字符从 0 开始编号)。 b. - u 只显示重复行。 c. - d 只显示文件中不重复的各行。 答案: 1、a 2、a 3、b 4、c 5、ac 6、 ac 7、ac 8、a 9、c 10、ab 11、a 12、c 13、b 14、a 15、abc 16、abc 17、ac 18、ab 19、abc 20、b Sun Solaris OS Training 第 66 页 共 121 页 附录 B:FAQ 1. Q: Solaris 的系统配置文件一般在什么地方? A: 可以查看/etc/system文件,里面有一些solaris启动时默认加载的选项,包括 共享内存大小等的设置。 2. Q: 在solaris中,用户默认的Shell在什么文件中规定? A: 可以查看/etc/passwd中,用户默认的shell在这里规定。 3. Q: 如果solaris不幸忘记了root密码,如何解决? A: 可以有如下两种情况 1. 工作站只有root用户,无其他用户。 2. 工作站除了root用户以外,还有其他的用户 1. 如果连接了网络,我们可以采用远程缓冲溢出的方法,但是这样的方法不属 于“经典”方法,且有的远程缓冲溢出具有一定的破坏性,不建议使用。还 有一种方法就是采用SUN公司自带的光盘采取引导,建议采取这种方法: 1. boot cdrom -s 2. fsck /dev/dsk/c0t0d0s0 (取决于根分区的设备) 3. mount -F ufs /dev/dsk/c0t0d0s0 /mnt 4. TERM=ansi; export TERM 5. 编辑/mnt/etc shadow文件,把root对应的口令去掉。 6. 重启后的root的口令为空。 2. 如果还有普通用户,方法可以采用本地缓冲溢出,这种方法虽然破坏性小, 但是也有损毁硬盘引导区的危险,建议采用“文件连接”错误是获得root权 限,这种方法没有什么危险性。 4. Q: 有时候用vi编辑器的时候,显示窗口过大,如何处理? A: 只需要用鼠标拖曳终端窗口,使其缩小,即可解决。 5. Q: 共享内存大小如何设置? A: 在system文件的最后一行加入Set shmsys:shminfo_shmmax=XXX /etc/set shmsys:shminfo_shmmin=XXX 这里的XXX是代表共享内存的大小。单位:字节 共享内存一般为内存的一半 例如内存为 512M 设置应为 512/2*1024*1000=262144000 6. Q: root用户的配置文件在什么地方? A: root用户的配置文件和其他用户的配置文件有些不同,它在/etc/profile文件 中规定。 7. Q: SUN solaris 在远程X-win pro下无法以root进行登陆,如何解决? A: 直接以root在终端上登录的时候,执行/etc/default/login脚本。在这个脚本 中限制了在远程终端上不能直接以用户root登录,如果想这样,修改此脚本, Sun Solaris OS Training 第 67 页 共 121 页 将下面这一行注释掉即可 CONSOLE=/dev/console 8. Q: 在solaris下,如何查看网络是否配置成功? A: 可以采用命令Ifconfig -a来查看,如果网卡绑定ip成功,而不是显示 0.0.0.0 就证明网卡配置基本无误,主要检查网络介质(网线,RJ45 插头...)是否损坏。 9. Q: 如果敲错一个命令如何结束它呢? A: solaris和SCO有少许不一样,solaris可以采用ctrl+C来结束,而不是SCO的 ctrl+Del 10.Q: solaris的联网中,网关如何配置? A: solaris的网关设置和SCO的设置不一样 SCO: /etc/gateways ; name1 gateway name2 metric value ; 所有中间的很长的空均为TAB Net,host 表示路由指向是网络还是主机,net和host是关键字 Name1 目的网络名或主机名 Gateway 关键字 Name2 网关名或网关ip地址 Metric 关键字 Value 跳数 Passive 关键字,表示被动方式,路由器不叫换路由信息 Active 关键字,表示主动方式,路由器交换路由信息 External 关键字,表示外部方式,其他进程已安装了路由 例如: net 129.9 gateways 129.6.0.1 metric 1 passive host 129.7.10.21 gateway 129.6.0.2 metric 1 passive Solaris 为defautrouter,只需要在里面填入网关。 11.Q: 如何在网上安装Solaris? A: 假设SERVER IP为 10.11.41.10,hostname为inssvr;CLIENT IP为 10.11.41.11 ,hostname为inscli。 在SERVER端执行以下步骤 条件:有 340M的剩余空间 1. 将Solaris 2.6 的安装盘插入CD-ROM 2. 将Solaris 2.6 CD-ROM的slice 0 拷贝到硬盘 # cd /cdrom/sol_2_6_sparc_smcc_svr/s0/solaris_2.6/Tools # ./setup_install_server /export/install 3. 编辑文件/export/autocfg/sysidcfg,以下是它的内容 #Sample sysidcfg file for SPARC systems Sun Solaris OS Training 第 68 页 共 121 页 system_locale=en_US timezone=GMT-8 timeserver=10.11.41.10 terminal=dtterm name_service=NONE root_password=...(取自/etc/shadow文件) 4. 编辑文件/etc/hosts,以下是它的内容 10.11.41.10 inssvr loghost 10.11.41.11 inscli 5. 增加安装客户 # cd /export/install #./add_install_client -e CLIENT的以太网地址 -i CLIENT的IP地址 -s inssvr:/export/install -c inssvr:/export/autocfg -p inssvr:/export/autocfg inscli sun4u 在CLIENT端的OK提示符下执行 OK boot net - install Solaris 7 for sparc与 2.6 的区别,7 没有默认的sysidcfg和autocfg目录,需要自 己建立,而且OK boot net即可 12.Q: DHCP in Solaris8? A: 1. # touch /etc/dhcp.hme0,hme0:请用相应的网卡设备名; 2. 修改/etc/init.d/network,/etc/init.d/inetsvc 先备份 # cp /etc/init.d/network /etc/init.d/network.org # cp /etc/init.d/inetsvc /etc/init.d/inetsvc.org 修改/etc/init.d/network第 278 行: "dhcp" #hostname=`/sbin/dhcpinfo Hostname` hostname=`cat /etc/nodename` 修改/etc/init.d/inetsvc第 168 行: hostname=`/sbin/dhcpinfo Hostname` if [ -z "$hostname" ]; then #hostname="unknown" hostname=`cat /etc/nodename` fi 修改/etc/init.d/inetsvc第 82 行: if [ "$_INIT_NET_STRATEGY" = "dhcp" ]; then #dnsdomain=`/sbin/dhcpinfo DNSdmain` dnsdomain=`cat /etc/defaultdomain` else dnsdomain= fi if [ -n "$dnsdomain" ]; then #dnsservers=`/sbin/dhcpinfo DNSserv` dnsservers=`cat /etc/dnsservers` Sun Solaris OS Training 第 69 页 共 121 页 修改/etc/init.d/inetsvc第 220 行: /usr/bin/mv /tmp/hosts_clear.$$ /tmp/hosts.$$ mydomain=`cat /etc/defaultdomain` echo "${ipaddr}\t${hostname}\t${hostname}.${mydomain}\t# Added by DHCP" >;>;/tmp/hosts.$$ 在/etc/init.d/inetsvc第一行加入如下语句: if [ -f /etc/dhcp.*[0-9] ]; then _INIT_NET_STRATEGY="dhcp" export _INIT_NET_STRATEGY fi 3. 创建/etc/defaultdomain,内容为huawei.com.cn 4. 创建/etc/nodename,内容为你的机器名 5. 创建/etc/dnsservers:129.9.111.100 10.15.1.3 之所以要修改,究其原因我们的DHCP服务器支持的协议可能比较老,不能返回给 客户端DNSdomain,DNSServer,Nodename; 13. Q:SUN上如何编译动态库? A: CC=cc C++=CC +w .SUFFIXES:.cpp .cpp.o: $(C++) -g -c -Kpic $< liberrlog.so:ErrLog.o ld -o liberrlog.so -G ErrLog.o 14. Q: 在sun工作站上安装solaris软件时没有安装网卡,安装完成后应该修改那些文 件添加网卡? A: 1. #reboot --r 或者ok boot -r 2. 在 1.成功找到你新加的硬件之后,再执行相应的硬件设置命令,对网卡执行: ifconfig hme0 ; [ipmask],其中hme0 是你网卡的设备名,可以通过dmesg知 道你的网卡设备名. 15. Q: 如何设置DNS? A: (1)/etc/nsswitch.conf的hosts解析加上nis或/和dns,内容如下 hosts: files dns (2)设置到DNS服务器网关于/etc/defaultrouter,内容如下 10.11.43.254 (3)设置DNS服务器的IP地址/etc/resolv.conf,内容如下 nameserver 10.15.1.3 Sun Solaris OS Training 第 70 页 共 121 页 nameserver 129.9.111.100 domain huawei.com 16. Q: Ultra60 工作站从外挂光驱启动? A: Ultra60 工作站缺省配置是内置光驱,用外挂光驱重新安装Solars时,用boot cdrom命令则不能从光驱启动,屏幕上打印错误信息:Drive not found. 原因如下:由于Ultra60 工作站缺省支持内置光驱,cdrom的缺省配置是内置光 驱的物理设备名。当使用外挂光驱时,当使用boot cdrom命令时,cdrom的替 换为内置光驱的物理设备名。这就是不能从光驱启动的原因。 解决办法如下: (1)stop+a命令 (2)在ok提示符下输入:probe-scsi-all 则出现硬盘、光驱、磁带机等设备的实际物理名。 如:/pci@1f,4000/scsi@3,1 cdrom (3)在ok提示符下输入:devalias 则出现硬盘、光驱、磁带机等设备的缺省设置。 如:cdrom /pci@1f,4000/scsi@3/disk6,0:f 这是缺省配置,用boot cdorm命令时,cdrom被解释为 /pci@1f,4000/scsi@3/disk6,0:f 而/pci@1f,4000/scsi@3/disk6,0:f指示的是内置光驱的设备名, 因此不能从外挂光驱启动! (4)在ok提示符下输入:boot /pci@1f,4000/scsi@3,1/disk6,0:f 说明:[boot后的参数参看(2)和(3)中的cdrom的设备名,由两者组合而来 即可正确的从外挂光驱启动。 17. Q: 一台Sun Ultra80 工作站安装SunOS 5.6 失败,请问其原因以及如何避免? A: 硬件环境为Ultra-80/2CPU(450M)/1harddisk(18G)/2G Memory,从网络启动安 装SunOS 5.6。安装过程中途中断并出现以下提示: panic[CPU3]/thread=0x301bde80: CPU3 privileged UE Error: AFSR 0x00000000 80200000 AFAR 0x00000000 7c5e0190 SIMM U1302 U0302 U1301 U0301 syning file systems... [27[ 406 136 done 12535 static and sysmap kernel pages 50 dynamic kernel data pages 205 kernel pageable pages 0 segkmap kernel pages 0 segvn kernel pages 0 current user process pages 12790 total pages (12790 chunks) dumping to vp 6145608c, offset: 3989467 panic[CPU3]/thread=0x30043e80: panic dump timeout Sun Solaris OS Training 第 71 页 共 121 页 Dump Aborted Type 'go' to resume{3} ok 随后输入‘go'或者‘boot -r’都无法使系统启动,提示如下: Can not open Kernel/unix input filename [Kernel/unix]: 只有重新从网络启动。这是由于CPU硬件结构与Solaris系统不兼容造成的, 需要补丁。这个问题不仅仅是在Ultra80 的机器上,如果Ultra60 使用了SUN的 新推出的高速CPU(400M以上,一般为 450M)且操作系统为Solaris 2.6 或者 Solaris 2.5.1,也会出现类似问题。如果工作站使用的是这种高速CPU,在 随新机器一起的附件中会有一本手册:Installing Solaris 2.5.1 or Solaris 2.6 Software on 419+ MHz Systems,其中详细描述了如何解决这 个问题(在zh-6 页)。另外,附件中还有一张补丁光盘,名字叫做: Operating Environment Installation CD May 1999,此光盘专门用于解决 此问题. 18. Q :在solaris上如何进行数据的备份和恢复? A: 备份整个文件系统,也称作完全备份(full dump);在完全备份的基础上备 份修改过的文件,称作渐进备份(incremental dump); ufsdump ufsdump命令用于备份文件系统,可以完全备份也可以渐进备份。ufsdump命令的格式 为:/usr/sbin/ufsdump [options] dump_device files_to_dump options包括: 0-9:指定备份的级别。0 为最低,即完全备份;9 为最高。假设当前备份级别为i,那 么ufsdump命令在执行时将寻找最近一次级别等于i或小于i的备份,将以前备份过后修 改过的文件备份下来。例如,星期一执行了一次级别为 2 的备份, 星期二执行了一次 级别为 4 的备份,那么当星期三执行级别为 3 的备份时备份文件中将包括自星期一备份 以来所有修改过或新创建的文件。如果星期三执行级别为 4 的备份,那么备份文件中将 包括自星期二备份以来所有修改过或新创建的文件。 f:指定备份的设备,例如/dev/rmt/0; u:更新备份记录(/etc/dumpdates)。使用这一选项后ufsdump将创建或更新 /etc/dumpdates文件,文件内容包括文件系统名、备份级别、和备份时间,例如: pioneer# ufsdump 0uf /tmp/ddd /dev/dsk/c0t0d0s0 DUMP: Writing 32 Kilobyte records DUMP: Date of this level 0 dump: Mon Sep 07 22:37:16 1998 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rdsk/c0t0d0s0 (pioneer:/) to /tmp/ddd. DUMP: Mapping (Pass I) [regular files] DUMP: Mapping (Pass II) [directories] DUMP: Estimated 25234 blocks (12.32MB). DUMP: Dumping (Pass III) [directories] DUMP: Dumping (Pass IV) [regular files] DUMP: 25214 blocks (12.31MB) on 1 volume at 1599 KB/sec Sun Solaris OS Training 第 72 页 共 121 页 DUMP: DUMP IS DONE DUMP: Level 0 dump on Mon Sep 07 22:37:16 1998 pioneer# more /etc/dumpdates /dev/rdsk/c0t0d0s0 0 Mon Sep 7 22:37:16 1998 备份前的准备工作 重新启动系统到单用户状态,或将要备份的文件系统卸载下来。 通知所有用户该文件系统不可用。 #wall /export/home will be unavailable in two minutes, please log out Press ctrl-D 对文件系统进行检查(fsck)。 ufsdump 如前例所示。 如果使用渐进的备份方法,最后实现建立备份计划,例如: Sun Mon Tue Wed Thu Fri Week1: Full 5 5 5 5 3 Week2: 5 5 5 5 3 Week3: 5 5 5 5 3 Week4: 5 5 5 5 3 上例中,每个月作一次完全备份,每个周末对每一周的改动作一次备份,每天的备份 只对当天的改动作备份。这样作的目的是节省备份所用的空间。 ufsrestore ufsrestore用于恢复使用ufsdump命令备份的文件系统。命令格式为: /usr/lib/fs/ufs/ufsrestore options [arguments] [filename ...] options包括: t:备份列表; x:只恢复命令行中指定的文件; r:恢复整个备份; f:指定备份文件所在的设备或目录; v:verbose mode,列出备份文件的路径。 例如: 对备份文件进行列表: pioneer# ufsrestore tvf ddd Verify volume and initialize maps Media block size is 126 Extract directories from tape Initialize symbol table. Dump date: Mon Sep 07 22:37:16 1998 Sun Solaris OS Training 第 73 页 共 121 页 Dumped from: the epoch Level 0 dump of / on pioneer:/dev/dsk/c0t0d0s0 Label: none dir 2 . dir 3 ./lost+found dir 5696 ./usr dir 11392 ./var dir 5697 ./export dir 11393 ./export/home dir 5698 ./opt leaf 4 ./bin dir 11394 ./dev dir 5699 ./dev/sad leaf 5879 ./dev/sad/admin leaf 5825 ./dev/sad/user leaf 11592 ./dev/be leaf 11496 ./dev/conslog ... 从备份中恢复指定文件: pioneer# cd /tmp pioneer# ufsrestore xvf ddd ./etc/passwd Verify volume and initialize maps Media block size is 126 Dump date: Mon Sep 07 22:37:16 1998 Dumped from: the epoch Level 0 dump of / on pioneer:/dev/dsk/c0t0d0s0 Label: none Extract directories from tape Initialize symbol table. Make node ./etc Extract requested files 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 extract file ./etc/passwd Add links Set directory mode, owner, and times. set owner/mode for '.'? [yn] n 执行该操作需要指定所要恢复的文件在备份文件中的位置。由于备份文件从卷 1 开始, 所以可以指定从卷 1 开始搜索。恢复整个文件系统下例将一个老的文件系统(/opt)移 到一个新的磁盘分区(/dev/rdsk/c0t3d0s5)中。首先,卸载老的文件系统并实施备 份: #umount /opt #fsck /opt #ufsdump 0uf /dev/rmt/0 /opt Sun Solaris OS Training 第 74 页 共 121 页 其次,生成新的文件系统,将其安装到一个临时目录(/mnt),并实施恢复: #newfs /dev/rdsk/c0t3d0s5 #fsck /dev/rdsk/c0t3d0s5 #mount /dev/dsk/c0t3d0s5 /mnt #cd /mnt #ufsrestore rvf /dev/rmt/0 #rm restoresymtable 最后,卸载新的文件系统,用fsck检查其一致性。 #cd / umount /mnt #fsck /dev/rdsk/c0t3d0s5 选择性备份,备份指定的文件和目录; tar 系统备份:tar -cvf 目标文件名/设备名 备份文件,例如: tar -cvf backup.tar * 命令将当前目录下的所有文件(包括各级子目录)都打包在backup.tar文件中。 tar -cvf /dev/rmt/0 * 命令将当前目录下的所有文件(包括各级子目录)都打包到磁带上。查看tar文件的内 容:tar tvf 目标文件名/设备名,例如: tar -tvf backup.tar tar -tvf /dev/rmt/0 将tar文件中的内容恢复到指定目录中去:tar xvf 目标文件名/设备名 [目录名],例 如: tar -xvf backup.tar /home tar -xvf /dev/rmt/0 /home 如果不指定目录名则表示当前目录。 19. Q: 如何在Soraris下面安装ATM网卡? A: 网卡型号:FORE PCA-200EUX/OC3 操作系统:Solaris 2.7 工作站:SUN Ultra60 一、硬件安装 1、工作站关电后,将网卡妥善安装在一个PCI插槽中; 2、工作站上电,按STOP and A中断boot process,到ok提示符; 3、输入命令show-devs,显示系统配置,FORE网卡的device-pathname应出现在 配置列表中,形式可能如下: /pci@1f,2000/FORE,PCA-200E@2 4、设备提供光口自环测试(media loopback)和内部自环测试(internal loopback), 供检查设备及安装是否完好。根据经验用内部自环测试即可,方法: 输入命令 test /pci@1f,2000/FORE,PCA-200E@2 待出现:pass 0 说明硬件及安装都正确; 5、输入boot命令 ,启动系统。 二、软件安装 Sun Solaris OS Training 第 75 页 共 121 页 1、软件安装需要root权限; 2、网卡支撑软件一般是一个.tar文件提供,解开后在其目录下有 8 个子目录,分 别为: FORECore ForeThought ATM Core Software FOREDrv ForeThought ATM Card Drivers FORESpans ForeThought SPANS Signalling Software FOREUni ForeThought UNI Signalling Software FOREclip ForeThought Classical IP Software FOREip ForeThought FORE IP Software FOREmpoa ForeThought MPOA / LAN Emulation Software FORExti ForeThought XTI Application Programming Interface 3、例如.tar文件解开后在/home/FORE下,则该目录下就有上述 8 个子目录,我们要 用的程序在FOREDrv、FOREip下,但各个模块之间有一定的依赖关系,需要安装的模块 有 6 个: FORECore、FORESpans、FOREDrv、FOREip、FOREUni、FOREclip。安装过程: >; pkgadd -d /home/FORE The following packages are available: 1 FORECore ForeThought ATM Core Software .........(sparc) 5.1 2 FOREDrv ForeThought ATM Card Drivers .........(sparc) 5.1 3 FORESpans ForeThought SPANS Signalling Software .........(sparc) 5.1 4 FOREUni ForeThought UNI Signalling Software .........(sparc) 5.1 5 FOREclip ForeThought Classical IP Software .........(sparc) 5.1 6 FOREip ForeThought FORE IP Software .........(sparc) 5.1 7 FOREmpoa ForeThought MPOA / LAN Emulation Software .........(sparc) 5.1 8 FORExti ForeThought XTI Application Programming Interface Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: 选择要安装的模块,根据提示安装。 4、安装后的软件在/opt/FOREatm /bin (使用的配置命令所在目录) /conf /examples /include /lib /man 三、网卡配置 1、网络接口名配置 >;configure_atm 选择配置ip模块,得到一个ip interface名,默认为fa0。重启工作站,可以看到在 Sun Solaris OS Training 第 76 页 共 121 页 /dev下有fa0 接口,而网卡的设备名为fatm0。 2、>;adinfo fatm0 可查询设备硬件信息 >;adconfig fatm0 可进行设备配置 >;adstat fatm0 可查询设备状态 这三个命令较少用到。 3、接口ip地址配置 ifconfig fa0 ; netmask ; broadcast ; up 4、IPOA配置 atmarp -s hostname device vpi vci aal encapsulation(outgoing PVC配置) atmarp -l device vpi vci aal encapsulation (incoming PVC配置) 例:分配给工作站的pvc为 vpi 0 vci 150 工作站的IPOA地址为 200.200.200.101 MUSA设备的IPOA地址为 201.200.200.100 AAL类型为 5 encapsulation 为llc_routed >;atmarp -s 201.200.200.100 fa0 0 150 5 llc_routed >;atmarp -l fa0 0 150 5 llc_routed [在MUSA设备上要做:add nms、act nms、add route、add atm arp、add ipaccess] >;ping 200.200.200.101 如果ping通,则已配置成功。 20. Q: 在哪里能得到有关Solaris的较全面的文档? A: http://docs.sun.com 21 .Q: 请教sun小型机上的路由跟踪命令是什么?(HP上是traceroute)谢谢! A:这个命令也是traceroute.在/usr/sbin目录下. 22. Q: 一个GUI程序,在换个不同的SUN环境时界面就变的难看了,主要是字体影响 (还有其它影响么?)SUN 的字体都有哪些,如 -sun-screen-bold-r-normal--14-140-72-72-m-90-iso8859-1 都有哪些可选? A: If a font can not be found in the system, the system will select another font which might be not so elegent as you expect. The correct way is to insure the font you want is correctly installed in system. In solaris answer book, there is a perfect reference talking about the font administration "font administration" in System Administration Vol1. You can get solaris answer book by accessing sunlibrary.huawei.com. Chen Zhexue(4924)is responsible for maintain. it. 23 Q: Solaris启动过程是如何的?启动的时候读那些文件启动一些服务比如我要在系 统启动的时候自动启动Apache(httpd)服务,应该在哪个文件里面配? A: Solaris的启动是典型的ATT UNIX启动过程, 在普通的UNIX书记和SUN公司的文 档中都有详细的介绍,这里就不详谈了. 要点室内核引导后启动init进程, init 按照/etc/inittab 的控制加载各子系统, 一般是执行 /etc/rc* 之类的脚本. 这些脚本再执行 /etc/rc*.d/ 下的脚本,其中 /etc/rc2.d/S72inetsvc 运行 inetd, 该后台进程根据/etc/inetd.conf 控制网络服务,所以要自动启动 Sun Solaris OS Training 第 77 页 共 121 页 Apache,需要在inetd.conf 中修改或增加 80 端口的启动命令。(如果不是用 80 ,还要修改/etc/services文件) 24 Q: 有一个问题要请教一下,谢谢! 一台SUN服务器,更换IP地址。 原来地址为 10.11.43.137,现在更换为 10.108.22.247 我的操作步骤如下: 1:修改/etc/hosts文件,修改后的文件内容如下: 127.0.0.1 localhost 10.108.22.247 westsnow loghost SYBASE 10.109.22.247 eastsnow /etc/hostname.hme0 文件内容: westsnow /etc/hostname.hme0:1 文件内容: eastsnow 2:修改/etc/netmasks文件,修改后的文件内容如下: 10.0.0.0 255.255.0.0 3:修改网关/etc/defaultrouter文件,修改后的文件内容如下: 10.108.22.1 按照上面步骤修改完后REBOOT机器,启动过程中没有任何异常,但是机器启动 后和别的机器连不上,而且连网关都 PING 不通,请问是什么原因?谢谢! A: /etc/hostname.hme0:1 中应当写你想用的IP地址,而不是机器名. 如果只改IP 地址,就不需要这个文件. 25 Q: UTF-8 和US-ASCII之间的区别在那里?请举例说明。 A: UTF-8 包括 US-ASCII 和多字节编码。与普通的多字节编码不同,UTF-8 的字节 长度不固定,对于ASCII, 字节长度为 1, 对于中文,阿拉伯文等,可以是 2,3 或更 多字节,这样能有效节省存储空间. 它还与很多传统编码标准兼容,所以很受欢 迎. 26 Q: 如何在脚本里实现修改用户口令? A: 由于修改口令需要从终端读取用户口令,所以不能用重定向的办法,但可以采用 expect 之类的工具,这些工具建立一个伪终端来模拟输入, 所以起到用脚本控 制终端的效果. 27 Q: 我在用EXCEED连到工作站时,开了一个root权限term,网络突然中断,请问如 何能够kill该term的进程? A: 用xkill 连dtterm 一起杀掉。在桌面上是可以的,在exceed 中不知是否可以。 28 Q: 在Solaris下可用什么命令查看system software info? A: 用/usr/bin/pkginfo . 或者 /usr/bin/prodreg,有图形界面将注册过的产品显示成树的形状. 29 Q: 请问:在SOLARIS 8 中,用什么命令看port id? Sun Solaris OS Training 第 78 页 共 121 页 A: 我曾就这个问题问过不少人, 有的说 fuser 可以做,但我查 fuser 的手册 没有见到相关选项。lsof 是一个比较理想的工具,可以从sunfreeware.com下 载。还有一个简单的办法是这样的: /usr/proc/bin/pfiles /proc/* >; result.txt 在到result.txt 中搜索相应 socket port. 也可以自己用awk 过滤 pfiles 的 结果 30 Q: 使用FTP时,不能以root用户登录系统,应修改什么配置文件? A: 看一下 /etc/ftpusers ,如果有root, 删掉就可以了。 31 Q: 我们的系统需要计算solaris的负载,可以使用uptime输出的load average吗, 如果不用uptime,使用libkstat的load average可以吗? A: 可以. 32 Q: 请问uptime的load average 是如何计算出来的? A: 这个问题满复杂的,我们知道, unix内核里有许多种结构,如 user,proc等, 有的还mount到 文件系统中 ,比如 /proc /dev/kstat /dev/ksysm, uptime, kstat,sar ,vmstat, prstat 等命令都是通过分析这些结构来进行计算的有 一个系统函数叫getloadavg ,uptime 就是直接调用这个函数的,你也可以试试. 33 Q: 如何得到和设置操作系统内核参数。 A: 通常,这些参数在 /etc/system 中配置。 34 Q: 如何得到系统当前动态运行指标,如CPU占有率、IO量、硬盘剩余空间等。 A: 检查的命令则有许多,可用 vmstat 和 sar 命令,还有iostat ,df ,du 用 于检查磁盘的情况。 35 Q: How can I get a Workshop6's licence? A: get a new one from www.sun.com and install it again. URL is http://www.sun.com/forte/cplusplus/buy.html cp licence-file install_dir/SUNWspro/licencse_dir/sunpro.lic,node 36 Q: 请问能否在一个slice里挂两个文件系统? A: 不可以. 37 Q: 请问修改了/etc/nodename后,UNIX工作站启动不了,该如何是好? A: 单纯修改nodename 不够,还应修改 /etc/net/*/hosts 38 Q: Solaris的/usr/lib/dmi/snmpXdmid是干什么用的? A: Sun Solstice Enterprise SNMP-DMI mapper subagent man snmpXdmid 可得. 39 Q: 我的工作站上没有光驱,想通过远程安装,可否? A: 可以,有两种方式: 1。 将 solaris 光盘内容以 ftp 上传,本地安装 2。 做一个install server ,远程直接安装。 Sun Solaris OS Training 第 79 页 共 121 页 3. 用remote光驱安装 (在remote机器) # ps -ef | grep nfsd # mkdir /dummy # vi /etc/dfs/dfstab (share -F nfs -o ro /dummy) # eject cdrom0 # chmod 644 /etc/rmmount.conf # vi /etc/rmmount (share cdrom*) # chmod 444 /etc/rmmount.conf # (Load a CD.) share - /dummy ro "" - /cdrom/sol_7_sparc/s5 ro "" (在本地) $ showmount -e starbug # mount -F nfs -o ro starbug:/cdrom/sol_8_sparc /cdrom $ ls /cdrom $ ; 40 Q: 我们想了解一下SUN公司年机器在并行程序运算方面的能力和相应的平台。 A: 您知道,SUN公司在SMP技术上居于领导地位,所设计的体系结构具有良好的可 扩展性。只对硬件升级,不改动代码,往往就可以得到接近线性增长的性能, 如果有开发工具的帮助,会取得更好的效果,sun公司提供的 Forte C/C++ workshop 包含许多工具帮助开发者分析软件性能病进行优化,Solaris也包含专 门的库函数以提高计算效率,SUN公司有一本白皮书专门介绍高性能计算 您可 以从 docs.sun.com 得到.书的名字叫: UltraConputing:How to Achieve Peak Performance from Solaris Applications.. 41 Q: 我在/etc/skel/local.profile作的环境变量的修改但没有在新增用户时候得到 验证,为什么?这不是一个模板吗?(用EXIT退出窗口, 再用新用户登录) A: 如果是从终端登录,.profile 会起作用,但如果从CDE 登录,则系统执行 .dtprofile,要想执行 .profile, 还要修改 .dtprofile一般情况下,如果想设 置一个环境变量使其对所有用户生效,可以修改 /etc/profile 42 Q: /etc/system 文件中的namespace指的是什么,与Modules有何关系?system文 件中哪些参数将对机器性能有较大影响? A: 所有的手册都警告说修改system文件应当慎重,事实上,也只有在安装数据库, 增加新的设备时,才有可能需要修改此文件.所改的参数,也就是你附件中改过的 那几个线程数,信号量之类的. 修改参数值,会影响整个系统的开销,因为这些值 所涉及的空间分配是在系统启动时进行的namespace用于对modules分类, 说明 中指出了目前支持的几种namespace,用户不能增加新的种类. 43 Q: I am a programer work with SUN C++. Can I use STL(stand template library) in program. I can't find any help in SUN C++'s Sun Solaris OS Training 第 80 页 共 121 页 document.Thank you. A: Sun 的 C/C++ WorkShop 中的C++ 类库好像包含 STL, 可以参考一下. docs.sun.com 上有完整的文档,可以参考一下. 44 Q: 原来的系统中/usr与 / 在同一个硬盘分区上,由于安装了许多软件,此分区已满 ,现在系统增加了硬盘,如何将/usr 目录挪到新的硬盘上? A: 1.在新的硬盘上将文件系统建好, 2.mv /usr /usr.bak 3.mkdir /usr 4.mount newdriverpath /usr 5.cp -r /usr.bak /usr 6.修改/etc/vfstab 文件. 45 Q: 运行下面这段程序并用vmstat观察内存的使用情况: int main(){ int *p[100]; int c; printf("before new!"; c=getc(stdin); for(int i=0;i<100;i++) p=(int *)malloc(sizeof(int)*32000); printf("after new!"; //1..... c=getc(stdin); for(int i=0;i<100;i++) free((void *)p); printf("after delete!"; //2...... c=getc(stdin); return 0; } 发现在 2 处系统的空闲内存块并没有增加,free调用到底有没有释放内存? A: malloc 调用引起进程堆空间增长,但free调用不会导致该堆空间立即缩小, 系统只是简单记录这一变化,就继续运行程序,只有系统出现内存短缺时, 系统才收集这些内存块重新分配,这样实现是为了减少系统开销,提高效率. 46 Q: 请问在kstat的输出中,类似avenrun_15min这种内核动态参数有没有介绍材料? A: 通常, kstat输出的是内核模块中的一些链表或数组,按照SUN公司的文档,这些 输出结果是自解释型的,根据他们的名字就可以猜到其含义.但实际上并不是这 样.这些链表中包含的结构是在;下的一些头文件中定义的,比如 kmem_cache模块的结构由kmem_impl.h定义,hme模块的结构由hme.h定义,等等. 翻看这些头文件,可以得到稍微详细一点的资料. 参数名字通常与某结构的成员 变量同名,头文件中由简单的注释指出其作用. 比如:hme模块输出中包含如下字 段: brdcstrcv 1094670 我们就可以查hme.h,hme.h中有一个很大的结构:hme, 其中有: Sun Solaris OS Training 第 81 页 共 121 页 uint32_t hme_brdcstrcv; /* # broadcast packets received */ 47 Q: 1.问题描述:Router&LanSwitch的日志管理依赖系统的syslogd进程来实现。 通过设置/etc/syslog.conf文件, 可以控制syslogd把日志存入特定的文本 文件中。然后日志后台就可以周期性的轮询这些文件并导入数据库。按照sun 的man页说明,当向syslogd进程发HUP信号时,进程将重读配置文件 /etc/syslog.conf,然后继续运行。 但在Solaris2.7 以下实际的效果是:发 HUP信号将导致syslogd进程不能正常工作(有的试验结果是,信号导致进程 终止),后续设备日志全部丢失。 2.解决建议: 我们的建议是,修改系统的脚本文件/usr/lib/newsyslog,不让其向syslogd 发HUP信号,而是TERM(终止信号),然后重启。此种方法的弊端是,如果用 户主动向进程发HUP信号,仍然存在问题。而且也不能解决syslogd意外退出 的情况。第二种建议是由综合统一做一个检测进程,这样各项目就不会产生 冲突。但仍然存在用户主动向进程发HUP信号使syslogd失效的问题。由上述 可以看出,无论何种方法,都不能彻底解决问题。 A: 问题的产生可能是由于程序员定义了新的日志文件并企图 使用newsyslog 脚 本来处理,这个脚本备份日志文件再发送 HUP信号。newsyslog 脚本在处理系 统文件时不会有问题,很可能是由于syslogd对这些文件做过专门的处理。但 不能认为我们自己的文件也会得到同样的照顾,事实上,这样做通常是危险 的。 我认为建议 2 是可行的, 因syslogd打开的是新的日志文件,不会发 生异常。而用户发送的 HUP 命令只是使 syslogd重读 syslog.conf 文件 ,也不会发生意外.为了比较好的定位问题,建议在一个比较干净的系统上进 行测试,在测试之前最好停掉自己的程序, 简化/etc/syslog.conf,我是这样测试的: # /usr/lib/newsyslog # logger -p deamon.notice "12345" # cat /var/adm/messages # kill -HUP `cat /etc/syslog.id` # logger -p deamon.notice "aaaa" # cat /var/adm/messages 结果正常. 48 Q: Solaris 8 中,为什么不可以用如下命令给网卡增加逻辑地址? ifconfig hme0:1 xxx.xxx.xxx.xxx up A: Solaris 8 对ifconfig 作了一些改动,在这个命令之前,先执行下面的命令就可 以了: ifconfig hme0:1 plumb 49 Q: 为什么Solaris 中的多个网卡显示的以太网地址都是一样的? A: 缺省情况下,系统使用本机的MAC地址作为各网卡的MAC地址,可以用如下 OpenBoot 命令让系统使用网卡自带的MAC地址. ok setenv local-mac-address? true Sun Solaris OS Training 第 82 页 共 121 页 50 Q: 如何在一台机器里如何实现用多块网卡容错? A: Solaris8 新增了一个daemon叫mpathd将网卡管理分组管理来完成这样的功能. 原理是给每个网卡分配两个地址,多出的一个逻辑IP地址由mpathd用来检查个网 卡的工作情况.下面一两块网卡为例介绍配置过程,这里两块网卡分别是hme0 和 hme1, 1. ifconfig hme0 group test ifconfig hme1 group test 2. ifconfig hme0 addif 19.16.85.21 netmask + broadcast + -failover deprecated up ifconfig hme1 addif 19.16.85.22 netmask + broadcast + -failover deprecated up 3. 检查hme0:1 和hme1:1 看是否有逻辑IP ifconfig hme0:1 ifconfig hme1:1 这里要注意,给网卡增加的逻辑IP应当与实际分配的IP地址在同一个网段并 且不能与网上其他主机IP地址冲突. 51 Q: 一个进程里最多可以打开多少文件? A: 操作系统为每个进程维护一个所打开文件的数组,进程能够打开的文件与此数组 的大小有关.此数组的大小由两个系统变量限制: rlim_fd_max , rlim_fd_cur, 这两个变量可以用limit或ulimit 命令察看和修改,要扩大rlim_fd_max需要 root权限,rlim_fd_cur不能超过rlim_fd_max. 编程时则有库函数 getrlimit 和 setrlimit 可以使用. 另外一种改法是在 /etc/system文件中修改. 如果是 调用stdio函数打开文件,则还有另外一种限制,32 位内核Solaris 的 FILE 结构 中的 文件句柄是一个字节,所以同时打开文件的上限是 256 52 Q: 如何改变登录CDE时的语言环境? A: 修改/usr/dt/config/Xconfig文件中的变量 Dtlogin*language即可. 53 Q: 如何防止用户通过CDE 环境中的 suspend 菜单关闭计算机? A: 修改 /usr/openwin/bin/sys-suspend的执行权限就可以了. 54 Q: 我安装完solaris5.7 之后(安装时选择简体中文),运行C语言编译器cc不成功 ,提示“language optional software package not installed.”。请问这是 怎么回事,该如何解决? A: Solaris本身带有adb,mdb,make工具,但不带C语言编译器.若要使用需要单独购 买软件包及license. 55 Q: 想修改ROOT的缺省PATH,在哪改?不要告诉我LOCAL.PROFILE,不管用. A: 如果以root用户身份登录或者用 su - 命令进行切换,则修改 home目录下 .profile是管用的. 如果是简单的 用 su 进行切换, 则系统保留除 PATH之外 的所有环境变量, PATH被设为 /etc/default/su 中的 SUPATH ,缺省时为 /usr/sbin:/usr/bin 56 Q: 问一下,现在在Solaris下有什么比较好的测试程序语句以及条件覆盖率的工具 A: prof 和 gprof 都有. 如果您使用workshop 或者 Forte 6.0,则其中有 performence analysis tools 可以使用. Sun Solaris OS Training 第 83 页 共 121 页 57 Q: 怎么样让系统启动时就自动在一个网卡上绑定两个IP地址 A: 创建文件 /etc/hostname.hme0:1,其中写上第二个ip地址. 58 Q: Sun solaris7 系统中有一下几种SHELL,sh,csh,ksh,另外还有一个jsh. 我的问题是:jsh是什麽SHELL?另外有bash SHELL吗? A: jsh 就是 sh, 只不过是激活了job control 模式. 但现在 sh 本身就有job control 功能,所以只用 sh 就可以了. bash 是 sh 的增强, 如果你的系统没 有这个shell, 可以到 www.sunfreeware.com 下载. ls /bin/*sh 可以看到系统所有存在的shell. 59 Q: 我的光驱无法读取光盘?且总是显示设备忙,如何搞定?mount显示没有被 mount. A: 查找进程 vold 并将其杀死,就可以手工打开光驱. 60 Q: 如何将root用户的shell改掉,我知道一般用户可在admintool下修改,但root 用户不能。 A: 1. chmod 666 /etc/passwd (一定要让普通用户有些权限,切记!) 2. vi /etc/passwd(最后一个字段试root 的 shell,要确保该程序存在方可改 掉它. ) 61 Q: 我在安装Solaris 8 时启用了DHCP,现在我的主机名是unknown,在启动时工作 站启用DHCP并分配IP,主机名也自动改为unknow。请问怎样改主机名? A: DHCP in Solaris8 1. # touch /etc/dhcp.hme0,hme0:请用相应的网卡设备名; 2. 修改/etc/init.d/network,/etc/init.d/inetsvc 先备份 # cp /etc/init.d/network /etc/init.d/network.org # cp /etc/init.d/inetsvc /etc/init.d/inetsvc.org 修改/etc/init.d/network第 278 行: "dhcp" #hostname=`/sbin/dhcpinfo Hostname` hostname=`cat /etc/nodename` 修改/etc/init.d/inetsvc第 168 行: hostname=`/sbin/dhcpinfo Hostname` if [ -z "$hostname" ]; then #hostname="unknown" hostname=`cat /etc/nodename` fi 修改/etc/init.d/inetsvc第 82 行: if [ "$_INIT_NET_STRATEGY" = "dhcp" ]; then #dnsdomain=`/sbin/dhcpinfo DNSdmain` dnsdomain=`cat /etc/defaultdomain` else dnsdomain= fi if [ -n "$dnsdomain" ]; then Sun Solaris OS Training 第 84 页 共 121 页 #dnsservers=`/sbin/dhcpinfo DNSserv` dnsservers=`cat /etc/dnsservers` 修改/etc/init.d/inetsvc第 220 行: /usr/bin/mv /tmp/hosts_clear.$$ /tmp/hosts.$$ mydomain=`cat /etc/defaultdomain` echo "${ipaddr}\t${hostname}\t${hostname}.${mydomain}\t# Added by DHCP" >;>;/tmp/hosts.$$ 在/etc/init.d/inetsvc第一行加入如下语句: if [ -f /etc/dhcp.*[0-9] ]; then _INIT_NET_STRATEGY="dhcp" export _INIT_NET_STRATEGY fi 3.创建/etc/defaultdomain,内容为huawei.com.cn 4.创建/etc/nodename,内容为你的机器名 5.创建/etc/dnsservers:129.9.111.100 10.15.1.3 62 Q: 我用msgget建一消息队列: ret = msgget(IPC_PRIVATE, (0660)|IPC_CREAT); 在一个线程用msgsnd发消息,另一个msgrcv收: ulReturnCode = msgsnd( QueueID, pBufferAddr, 8 ,IPC_NOWAIT); 当消息队列中的消息个数等于 40 时(每个消息尺寸为 8 字节),msgsnd函数返 回-1,errno= 11,请问是什么原因。是消息队列满吗?怎样调整系统参数,使 消息队列能大些。 A: msgmap : 100 maximum size of resource map for messages msgmax : 2048 maximum size ,in byte, of a massages msgmnb: 4096 maximum number of bytes on a message queue. msgmni: 50 maximum size of message queue identifiers. msgssi: 8 message segment size. msgtql: 40 maximum number of message headers msgseg: 1024 maximum number of message segments. msgseg 最大为 32k, 其他参数最大值都是 2 billion. 63 Q: license server 如何启动? A: run /opt/SUNWste/bin/lmgrd.ste 可启动 license server 64 Q: 在Solaris8 下,如何修改一个目录的大小。安装时系统自动的设置 /export/home目录空间很大,而其他目录空间很小。 A: 1, 备份 /export/home, 2. umount /export/home, 3. 用 format 修改盘片大小, 4. 备份要增大的目录, 5, umount 5. 用 format 增加盘片大小. 6. 重新mount. 65 Q: 请问用什么命令可以确定是否有磁带设备?多谢。 Sun Solaris OS Training 第 85 页 共 121 页 A: 看一下 /dev/rmt 如果是空就没有. . 66 Q: 在solaris 8 下安装Forte Developer 6 到达: installing Forte C++ Entep Ed 6/SPARC installing Forte Developer 6 时死掉应如何解决 A: 在安装之前,应当清除所有以前安装时添加进系统的package. 另外,不用缺省目录 /opt , 换一个新建的空目录也有效. 67 Q: Forte c/c++版本可以用在solaris2.6 操作系统上吗? A: 可以 68 Q: 在输入用户名后启动很慢,有时甚至进不了,停在启动画面,不知如何解决(我用 过fsck,也不好使,有没有更好的办法)!能否重装操作系统,而不影响现有的已装 软件.谢谢! A: 一般说来, 这与家目录下配置文件有关.新建一个用户试一试. 69 Q: 现在远程维护的解决方式是通过Modem拨号,建立连接,通过我们自己编写的IP 代理转发程序,完成对传输设备远程维护。在PC机上的拨号网络,拨号程序运 行都比较正常,对连接速度,稳定性方面目前使用还算可以。但是在设置Sun工 作站的拨号程序的时候,我常常会遇到一些“奇怪”的问题, 比如Modem不握 手,没有拨号音等。现在我们的拨号设置是自己编写的脚本文件方式。可能对 各种情况考虑的不全面,因此请问是否有相应的软件包(程序)可以帮助我们 机型拨号设置,保证拨号成功? A. 连接失败通常与配置参数有关,由于硬件种类繁多,很难保证一个程序在所有的 硬件环境下都能顺利配置成功.我们只能针对具体情况进行分析.但我们发现,改 变串口的流倥方式经常有助于问题的解决.Sun solstice 中有一个拨号软件据 说比aspppd 更容易使用,我没有用过,或许您愿意试一试? 70 Q: 我这多线程程序,我用ftime得到函数的调用时间,发现在一个线程中,增加一 个printf后,调用时间为 5 毫秒。去掉这个printf,调用时间却为 15 毫秒。增加 了一个printf为什么后使该函数的执行更快了? A: ftime 得到系统当前时间,但具体到线程的执行时间,是和系统的调度情况有关 的, 请用调试工具来检查准确的执行时间. 71 Q: 我们的技术支持人员遇到一个问题,向您请教:在安装时没有选择安装网络, 现在需要安装网络,怎样增加一个interface。目前只有lo0,没有hme0。 A: 在 /etc 下 touch 一个空文件 hostname.hme0, 用 boot -r 命令重起. 72 Q: 在Sun Ultra 5 工作站(安装SOLARIS 2.6),每次开机时,都出现以下问题: Restoring the system.Please Wait ... cpr_read_bitmap:Can't cpr_alloc bitmap0 Can't read statefile bitmap,please reboot Program terminated {0} OK Sun Solaris OS Training 第 86 页 共 121 页 每次开机都需要boot才能进入。 请问如何解决? A: 首先, 在 ok 状态下检查 boot-file 参数: printenv boot-file 如果是 boot-file = -F cprboot 之类, 用如下命令: set-default boot-file 再检查一下.应该是空才对. 如果不是, 则需要设置: setenv boot-file -F ufsboot 重新启动. 73 Q: 经实验,两台Sun工作站之间通过网络发Syslog日志,也不支持汉字,该问题可 能是syslogd的问题。 A: 估计是由于syslogd在望上传输时丢掉了字节的最高位. 74 Q: 如果需要ID:105181-15 的patch,请问ID:105181-19 可以代替吗?ID毫最好两位 是不是patch的版本号,如果是版本号有没有前项兼容性? A: 可以, 后两位表示同一patch的版本号. 75 Q: 以下代码在Forte C++下导致编译错误,请问如何解决? template; void testimpl(int i1, int i2, p1* n1 = 0, p2* n2 = 0) { p1* pReq = new p1; p2* pRsp = new p2; } void test() { int i = 0; int j = 0; testimpl;( i, j); } A: 请下载新的patch更新Forte C++ 76 Q: 请问:如何设置工作站的最大客户端数?现有一台测试用机,使用人较多,经 常出现“无法得到pty”的提示。 A: 在/etc/system ,可以用参数 maxusers 设置,最大 2048,如果这里没有设置,默 认为与系统内存容量相同(以M记,最大为 1024), 77 Q: I install visibroker into my solaris 2.7. When I execute a example program,it cannot execute and tell me: ld.so.1: Server: 致命的: liborb64r_so:打开失败:无此文件或目录 被杀掉 (Server is my program) Sun Solaris OS Training 第 87 页 共 121 页 Can you tell me how to settle it? A: you should set this envirnment variable: LD_LIBRARY_PATH 78 Q: 贵处有无磁带机的使用手册或指导说明? A: answerbook 中系统管理员手册 I 有使用说明. answerbook 的文档不是html格式,需要一个服务器程序转换, 察看本机http进 程看有没有下面这个: # ps -ef |grep http # /usr/lib/ab2/dweb/sunos5/bin/dwhttpd /usr/lib/ab2/dweb/data 79 Q: 在 solaris 2.5.1 上 把 系统时间 改为 2004 年,无问题,然后把时间再改回 来后,整个UNIX 死机,请SUN工程师答复. 具体操作为: 将操作系统时间设为 2004 年 3 月 1 日,然后再将操作系统时间改回当前的时间,则系统的cpu资源被两个 进程dtwm,dtfile严重占用,X Window反应非常缓慢,在低配置的系统上导致系统 不可操作.同时显示 "Warning:selected failed;error code 22. A: 在窗口环境下或多用户模式下来回切换时间,会导致不可预测的结果,所以, 如果当真要执行此类操作,请在单用户模式下进行. 80 Q: shell 文件中如何从文件中读参数? A: cat yourfile` 81 Q: 如何分析网络负载,在SUN上面有没有相应的工具 A: netstat -i 82 Q: 请问目前SUN E250,E450,E3500 支持的CPU主频和缓存分别是多少?您能将这 些配置列表发给我吗? A: docs.sun.com 有 硬件的answerbook ,可以参考一下。 现在支持的CPU到 400M, 480M 产品已有.but still have not released 83 Q: mt -f /dev/rmt/0 有个参数:retension中文为“拉紧”,在磁带操作中具体 做什么? A: the man page of this command said it clearly: Rewind the cartridge tape completely, then wind it forward to the end of the reel and back to beginning- of-tape to smooth out tape tension. so ,it is not 拉紧, but 放松 instead. 84 Q: 具体问题是:有一个进程不停的向该文件增加内容,同时另外一个进程建立了 与该文件的管道,从该文件中读取一行记录进行处理。然后删除该行记录。因 此需要保持该文件i-node不能改变,否则,向该文件写的进程就不能将信息写 入该文件了。有没有解决方法,请指教。 A: I don't know if I have understood you : If you want save this file for later use, you should not remove its' content,if you don't need these content, you don't need this file as Sun Solaris OS Training 第 88 页 共 121 页 well, you can use pipe only, or other interprocess communication methods. 85 Q: 我用dos2unix转换一文件,却不成功,提示信息如下:(我用PC机通过rexec远 程登陆的) $dos2unix filename1 filename2 could not open /dev/kbd to get keyboard type US keyboard assumed could not get keyboard tyep US keyboard assumed 请问此问题是怎麽回事?如何解决? A: 权限问题, 检查一下 /dev/kbd 读写权限 86 Q: 我希望在一台ultra机器为以下网络配置路由 子网:10.1.0.0 掩码:255.255.0.0 网关:10.220.10.113 应该如何配置? 用以下命令可以吗?如果永久配置需要修改那些文件? %route add 10.1.0.0 10.220.10.113 A: no,try this commond: #route add default 10.220.10.113 87 Q: 有个patch 107311-09,能解决CC4.2 不能处理#pragma pack()的问题吗? A: the right patch is 104631, but you should add all related patch to avoid other problem,find them at: sunsolve.sun.com 88 Q: 在CSH下我输入以下命令? $setenv IWAVE 'pwd' $echo $IWAVE 结果显示为:pwd 在我的理解中应该是将pwd的输出(如/tmp)赋值给变量IWAVE,所以我想象的 输出是/tmp A: use ` instead ' apparently,they are different. read some unix books for reference 89 Q: 为什么有时普通用户不能登录CDE? A: 这个错误可能是由于CDE的不正确设置造成的。在每一个用户的home目录下有一 个.dt子目录.在此目录下有一个errorlog文件记录了CDE登录失败的原因.查 看此文件可以找到失败的原因.一个可行的方法是:使用root登录并且删除对 应用户home目录下的.dt目录,同时可以删除;/.dtprofile文件, 然后使用 用户口令登录即可.外检查/usr/dt/bin/dtsessoin的使用权限.正确的权限应 当是-r-sr-xr-x 90 Q: 关于Solaris8 上DHCP的配置问题安装Solaris8 后,进程dhcpagent的CPU占用率一 直都超过 88%, 请问有什么方法可以解决.谢谢. A: I solve this program by going to the field sit. Sun Solaris OS Training 第 89 页 共 121 页 The update period parameter can not be set longer than 2 weeks in the DHCP server side. 91 Q(1)能否在Ultra60 上只安装 64 位的Solaris8? (2) Solaris8 安装在Ultra60 上,内核是 32 位还是 64 位? (3)在其上安装的Oracle 8 是安装的 32 位版本还是 64 位版本? A: Solaris8 的内核是 64 位的, 但是,它同时带有 32 位程序的解释器,也就是说 32 位 的程序也可以在Solaris8 上面运行。事实上Solaris8 上面有一些系统命令就是 32 位的程序,如link等。所有的Solaris8 都是 64 位的,但是都带有 32 位的解释 器。(就现在的情况而言,32 位的解释器是必 须的)。在Solairs 8 上面运行 的应用程序可以是 64 位,也可以是 32 位的,包括Oracle 8 在内 92 Q: 很感谢你的答复。原来不能创建用户的原因应该是文件系统已满,我删除了一 些用户账号后,创建正常。现在的问题是c0d0t0s0 文件系统的容量太小,现在 已经达到 100%,如何扩展这个文件系统,是否只有重装系统这一个办法? A: 在系统安装时,各个分区划分的有些不太合理。/ 目录和 /usr 太小 /export/home和/tmp 太大。实际上在安装时,比较合理的办法是只设置 / 和 /tmp,/tmp最多 500M即可。然后在 / 上面建立/usr,/opt 和/export/home。 现在补救的办法是利用软link的办法:首先将一些在/或/usr中不太是系统直接 使用的目录(一定不可以包含/usr/sbin,/sbin, /etc,等等)转移到有空间的分 区上面,然后使用ln建立软连接。关于ln的使用可以man.这种办法是不得已而 为之。不是很好把握,搞不好就会死机,并且启动不起来。所以在进行此项活 动时,首先要备份数据,以免发生以上情况时丢失。如果您在下午下班的时间 可以抽出一点时间,最好还是将系统重新安装一遍的好。因为,每一个目录都 有一定的用意,一些软件的安装不是地方会让人感到很别扭。而使用软连接又 会降低系统的运行速度。 93 Q: 求助--请教一个多线程编程问题。关于我们发现的问题具体现象如下: 函数 void* A(void *pInput) { char szBuf[30000]; //this buffer maybe larger than 30,000 ... ... } 在多线程程序中,该函数在main中运行(此时相当于在主线程中运行)正常。 如果使用pthread_create创建一个线程,以A作为线程入口函数,用内存测试工 具purify可以观察到该线程运行过程中出现Beyond Stack Read、Beyond Stack Write错误。如果把szBuf改为堆中分配的内存,则无此问题。据此,我们判断 是线程的栈空间溢出造成该问题。按资料描述,主线程的缺省栈空间大小为 8M ,子线程缺省栈空间为 2M;我们使用pthread_attr_setstack函数将子线程的栈 空间设置为 8M,但仍未解决问题。后又将线程属 性设置为 PTHREAD_SCOPE_SYSTEM, 问题仍然存在。函数A以静态库方式由第三方提供, 我们现需要使之在一个子线程中运行,因此希望能够提供主线程与子线程差异 的资料,除堆栈空间、调度方式外,是否还有其他差别,造成以上错误的发生 A: In fact, there is no problem in the program. I think there is a bug in their debug tool: purify. You can use dbx to debug your program. Sun Solaris OS Training 第 90 页 共 121 页 94 Q: 请问一块硬盘上可以有两个Solaris分区吗?在一块硬盘上分了两个solaris分 区,一个是active的系统安装分区,另一个是后来用fdisk创建的,请问怎样把 第二个分区加入到solaris系统中使用。谢谢。 A: Yes, There can be up to six partitions in a disk. you can see the partition using utility format. Command list: #format Then you will see the disks installed in you system.then select the disks you are interested in. then print "partition" and then "print" to see the partition information. The partition you want to add to the system can be identified as c#t#d#s#. Make sure the mount point( a empty directory in file system). such as /disk1.then run the command: #mount /dev/dsk/c#t#d#s# /disk1 run the command #df -k to verify the slice(partition) is properly installed. 95 Q: 请问在Solaris 2.7 上,可以动态改变分区大小吗? 我的工作站划分分区不合理, 根分区太小,已经满了,可以使用工具动态改变吗? A: No, If you want to modify it, the whole disk data will be lost. In fact, I think it high time for you to re-instal the solaris system. In the new installation. You really need just two partitions swap and root. Leave no more than 1G to swap partition and all the left to root.Don't forget to backup all you data before re-installation. 96 Q: 用CC编译器如何实现结构成员按字节对齐,类似于其他编译器的#pragma pack(1) 功能。 A: It is a standard compilation option(#pragma pack). It is also supported in Solaris C.You can get documents about SC options from http://sunlibray under workshop directory. 97 Q: 为什么SUN的本地界面有时候会出现死掉的情况,此时kill掉用户的dtsession 是否就可以恢复正常。如不能恢复正常还需要做那些操作。 A: In my experince, the interface dying, may be caused by other application other than dtsession. You should determine which program's interface causes the interface dying. This situation is not often happens, and most of them happened when you are manipulating a program's interface by mouse. When it happen, login the system from network as "root" or the account which cause the dying, kill the program. 98 Q: 系统不能启动, 任何二级目录都没有了,但用户下,所有命令都不能用,怎么 安装Solaris,能直接从光盘启动吗? A: You harddisk is damaged. It may be salvaged manually, or can not. Sun Solaris OS Training 第 91 页 共 121 页 You should restall the system. Or even worse, you should change your harddisk. 99 Q: Can you tell me if I want to add a new CPU chip to a only one CPU chip machine on solaris system,Can the application run continually in the old cpu chip without interruption on solaris system ? A: Please tell me the machine's type. If your machine is a workstation. CPU chips can not be added without turning down the power. I don't know so much in this field. But, I have forwarded this message to the specitest in our company. You will get much more detailed answers. But you should wait several days. Another way for you is to consult the vender who sell you the machine directly. 100 Q: what's deference between the processor_bind() and pset_bind()? A: You can get the differences between two functions by seeing the manual: # man processor_bind # man pset_bind 101 Q: 我们有一个产品在移植到SOLARIS的过程中出现了大量难以理解的问题,请给 我们现场支援一下,非常感谢!使用Forte Develop6 编译C++程序的时候出现 以下信息: "mit/../teglobal.h", line 39: Warning (Anachronism): Attempt to redefine TRUE without using #undef. "mit/../teglobal.h", line 40: Warning (Anachronism): Attempt to redefine FALSE without using #undef. >;>; Assertion: (../links/prepexpression.cc, line 65) while processing mit/multilock.cpp at line 0. 请问是什么意思,难道编译器还要assert吗? A: CC 编译器要求被编译的文件以两个新行结束,请在相关头文件末尾加上新行。 102 Q: solaris的问题:激活小键盘上的Numlock,激活中文输入法,按小键盘上的 0 键,中文输入法自行关闭,请问是何原因? A: You can solve the problem you metioned by trying the following three ways: 1. Make sure using GB locale, instead of GBK. 2. Visit http://sunsolve.sun.com to get the "recommended patches" package for the your solaris platform, and add it. 3. If possible, you can change the solaris platform from solaris 2.7 to solaris 2.8 103 Q: 有关在SOLARIS上使用NETSCAPE问题 问题描述: 1.在SOLARIS2.6 上安装NETSCAP4.04 后,安装提示成功后,运行netscape,出现以 下错误信息: xlib:connection to "0.0" refused by server Sun Solaris OS Training 第 92 页 共 121 页 xlib:client is not authorized to server can't open display : :0.0 2.在SOLARIS2.6 上安装Acroread后,如何设置能直接点击打开.pdf文件,而无需 每次要先启动Acroread,然后再打开? 请问上述问题如何解决? A: 1. You run the command: #xhost ; :0.0 and then, you can use NETSCAPE In the terminal, in which the netscape is launched, please set the envrionment DISPLAY as :0.0 2. Actually, I don't know how to configure it. If you are interested in it. You can read some topics in AnswerBook2 User Collection. 104 Q: syslogd 如何支持汉字? syslogd 好像会把汉字拆分成两个字节,并去掉高位 如何解决? A: How the background service provider syslogd supports character set depends on the locale environment it starts. So, if you want Chinese characters transferring by syslog. You can restart syslogd in Chinese environment by issuing the following commands: # LANG=zh; export LANG # set the locale environment in Chinese. # kill -9 `cat /etc/syslog.pid` # to kill the former syslogd # /usr/sbin/syslogd If you want syslogd to support Chinese characters whenever the machine boot. Put the attacted file in the /etc/rc3.d directory.Make sure this file's mode is "rwxr-xr-x" and the owner is root. 105 Q: 我的工作站的交换分区分的太小了,除重装系统外,是否有其它办法将空间调 整一下。 A: You can extend your swap region by issueing the following command: #mkfile ; -m ; #swap -a ; Note: the ; should be the full path name. 106 Q: 用vi打开一个script文件,发现里面有非法字符^M,在vi命令行如何全程替代 掉该字符?我试了一下用以下命令来做,却不行:0,$s/^M// A: 1,$s/^M//g ,其中,^M是 ctrl+V ,ctrl+M,或者,用 下面这个命令。 %unix2dos $filename >; $newfilename 107 Q: How to add space to a filesystem in solaris2.5.7 ? When I patchadd a patch,It tell me that there is no sufficient filesystem capacity. A: It seems like your root partition too small. Please check it availiable size. If it is small, I think you would better to reinstall the system. Please store all the data in the disk. In the new installation, you need really to partitions, one is for swap, and another is for /. The swap partition /tmp needs about 200M to 500M. Then all the left should be given to /. Sun Solaris OS Training 第 93 页 共 121 页 108 Q: 请教关于Solaris Patch的问题。我们在安装一些软件时,经常需要先安装一 些Patch,有一事不明,向您请教一下,比如某个软件需要Patch : 107546-02, 现在我的机器上已经安装 107546-08,是不是就不用再安装 107546-02 了Patch 后面的那部分是什么意思?是不是大的数字可以包含小的数字的功能了? 同一 个Patch的不同版本之间会不会有冲突? A: You are right. If you have installed a bigger version of the same patch, it not necessary for you to install the smaller one. The bigger version will override the earlier one if it installed before. You need not worry about any collision. 109 Q: 关于sun的SunNet 我目前想了解关于sun的SunNet。我从sun的网站上了解到 SunNet已经被合并入到Solstice里了,我目前想试着把我做得程序集成到 SunNet或Solstice里,我看了Slostice得White Paper,但里边只提到了一点点 相关得Api,我从哪里,怎么才能到比较完全得文档呢? A: To my knowledge, you can go to the following for a detailed info: http://www.sun.com/software/sols ... ork/sunnetmgr.html. 110 Q: 关于SUN机器root口令丢失问题,如何解决? A: 办法如下: 利用SOLARIS的启动盘来启动,然后把硬盘mount上去,修改硬盘上原etc目录 下的shadow文件,将root项里的password域内容删除,变成无密码。然后重新 启动主机,以无密码的root登陆后,重新设置root口令。具体步骤如下: 1.把你的solaris光盘放进cdrom 2.键入stop+a 3.当出现'ok'字样时,键入boot cdrom -s 4.cd /tmp/root 5.mkdir /tmp/root/xxx (xxx是什么鬼东西就无关紧要了) 6.mount /dev/dsk/c0t0d0s0 /tmp/root/xxx (在这里c0t0d0s0 是你的root盘) 7.运行csh 8.setenv TERM vt220 9.cp /tmp/root/xxx/etc/shadow /tmp/root/xxx/shadow/shadow.bak 10.vi /tmp/root/xxx/shadow,并且将root项里的password域删除即可。 11.重启动,你就可以以无密码的root登陆了,登录后,更改root的密码。 111 Q: In solaris 2.6. when i use command "killall" ,all process started in CDE will be killed and the eviroment will change to CDE login. I looked up the man manual about "killall" ,it told me that "only root can use the command".But I really use it with common id.In solaris7 and solairs 8, with common id,i can't use the common.can you tell me why i can execute "killall" successfully in solaris 2.6? A: Just see the access mode of /usr/sbin/killall. If you can use it with a common account identity, the access mode should be x-rsx-rx-r. If you can not use it in a common account identity, the mode should be x-r--r--r. You can change the mode as you like, whenever in 2.6, or 2.7 or 2.8. Sun Solaris OS Training 第 94 页 共 121 页 112 Q: I downloaded the SDM2.3 from the Download Center of "www.sun.com" ,read the White Paper and web detailed describing.But it is only the outlook of the software. I need the detailed document about how to integrated my own network management application to Solstice. A: I transfer this messag to Sun Service in Guangdong. 113 Q: 请问有没有磁盘管理工具。我们有一台E450,有 5 块硬盘,想做RAID,但是没有工 具. A: If the machine's OS is solaris 2.8, the storage management software is also installed in you machine. You can make the RAID by issuing the command family: /usr/sbin/meta*; If you are not so familiar with these commands. I can do it for you. or you can use solstice disksuite, it is a GUI tool. 114 Q: 怎样强制更改NIS客户端的本地NIS数据表?有时候NIS客户端和NIS服务器端有 时会出现不一致的情况.NIS服务器和NIS slave 服务器也会出现这种情况。 A: 你可以用yppush和 ypxfr 来做这种工作,更常见的方法是把它们写进cron,定 期更新,具体步骤请查阅Answerbook. 115 Q: 为了将工作站设为从DHCP动态分配IP,并且将主机名由"unknown"改为原名 修改了/etc/init.d/rootusr,将dhcpinfo后面三行(不是四行)注释掉; hostname=`/sbin/dhcpinfo Hostname` # case $? in # 0) [ -z "$hostname" ] && hostname='unknown' ;; # 2) try_dhcp=no ;; esac 重启后,提示: /sbin/rcs:ysntax error at line 143 : 'esac' unexpected INIT:cannot creat /var/adm/utmp or /var/adm/utmpx INIT:SINGLE USER MODE 输入root口令后,只能运行在单用户模式,且vi、ls等都不能用(#vi:not found) 如何才能打开/etc/init.d/rootusr文件进行修改,恢复正常状态。 A: 请找一个SOLARIS的安装启动盘,使用以下方法可以修改rootusr文件,步骤如 下: 1.把你的solaris光盘放进cdrom 2.键入stop+a 3.当出现'ok'字样时,键入boot cdrom -s 4.cd /tmp 5.mkdir /tmp/xxx (xxx是什么东西无关紧要,随便取一个名字,如test) 6.mount /dev/dsk/c0t0d0s0 /tmp/xxx (在这里c0t0d0s0 是你的root盘) 7.运行csh 8.setenv TERM vt220 9.vi /tmp/xxx/etc/init.d/rootusr,把esac那行也注释掉即可。 10.把solaris光盘拿出,reboot,重启动即可。 Sun Solaris OS Training 第 95 页 共 121 页 116 Q: 一台Ultra60 工作站,其固定IP为 10.11.105.247,用ifconfig hme0 dhcp start总是失败,如下所示。 # netstat -a|grep 4999 # ifconfig hme0 dhcp start May 7 20:11:11 hwMusa01 dhcpagent[478]: ERROR! Address 10.11.105.147 is already in use ifconfig: internal error in DHCP agent # netstat -a|grep 4999 localhost.4999 *.* 0 0 0 0 LISTEN localhost.4999 localhost.1023 32768 0 32768 0 TIME_WAIT 抓包发现是dhcp服务器offer的IP地址 10.11.105.147 被decline了。手工运行 dhcpagent,提示 4999 端口被使用了。以前此工作站曾配置为固定IP: 10.11.105.147,但现在已改为 10.11.105.247 并重启过多次。请问,可能是什 么原因导致dhcp失败?? A: 导致问题出现的原因是,由于客户机在申请原来的被保留分配的IP时,服务器 发现这个IP不能够被使用(已经有其它机器使用了这个IP地址)。使客户机申 请失败,并且使其中的某些进程不能正常退出,继续占用了端口 4999 而使后面 的申请不能进行。办法是找到占用端口 4999 的进程,杀掉即可。找到这个进程 的办法是,这个申请进程是带有dhcp字样的。 # ps -e | grep dhcp 会出现一到两个进程号。验证这些进程是否占用了 4999 是看进程打开的文件: # /usr/proc/bin/pfiles #pid 早到进程然后杀掉。这样就可以继续启动Client 端的dhcp申请。注意,修改 服务器的设置使新的申请可以成功。 117 Q: 我们有一台Natra T1,它的/tmp目录已经长到 90%,如果目录满了是否会使系统 运行异常.(因为我们运行的业务不能停,故不能重启SUN机器来让系统清空该目 录,也不能直接清空该目录,应为应用程序正在运行.)下面是一些数据: # df -k Filesystem kbytes used avail capacity Mounted on /proc 0 0 0 0% /proc /dev/dsk/c0t0d0s0 1258491 51942 1143625 5% / /dev/dsk/c0t0d0s6 1612343 500741 1063232 33% /usr fd 0 0 0 0% /dev/fd /dev/dsk/c0t0d0s3 33099 9211 20579 31% /var /dev/dsk/c0t0d0s7 13550703 838475 12576721 7% /export/home /dev/dsk/c0t0d0s5 30743 10319 17350 38% /opt /dev/dsk/c0t0d0s1 548687 369368 124451 75% /usr/openwin swap 627864 563360 64504 90% /tmp # cd tmp # ls ps_data # ls -a -l total 98 Sun Solaris OS Training 第 96 页 共 121 页 drwxrwxrwt 6 sys sys 443 May 7 15:29 . drwxr-xr-x 22 root root 512 Mar 20 17:45 .. drwxrwxr-x 2 root root 176 Feb 27 23:18 .X11-pipe drwxrwxr-x 2 root root 176 Feb 27 23:18 .X11-unix drwxrwxrwx 2 root root 179 Feb 27 23:18 .pcmcia drwxrwxrwt 2 root root 327 Feb 27 23:18 .rpc_door -rw-rw-r-- 1 root sys 5056 Feb 27 23:18 ps_data # cd .pcmcia # ls -a -l total 32 drwxrwxrwx 2 root root 179 Feb 27 23:18 . drwxrwxrwt 6 sys sys 443 May 7 15:35 .. prw-rw-rw- 1 root root 0 Feb 27 23:18 pcram # cd .. # pwd /tmp # cd .rpc_door # ls -a -l total 32 drwxrwxrwt 2 root root 327 Feb 27 23:18 . drwxrwxrwt 6 sys sys 443 May 7 15:36 .. Drw-r--r-- 1 root root 0 Feb 27 23:18 .rpc_100029.1 Drw-r--r-- 1 root root 0 Feb 27 23:18 .rpc_100029.2 Drw-r--r-- 1 root root 0 Feb 27 23:18 .rpc_100029.3 # cd .. # cd .X11-pipe # ls -a -l total 32 drwxrwxr-x 2 root root 176 Feb 27 23:18 . drwxrwxrwt 6 sys sys 443 May 7 15:37 .. -rw-rw-rw- 1 root root 0 Feb 27 23:18 X0 # cd .. # ls ps_data # cd .X11-unix # ls -al total 32 drwxrwxr-x 2 root root 176 Feb 27 23:18 . drwxrwxrwt 6 sys sys 443 May 7 15:38 .. srwxrwxrwx 1 root root 0 Feb 27 23:18 X0 等待您的回答,谢谢 A: 我认为是系统统计信息错误的, 本人的经验是当/tmp的使用率超过 10%时,系统就 变的很慢了。出现这种情况,首先,要检查系统中运行的程序有没有不停分配内存, 却没有释放(指自己开发的程序)。另外看一下系统对/tmp的swap交换情况。使用工 具sar 和iostat 都可以看到。关于sar和iostat的用法, 可以看man即可。 Sun Solaris OS Training 第 97 页 共 121 页 118 Q: 有一用MOTIF 写的程序,运行之后不能显示中文(乱码),由于显示的信息是 不固定的,故不能使用资源文件.怀疑程序中与创建字体时使用了以下的函数 有关,但注释掉后也一样: font1=XLoadQueryFont(XtDisplay(toplevel), "-*-screen-bold-r-normal--12-*"; font2=XLoadQueryFont(XtDisplay(toplevel), "-*-screen-bold-r-normal--14-*"; font3=XLoadQueryFont(XtDisplay(toplevel), "-*-screen-bold-r-normal--16-*"; fontlist=XmFontListCreate(font1, "charset1"; fontlist=XmFontListAdd(fontlist, font2, "charset2"; fontlist=XmFontListAdd(fontlist, font3, "charset3"); 运行环境是ULTRA 60 ,Solaris 2.6 ,安装了中文环境。编译环境是SUN C++ 4.0 。 还怀疑与LANG 相关,曾试过设置为zh ,chinese 等也不行,请教此问题如何解决? A: 实际上,关于选择字体和字符集可以看;这个资料,使 用系统提供的标准工具来从中间找到系统中存在的字体和字体的名称。这个资料在 Answer Book 的System Administration Collection 中。 实际上,上面的问题不 出现在字体的选择上面, 而是在MOTIF中在选择框的使用设置中还要设置一次字体 119 Q: 请问SUN的E250 以上机器支持“双机热备+磁盘阵列”的使用方式吗?Ultra系 列的机器是否也能支持呢? A: SUN的E250 以上机器支持“双机热备+磁盘阵列”的使用方式,可以使用 SunCluster软件实现;Netrat系列电信服务器也支持;Ultra系列的机器,不 在支持的列表中。但是,“双机热备+磁盘阵列”的具体含义应该搞清楚。推 荐的文档在sun cluster collection 中。 120 Q: 我在一个JAVA程序中打开 50 个SOCKET端口,结果出现异常: java.net.SocketException:Too many open files 请问如何解决此问题?谢谢!另外,请问在一个JAVA进程中可以同时启动的线 程数是多少?最大线程数受什么限制?能否达到 240 个线程?谢谢!如上问题 如果可以通过修改配置来解决的话,会有什么样的负面影响? A: You have two ways to modify the limit number of files that a process can open simutanously. One: modify the /etc/system file add the following entry: set rlim_fd_cur = #n #n is the number you want. Should be no more than 1024. You should reboot the machine. Two: Use the system command: ulimit $ulimit -n #n Note: You should use B-shell. And using the same terminal session(in the same terminal window) to run the your application program( to guarantee your application process is a child process of the setting terminal.)You can man ulimit to see the detailed usaged. The disadvantage brought by incread the file limite for a process or the whole system is increasing the system memory usage. But, for today's machine, this disadvantage is not too Sun Solaris OS Training 第 98 页 共 121 页 expensive. (William said There is no limit for max open socket number in Java. But the operating system has a limit for max open file descriptors.A socket resource is treated as a file descriptor in Unix. The previous email answered your question. You can try as said. 121 Q: 我想把一个HP平台上运行的B SHELL 脚本在SOLARIS 2。6 上运行,但是出现了 问题:要运行的脚本部分: command_count = 0 command_item[$command_count]=check_AutoRaid command_count=`expr $command_count + 1` command_item[$command_count] = check_system_resource command_count=`expr $command_count + 1` command_item[$command_count]= check_diskspace command_count=`expr $command_count + 1` command_item[$command_count]= check_bill_record command_count=`expr $command_count + 1` Sun Solaris OS Training 第 99 页 共 121 页 附录 C:系统维护命令 1、查看机型:SUn 的小型机的机型都在面板上写着有,如 NETRA T 1125, 还有比如 utra 5,utra 10 等等。 2、查看 cpu 个数 (错误,不正确,因为 sun 中的 top 命令不能完全看到所有的 cpu 情况,与 HP 用法也不一样) #top CPU states: 99.3% idle, 0.1% user, 0.6% kernel, 0.0% iowait, 0.0% swap 表示只有一个 cpu 正确方法: 用 dmesg |grep cpu 便可以看到正确的 cpu 个数了。 3、查看内存 #dmesg |grep mem mem = 2097152K (0x80000000) avail mem = 2087739392 4、查看磁盘的个数 #vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced - - error c0t0d0s7 simple c0t0d0s7 rootdg online c1t0d0s2 sliced - - online c1t1d0s2 sliced smpdg2 smpdg online c1t2d0s2 sliced smpdbdg1 smpdbdg online c2t0d0s2 sliced - - online c2t1d0s2 sliced smpdg1 smpdg online c2t2d0s2 sliced smpdbdg2 smpdbdg online 5、如何查看文件系统 #df -k Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t0d0s0 4032142 1050675 2941146 27% / /proc 0 0 0 0% /proc fd 0 0 0 0% /dev/fd /dev/dsk/c0t0d0s6 7304977 29 7231899 1% /home /dev/dsk/c0t0d0s5 4032142 402929 3588892 11% /opt swap 3418392 32 3418360 1% /tmp /vol/dev/dsk/c0t6d0/informix 201730 201730 0 100% /cdrom/informix /dev/vx/dsk/smpdg/smpdg-stat 1055 9 941 1% /smpwork Sun Solaris OS Training 第 100 页 共 121 页 /dev/vx/dsk/smpdg/lv_smp 17336570 128079 17035126 1% /sms 6、查看卷组、逻辑卷的位置 #cd /dev/vx/dsk/ 比如 smpdg 等等都在该目录下了,然后再进入某个卷组目录就可以看到该卷组下 面的逻辑卷了。 7、如何创建卷组、逻辑卷、文件系统 A、创建 smpdg 逻辑卷组(假设现在是将 c1t1d0 和 c1t2d0 两块物理磁盘来创建 smcpdg 逻辑卷组) vxdisksetup -i c1t1d0 (格式化物理磁盘) vxdisksetup -i c2t1d0 vxdg init smpdg smpdg1=c2t1d0 (将物理磁盘加入到逻辑卷组 smpdg) vxdg -g smpdg adddisk smpdg2=c1t1d0 然后再来创建逻辑卷、文件系统 vxassist -g smpdg -U fsgen make lv_smp 17200m layout=nolog smpdg1 vxassist -g smpdg mirror lv_smp layout=nostripe smpdg2 newfs -C -f /dev/vx/rdsk/smpdg/lv_smp 假设现在的一台机器上挂接到/sms mkdir /sms chown smp:smp /sms vxvol -g smpdg startall mount /dev/vx/dsk/smpdg/lv_smp /sms umount /sms vxvol -g smpdg stopall vxdg deport smpdg 然后再在第二台机器上挂接到/sms mkdir /sms chown smp:smp /sms vxdg import smpdg vxvol -g smpdg startall newfs -C -f /dev/vx/rdsk/smpdg/lv_smp mount /dev/vx/dsk/smpdg/lv_smp /sms umount /sms 备注:以上是创建一个共享的文件系统 往往由于 smpdg 要分配给某一个应用来使用,所以需要再来创建一个个逻辑机运行 时挂接的文件系统: vxassist -g smpdg -U fsgen make smpdg-stat 2m layout=nolog smpdg1 vxassist -g smpdg mirror smpdg-stat layout=nostripe smpdg2 newfs /dev/vx/rdsk/smpdg/smpdg-stat B、创建 smpdbdg 逻辑卷组 Sun Solaris OS Training 第 101 页 共 121 页 创建卷组: vxdisksetup -i c1t2d0 vxdisksetup -i c2t2d0 vxdg init smpdbdg smpdbdg1=c1t2d0 vxdg -g smpdbdg adddisk smpdbdg2=c2t2d0 vxassist -g smpdbdg -U fsgen make smpdbdg-stat 2m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror smpdbdg-stat layout=nostripe smpdbdg2 newfs /dev/vx/rdsk/smpdbdg/smpdbdg-stat 创建逻辑卷: vxassist -g smpdbdg -U gen make lv_rootdbs 128m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_rootdbs layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_logdbs 300m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_logdbs layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_phydbs 100m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_phydbs layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_tempdbs 1000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_tempdbs layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_svcchunk1 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_svcchunk1 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_svcchunk2 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_svcchunk2 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_svcchunk3 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_svcchunk3 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_recchunk1 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_recchunk1 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_recchunk2 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_recchunk2 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_recchunk3 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_recchunk3 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_recchunk4 2000m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_recchunk4 layout=nostripe smpdbdg2 vxassist -g smpdbdg -U gen make lv_recchunk5 1700m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_recchunk5 layout=nostripe smpdbdg2 C、附逻辑卷的属性 vxedit -g smpdg -v set user=smp group=smp lv_smp vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_rootdbs vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_logdbs vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_phydbs vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_tempdbs vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_svcchunk1 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_svcchunk2 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_svcchunk3 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_recchunk1 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_recchunk2 Sun Solaris OS Training 第 102 页 共 121 页 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_recchunk3 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_recchunk4 vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_recchunk5 备注:在 SUN 的机器中在给逻辑卷付属性的时候,等于用 chown、chmod 来作。 8、如何删除卷组 其实也就是去激活和倒出的过程,然后再来对物理磁盘重新格式化就完了。 vxvol -g smpdbdg stopall vxdg deport smpdbdg vxdisksetup -i c1t0d0 vxdisksetup -i c2t1d0 ...... 这样做了之后就不会再有/dev/vx/smpdbdg 目录了。 9、如何建立共享卷组 在第一台机器上先建立卷组,假设已经建设好卷组 smpdg,现在要在第二台机器上建立共享卷组 smpdg, 则先在的一台机器上将 smpdg 去激活、并且倒出 smpdg: smcp01>vxvol -g smpdg stopall smcp01>vxdg deport smpdg 再来在第二台机器上激活、导入 smpdg: smcp02>vxdg import smpdg smcp02>vxvol -g smpdg startall 切换后对用以下三个命令进行查看是否切换成功: vxdg list //用于查看逻辑卷组的信息 vxdisk list //用于查物理磁盘的信息 vxprint -vt //用于查看所有卷的信息 10、如何查看磁盘的大小 方法一: #format 然后选择盘的代号,回车进入下一级菜单,再选 inquiry,就得到该盘的大小信 息,比如: Vendor: FUJITSU Product: MAN3184M SUN18G Revision: 1502 注意:format 是一个功能强大的磁盘诊断工具。 方法二: #cd /opt/SUNWexplo/bin/ 运行 explorer 得到磁盘的信息包,是一个目录,进入该目录,就发现有一个 Sun Solaris OS Training 第 103 页 共 121 页 disks 目录,进入该目录发现有一个 diskinfo 文件,用如下命令看各个磁盘 的大小: 0: rmt/0ln HP C1537A L706 62######## 1: c0t0d0 FUJITSU MAJ3182M SUN18G 0804 0041P90050## 2: c1t0d0 SEAGATE ST318203LSUN18G 034A 0025H54125## 3: c1t1d0 SEAGATE ST318203LSUN18G 034A 0026H70087## 4: c1t2d0 FUJITSU MAJ3182M SUN18G 0804 0046P66422## 5: c2t0d0 SEAGATE ST318203LSUN18G 034A 0026G30220## 6: c2t1d0 SEAGATE ST318203LSUN18G 034A 0026H59041## 7: c2t2d0 FUJITSU MAJ3182M SUN18G 0804 0051P91980## 8: ses0 SYMBIOS D1000 2 O8# SAF- 9: ses1 SYMBIOS D1000 2 O8# SAF- 11、查看 informix 的版本 #su - informix informix>onstat - 这样可以看到 informix 的版本。 12、收集信息的工具 #cd /opt/SUNWexplo/bin/explorer #explorer 运行之后得到一个文件夹和该文件夹的压缩包*.gz。我们可以进入该 结果文件夹,在该文件夹中有各种需要查看的信息。 13、双机的脚本文件 #cd /opt/SUNWcluster/ha/smpwork 在 ha 下面有双机应用的文件夹,如 smpwork,在该文件夹下面又有各种 双机应用的配置文件。 14、双机的维护命令集 首先在节点 smcp01 机上启动 cluster: # scadmin startcluster smcp01 smcp 然后在节点 smcp02 机上将本节点启动: # scadmin startnode 启动后观察 cluster 状态的命令是 : # hastat //该命令可以显示 cluster、节点、 逻辑机和 Data service 的状态,以及一些历史运行信息。 # get_node_status //该命令可以显示所在节点的节点号、公用网卡的状态等信息。 从图形化的本地终端(假设其 IP 地址为 ip)中以 smcp 用户的身份登 录到 SMCP 主机(注意应使用 SMCP 的逻辑机地址) % telnet smcpwork 在 SMCP 主机上设置环境变量 DISPLAY Sun Solaris OS Training 第 104 页 共 121 页 % setenv DISPLAY ip:0.0 在本地终端中执行 % xhost + 手工启动 OAM % oam& 以 OAM 操作员登录 分别在两个节点 smcp01 机和 smcp02 机上执行: # scadmin stopnode 该命令使当前所在节点停止在 cluster 中运行,而且在两个节点上要分别执行该命令。 例如将 smcpwork 切换到节点 smcp02 上运行可以输入: #scadmin switch smcp smcp02 smcpwork 例如将 querywork 切换到节点 smcp02 上运行可以输入: #haswitch smcp02 querywork hareg 命令通过以下开关参数将 Data service 注册和激活 -r 将指定的 Data service 注册到 cluster 中 -u 将指定的 Data service 从 cluster 中取消注册 -y 激活指定的 Data service,使其状态为 On -Y 激活 cluster 中所有的 Data service,使其状态为 On -n 去激活指定的 Data service,使其状态为 Off -N 去激活 cluster 中所有的 Data service,使其状态为 Off hareg 不带任何参数时可以查看所有 Data service 的当前状态 Data service 只有在注册到 cluster 中之后,才会具有 On 或者 Off 的状态, 处于 On 状态的 Data service 可以正常的对外提供服务, 而处于 Off 状态的 Data service 是停止对外服务的。如果 Data service 被取消了注册, 必须重新注册才能在 cluster 中运行起来。当然,使用 hareg 命令的前提是 cluster 已经启动并正常运行。 从图形化的本地终端(假设其 IP 地址为 ip0)中以 root 用户的身份登录到 SMCP 主机 (假设其 IP 地址为 ip1): 在本地终端中执行 % xhost + % telnet ip1 再在 SMCP 主机上设置环境变量 DISPLAY # DISPLAY =ip1:0.0 # export DISPLAY # vxva 15、激活/去激活/导出/导入卷组 smcp01>vxvol -g smpdg stopall smcp01>vxdg deport smpdg smcp02>vxdg import smpdg smcp02>vxvol -g smpdg startall Sun Solaris OS Training 第 105 页 共 121 页 16、SUN Netra T 1125 双机配置的详细注解 A、网络资源的配置 SUN Netra T 1125 共有 4 个网卡:hme0 ,hme1 ,hme2 和 hme3 。 hme0 和 hme1 是 SUN 服务器与公网通信的主备用网卡,只需要一个 IP 地址; hme2 和 hme3 作为双机之间心跳检测用,也需要配置一个 IP 地址。 另外,TELLIN SMP 对外使用的是一个浮动的 IP 地址,与数据 IP 在同一网段, 此地址由 SUN 的双机软件 SUN Cluster 进行管理。 1)如何修改 IP 地址和主机名 IP 地址涉及的文件有: /etc/hosts (change the IP address) /etc/netmasks (if subnetting) /etc/defaultrouter (to specify the new gateway for this subnet) 改变主机名涉及的文件有: /etc/hosts (change to the new hostname) /etc/nodename (change to the new hostname) /etc/hostname. (where is the name of the primary interface for this system, i.e hostname.hme0 or hostname.le0. Change to the new hostname.) /etc/net/ticlts/hosts (change both columns to the new hostname) /etc/net/ticots/hosts (change both coluums to the new hostname) /etc/net/ticotsord/hosts (change both columns to the new hostname) 改完上述文件之后推荐重起一下机器。 2)如何配置 hme0、hme1 两块网卡的主备关系 只要给 hme0 配置地址就够了。 然后会再后面的双机配置中执行下面的命令建立逻辑机的时候会创建出这种关系来。 #scconf smcp -L smcpwork -n smcp01,smcp02 -g smcpdg -i hme0,hme0,smcpwork -m 3) 配置 NAFO (Network Adapter Fail Over) /opt/SUNWpnm/bin/pnmset 以下显示相关信息 In the following, you will be prompted to do configuration for network adapter failover do you want to continue ... [y/n]: y How many NAFO backup groups on the host [1]: Enter backup group number [0]: Please enter all network adapters under nafo0 hme0 hme1 The following test will evaluate the correctness of the customer NAFO configuration... Sun Solaris OS Training 第 106 页 共 121 页 name duplication test passed Check nafo0... 本信息表明通过测试 注意: NAFO 配置时对网线的要求较高,有时要做多次才能成功。 B、配置双机 双机配置的一般过程是,先启动双机系统,在一个节点上配置 cluster 和包, 检查无误后,使配置生效,然后就可以进行相应操作。 注意: 使用双机前,需要检查 smcpdg,querydg 的状态。执行如下步骤: (1) 在两个节点分别执行: # vxdg list 应该只看到 rootdg ,不能看到 smcpdg 和 querydg。 (2) 如果上以步操作看到 smcpdg 或 querydg,需要检查 IDS 是否在运行(Online)。 如果在运行,先终止 IDS 运行,然后使用 vxdg deport 放弃对 Disk Group 的控制。 ==================== 双机配置的一般过程是,先启动双机系统,在一个节点上配置 cluster 和包,检查无误后,使配置生效,然后就可以进 行相应操作。 注意: 使用双机前,需要检查 smcpdg, querydg 的状态。执行如下步骤: 在两个节点分别执行: # vxdg list 应该只看到 rootdg ,不能看到 smcpdg 和 querydg。 如果上以步操作看到 smcpdg 或 querydg,需要检查 IDS 是否在运行(Online)。如果在运行,先终止 IDS 运行,然 后使用 vxdg deport 放弃对 Disk Group 的控制。 对双机系统进行配置 在 1 号机运行#scadmin startcluster smcp01 smcp。 待 1 号机双机软件起来之后,在 2 号机运行#scadmin startnode,将其作为节点加入双机 对双机系统上逻辑机的配置 逻辑机与应用程序对应,是双机系统管理应用程序的方式,每个逻辑机在双机系统上只对外提供一个 IP 地址。 ================================================ (2)配置 cluster 仅仅在一台主机上运行 #scconf iin -L scpwork -n smcp02,smcp01 -g scpdg -i hme0,hme0,scpwork -m 注意: 该命令格式为: scconf -L -n , -g -i 公网网口 1> 公网网口 1> -m 其中 的顺序决定了该逻辑机在 node1 上是主用,在 node2 上是备用。 备注:这里的逻辑机的主机名对应的浮动 IP 地址必须要在/etc/hosts 文件中配置。 Sun Solaris OS Training 第 107 页 共 121 页 在每台机器上都要建立管理文件系统 # scconf iin -F scpwork scpdg 注意: 该命令格式为: scconf -F 在 2 号机上运行配置逻辑主机 querywork #scconf iin -L smpwork -n smcp01,smcp02 -g smpdg -i hme0,hme0,smpwork -m 建立管理文件系统 # scconf iin -F querywork querydg 注册双机 hereg -u querywork query.register hereg -u smcpwork smcp.register C、配置应用程序 /etc/opt/SUNWcluster/conf 目录 可以通过 ccd.datatbase 和 smcp.cdb 两个文件查看双机基本配置和 cluster 的信息, 不要去手工改动这些文件,让系统去维护它们。 其中 ccd.database 有专门的守护进程维持该文件在两节点上的一致。 /opt/SUNWcluster/ha 目录 该目录下包含了 smcp 和 query 两个子目录。smcp 目录存放 smcp 部分的 Data service 相关的配置文件和执行脚本,其中 smcp.config 文件记录了 smcpwork 的基本配置, smcp.register 用来注册 smcpwork,其它的文件是启动、停止和监测 smcpwork 的运行脚本。 query 目录存放 query 部分的 Data service 相关的配置文件和执行脚本,其中 query.config 文件记录 querywork 的基本配置,query.register 用来注册 querywork,其它文件 是必需的运行脚本。 在把这两个 Data service 加入 cluster 时,必须分别通过 hareg 命令来进行注册,这些步骤已在安装时通过执行 smcp.register 和 query.register 完成。 备注:再 conf 目录下的文件 ccd.database 如果两台机器不一致的话,就会导致双机不能 正常的切换。 D、双机配置的检验 (1) 先在主机上运行#scadmin startcluster smcp01 smcp (2) 等待主机双机软件运行起来后在备机上运行 #scadmin startnode (3) 在两台主机运行 df -k 及 ifconfig -a 检验是否有错,运行 hastat 查看 HA 状态, 可看到 hme0 捆绑了 smcp,query 应用的浮动 IP: hme0 .... 129.9.168.101 Sun Solaris OS Training 第 108 页 共 121 页 hme0:1 .... 129.9.168.120 hme0:2 .... 129.9.168.140 (4) 用 haswitch 命令进行切换实验,将逻辑主机 smcpwork 由物理主机 smcp01 上切换到物理主机 smcp02 上。 # haswitch smcp02 smcpwork 要查看是否切换成功,则有以下方法: 在主机 smcp02 上用 df -k 查看磁盘资源。如果显示信息有以下内容,则说明切换成功: /dev/vx/dsk/smcpdg/smcpdg-stat 在主机 smcp02 上用 ifconfig -a 查看 ip 地址,若逻辑主机 smcpwork 的 IP 地址 129.9.169.120 此时已绑定在 hme0 网卡(即公网的主网卡)上,则说明切换成功。 (5) 将/opt/SUNWcluster/bin/xps_check 覆盖该目录下的 db_check 用 get_node_status 检验双机的状态 smcp02>get_node_status sc: included in running cluster node id: 1 membership: 0 1 interconnect0: selected interconnect1: up vm_type: vxvm vm: up db: up 17、SUN Netra T 1125 头次安装的时候如何来设置 Terminal Concentrator。 ===================================== 在 TELLIN SMP 的 SUN Netra T1125 标准配置中,主机为不带显示卡和显示器的 SUN 服务器, 因此使用终端集线器将两台主机上控制台(Console)信号接出到监控台上显示。由于在 Solaris 没有启动前,无法对主机进行控制,必须先设置终端集线器。如果 Terminal Concentrator (简称 TC)已经设置好,则可以不用重设。 下面给出终端集线器的配置步骤。终端集线器一经配置完成就无须每次开机后再次配置, 以下的配置过程假设 TC 的 IP 地址为 129.9.168.23,子网掩码为 255.255.255.0。 (1) 用一台 Sun 工作站,用 RS232 玆 J45 电缆连接主机的串口 A 和终端集线器的 端口 1。 在工作站/etc/remote 文件中加上: a:dv=/dev/term/a:br 9600:el=^C^S^Q^U^D:ie=%$e=^D:el=^C^S^Q^U^D:ie=%$e=^D: (2) 在 ROOT 用户下键入: tip a (3) 正确连接终端集线器和公网 (4) 将终端集线器上电 (5) 按一下终端集线器的 Test 键,Test 指示灯亮并进入测试模式。注意:应当在电源灯亮后立即按 Test 键,不能等到其进入正常运行态,相当于计算机中按"DEL"进入设置状态。 完成测试后,正确的各指示灯状态如表 2-2 所示。 表 2-2 终端集线器的指示灯 灯名 Power Unit Net Attn Load Active 颜色 Green Green Green Amber Green Green 状态 ON ON ON OFF OFF 慢闪 Sun Solaris OS Training 第 109 页 共 121 页 (6) 在 SUN 工作站上将出现 monitor::提示符,使用 addr 命令配置 TC 的 IP 和子网屏蔽码 monitor:: addr 输入 IP: 129.9.168.23 输入子网屏蔽码: 255.255.255.0 (7) 退出 tip 应用程序 在 monitor::提示符下: monitor:: boot monitor:: ~. ( 关掉终端集线器电源并重新开机,若用 PC 机 能 telnet 上去, 即验证了上述配置的正确性。此时对终端集线器的各端口进行配置: telnet 129.9.168.23 Trying 129.9.168.23... Connected to 129.9.168.23. Escape character is "^]". Enter Annex port name or number: cli annex: su (切换到超级用户状态) Password: 此处键入 TC 的 IP 地址 annex admin Annex administration MICRO-XL-UX R7.0.1, 8 ports admin : set port=1-8 type dial_in imask_7bits Y You may need to reset the appropriate port, Annex subsystem or reboot the Annex for changes to take effect. admin : set port=2-7 mode slave You may need to reset the appropriate port, Annex subsystem or reboot the Annex for changes to take effect. admin : quit annex boot bootfile: warning: *** Annex (129.9.168.23) shutdown message from port v1 *** Annex (129.9.168.23) going down IMMEDIATELY Connection closed by foreign host.w 安装完毕,撤消 1 口的串口线。 以上操作过程中可键入"?"或"help"出现帮助,在当前工作站上, 可用使用 PC 机的超级终端等程序对 TC 进行设置。 =================================== 18、查看物理磁盘的信息 用一下命令查看物理磁盘是分配给哪个逻辑卷组。 #vxdisk list DEVICE TYPE DISK GROUP STATUS c0t0d0s2 sliced - - error c0t0d0s7 simple c0t0d0s7 rootdg online Sun Solaris OS Training 第 110 页 共 121 页 c0t8d0s2 sliced - - error c1t1d0s2 sliced c1t1d0 smcpdg online c1t2d0s2 sliced - - online c1t3d0s2 sliced c1t3d0 smcpdg online c1t4d0s2 sliced - - online c1t6d0s2 sliced - - online c2t1d0s2 sliced c2t1d0 smcpdg online c2t2d0s2 sliced - - online c2t3d0s2 sliced c2t3d0 smcpdg online c2t4d0s2 sliced - - online c2t6d0s2 sliced - - online 19、SUN 的小型机的内核参数的修改/etc/system set shmsys:shminfo_shmmax=268435456 set semsys:seminfo_semmni=4096 set semsys:seminfo_semmns=4096 set semsys:seminfo_semmnu=4096 set semsys:seminfo_semume=64 set semsys:seminfo_semmsl=100 set shmsys:shminfo_shmmin=100 set shmsys:shminfo_shmmni=100 set shmsys:shminfo_shmseg=100 20、SUN 双机运行的日志 cluster 日志记在 var/adm/messaage 中,如果 cluster 运行中出现故障, 我们可以查看该文件以帮助定位问题。另外,注意观察控制台屏幕上的消息。 cluster 运行时的错误和告警信息,包括定时监测的结果,通常会实时的显示到控制台上。 21、如何使用光驱 A、如何利用光驱启动或者安装 先在主机上同时按住 stop 和 A 键,即是:stop+A,这样进入 OK 命令环境; 再在 OK 状态下输入 boot cdrom 则可以进入光盘启动了。 B、如何读光驱的内容 将光盘塞入光驱中,会自动挂接的 df -k 看看光盘挂接在哪个目录下面了, 然后进入该目录就可以访问到光盘中的内容了。 22、如何使用终端集线器对 SUN 双机进行 console 的功能访问 修改/etc/default/login 文件 将 CONSOLE=/dev/console 一行修改为 CONSOLE=/dev/console 否则只能通过 TC 来登录主机,其它方式无法登录。 Sun Solaris OS Training 第 111 页 共 121 页 23、关闭主机的命令 #shutdown -- 24、如何利用远程磁带机来备份文件 假设两台机器 smcp01 和 smcp02,只有在第二台机器上才有磁带机, 那么第一台机器要通过如下的方式来使用第二台机器的磁带机: 写: #tar cvf - /tmp/yqx | rsh smcp02 dd of=/dev/rmt/0m 如果执行不成功则先设置: #obs=20b (20 个 block) 读: #rsh smcp02 dd if=/dev/rmt/0m | tar tvf - 如果执行不成功,就先设置: #bs=20b 25、如何查看当前的网络子网、网络的掩码是多少 1)查看子网 #netstat -in 查看 hme0 对应的: Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue hme0 1500 172.0.8.0 172.0.8.68 3430395 0 1134355 0 0 0 可知子网就是 172.0.8.0 2)查看掩码 查看/etc/netmasks 就可以了 3)查看地址 #ifconfig -a 或者查看/etc/hostname.hme0 注意:有些机器上的网卡的物理名字是 le0。 26、如何从 cluster 中删除一个逻辑机呢? 1)先将逻辑机上的应用进行去注册 hareg -n scpwork; hareg -u scpwork; 2)再将应用从逻辑机上删除 scconf tellincluster(cluster 名) -s -r scpserv(应用名) scpwork(逻辑机名) 3)最后将逻辑机从 cluster 中删除 方法一)用 scinstall 来选择菜单 change/logic hosts/remove 来删除 方法二)直接用命令 scconf iin -L scpwork -r 备注:用 scinstall 命令可以查看到所有的关于 sun 双机配置的信息。 Sun Solaris OS Training 第 112 页 共 121 页 27、sun 的逻辑卷组、逻辑卷的创建总结步骤 SUN:Volumn manager 简称 VM,在此环境下永久性修改 smcpdg/querydg 等磁盘卷组的用户属性及 读写权限的时候,不能用 chown 和 chmod 来修改的,只能用 vxedit 来修改。 补充: 初始化物理磁盘:vxdisksetup -i c1t2d0 vxdisksetup -i c2t2d0 创建卷组: vxdg init smpdbdg smpdbdg1=c1t2d0 vxdg -g smpdbdg adddisk smpdbdg2=c2t2d0 创建卷组挂接的文件系统: vxassist -g smpdbdg -U fsgen make smpdbdg-stat 2m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror smpdbdg-stat layout=nostripe smpdbdg2 newfs /dev/vx/rdsk/smpdbdg/smpdbdg-stat 创建逻辑卷: vxassist -g smpdbdg -U gen make lv_rootdbs 128m layout=nolog smpdbdg1 vxassist -g smpdbdg mirror lv_rootdbs layout=nostripe smpdbdg2 修改卷组权限: vxedit -g smpdg -v set user=smp group=smp lv_smp vxedit -g smpdbdg -v set user=informix group=informix mode=660 lv_rootdbs 查看卷组激活情况:vxdg list 导入卷组:vxdg import smcpdg 激活卷组:vxvol -g smcpdg start all 去激活卷组:vxvol -g smcpdg stop all 28、sun 双机配置时关于自动启动双机的配置 为了保证 SMCP 双机在异常情况下可以在双机重新启动后自动拉起 cluster, SUN 机型:把双机系统的自启动脚本 S99startcluster 拷贝 到系统的/etc/rc3.d 目录下。此脚本包含下述内容, 其中通常需要根据现场情况进行修改的项目有: LOCALNODENAME、 REMOTENODENAME、 CLUSTERNAME if [ $LOCALNODENAME = "smcp01" ]; then REMOTENODENAME="smcp02" # LOCALID=0 # REMOTEID=1 else REMOTENODENAME="smcp01" # LOCALID=1 # REMOTEID=0 fi CLUSTERNAME=smcp-cluster 29、sun 的总段上乱码的处理 当在终端窗口上进行输入字符的时候,出现了乱码的时候,这个时候有 Sun Solaris OS Training 第 113 页 共 121 页 两种解决办法: 1)敲打 del 2) Ctrl + (向左的删除键) 30、查看一个逻辑卷组下面有哪些物理磁盘 root@smp2 # vxdg list smpdbdg Group: smpdbdg dgid: 1035450560.1072.smp2 import-id: 0.1071 flags: copies: nconfig=default nlog=default config: seqno=0.1027 permlen=3447 free=3445 templen=2 loglen=522 config disk c1t0d0s2 copy 1 len=3447 state=clean online log disk c1t0d0s2 copy 1 len=522 30、sun 双机的维护命令 #scinstall 命令可以进行一系列的 sun 双机的维护,如: Assuming a default cluster name of smp Checking on installed package state .................... ============ Main Menu ================= 1) Install/Upgrade - Install or Upgrade Server Packages or Install Client Packages. 2) Remove - Remove Server or Client Packages. 3) Change - Modify cluster or data service configuration 4) Verify - Verify installed package sets. 5) List - List installed package sets. 6) Quit - Quit this program. 7) Help - The help screen for this menu. Please choose one of the menu items: [7]: 31、如何删除逻辑卷 vxedit -g scpdbdg -fr rm 逻辑卷名 32、修改/etc/opt/SUNWcluster/conf/hanfs/vfstab.scpwork 的文件系统 33、关于 SUN 小型机中创建用户注意 有时候创建好用户了之后,我们又会将它删除,正确的操作应该是 userdel 用户名来删除。 但是有时候可能会被工程师直接从/etc/passwd 中删除,这个时候如果再来用 useradd 添加同名用户的时候, Sun Solaris OS Training 第 114 页 共 121 页 系统会提示添加失败,这个时候必须要注意将/etc/shadow 文件中的该用户的配置行也要删除,删除以后让 /etc/shadow 文件和/etc/passwd 文件中的用户保持一致,这样就又可以用 useradd 来添加了。 34、如何实现一个用户属于多个用户组呢? 35、查看 swap 空间 #swap -s eg: total: 76552k bytes allocated + 17184k reserved = 93736k used, 296608k availabl Sun Solaris OS Training 第 115 页 共 121 页 附录 D:RAID 技术说明 RAID 全称为 Redundant Array of Disks,是"独立磁盘冗余阵列"(最初为"廉价磁盘冗余阵列")的缩略语。1987 年由 Patterson,Gibson 和 Katz 在加州大学伯克利分院的一篇文章中定义。RAID 阵列技术允许将一系列磁盘分组,以实 现为数据保护而必需的数据冗余,以及为提高读写性能而形成的数据条带分布。RAID 最初用于高端服务器市场,不 过随着计算机技术的快速发展,RAID 技术已经渗透到计算机遍布的各个领域。如今,在家用电脑主板中,RAID 控制 芯片也随处可见。   一般,RAID 系统可以存在于各种接口界面,就我们现时来说,PATA、SATA 以及 SCSI 均有相应的硬盘可以组 成 RAID。随着 Intel 865/875 系列芯片组的发布,家用市场的硬盘接口开始转向 SATA,而 RAID 方式也将从 PATA 过渡到 SATA。   RAID 技术伴随着人们的使用过程,经历了一系列的变迁与发展。而在家用市场上,我们一般只能看到 RAID 0、 RAID 1 以及 RAID 0+1 这几种磁盘阵列方式。不过从 DFI Lanparty 主板的诞生开始,我们又迎来了第四种磁盘阵列 方式,那就是 RAID 1.5。    从实际应用来说,家用 RAID 的组建大多数情况是为了进一步提高磁盘的读写性能,而数据的备份可由其他方式 达到(如刻录)。所以,在只有 2 个硬盘的情况下,人们愿意尝试的以 RAID 0 为主,不过 RAID 1.5 的诞生让我们改 变了这一理念。究竟这两种相对廉价的磁盘阵列方式具有何等的性能?让我们来为大家揭晓。 RAID 0: RAID 0 使用一种称为"条带"(striping)的技术把数据分布到各个磁盘上。在那里每个"条带"被分散到连续"块" (block)上,数据被分成从 512 字节到数兆字节的若干块后,再交替写到磁盘中。第 1 块被写到磁盘 1 中,第 2 块被 写到磁盘 2 中,如此类推。当系统到达阵列中的最后一个磁盘时,就写到磁盘 1 的下一分段,如此下去。 分割数据可以将 I/O 负载平均分配到所有的驱动器中。由于驱动器可以同时写或读,使得性能显著提高。但是,它 却没有数据保护能力。如果一个磁盘出现故障,那么数据就会全盘丢失。因此,RAID 0 不适用于关键任务环境,但 是,它却非常适合于视频、图象的制作和编辑。 RAID 1: RAID 1 也被称为镜象,因为一个磁盘上的数据被完全复制到另一个磁盘上。如果一个磁盘的数据发生错误,或者 硬盘出现了坏道,那么另一个硬盘可以补救回磁盘故障而造成的数据损失和系统中断。另外,RAID 1 还可以实现双工 ——即可以复制整个控制器,这样在磁盘故障或控制器故障发生时,您的数据都可以得到保护。镜象和双工的缺点是 需要多出一倍数量的驱动器来复制数据,但系统的读写性能并不会由此而提高,这可能是一笔不小的开支。RAID l 可 以由软件或硬件方式实现。 RAID 2: RAID 2 是为大型机和超级计算机开发的带海明码校验磁盘阵列。磁盘驱动器组中的第 1 个、第 2 个、第 4 个…… 第 2 的 n 次幂个磁盘驱动器是专门的校验盘,用于校验和纠错。如下图:七个磁盘驱动器组建的 RAID 2,第 1、2、4 Sun Solaris OS Training 第 116 页 共 121 页 个磁盘驱动器(红色)是纠错盘,其余的(紫色)用于存放数据。RAID 2 对大数据量的读写具有极高的性能,但少 量数据的读写时性能反而不好,所以 RAID 2 实际使用较少。 由于 RAID 2 的特殊性,只要我们使用的磁盘驱动器越多,校验盘在其中占的百分比越少。如果希望达到比较理想的 速度和较好的磁盘利用率,那最好可以增加保存校验码 ECC 码的硬盘,但是这就要付出更多硬盘的购买成本,来确 保数据冗余。对于控制器的设计来说,它比下面所说的 RAID 3,4 或 5 要简单。 RAID 3: RAID 3,即带有专用奇偶位(parity)的条带。每个条带片上都有相当于一"块"那么大的空间用来存储冗余信息, 即奇偶位。奇偶位是编码信息,如果某个磁盘的数据有误,或者磁盘发生故障,就可以用它来恢复数据。在数据密集 型环境或单一用户环境中,组建 RAID 3 对访问较长的连续记录有利,不过同 RAID 2 一样,访问较短记录时,性能 会有所下降。 RAID 4: RAID 4 是带奇偶校验码的独立磁盘结构。它和 RAID 3 很相似,不同的是 RAID 4 对数据的访问是按数据块进行 的。RAID 3 是一次一横条,而 RAID 4 一次一竖条。所以 RAID 3 常须访问阵列中所有的硬盘驱动器,而 RAID 4 只 须访问有用的硬盘驱动器。这样读数据的速度大大提高了,但在写数据方面,需将从数据硬盘驱动器和校验硬盘驱动 器中恢复出的旧数据与新数据校验,然后再将更新后的数据和检验位写入硬盘驱动器,所以处理时间较 RAID 3 长。 RAID 5: RAID 5 也被叫做带分布式奇偶位的条带。每个条带上都有相当于一个"块"那么大的地方被用来存放奇偶位。与 RAID 3 不同的是,RAID 5 把奇偶位信息也分布在所有的磁盘上,而并非一个磁盘上,大大减轻了奇偶校验盘的负担。 尽管有一些容量上的损失,RAID 5 却能提供较为完美的整体性能,因而也是被广泛应用的一种磁盘阵列方案。它适 合于输入/输出密集、高读/写比率的应用程序,如事务处理等。 为了具有 RAID 5 级的冗余度,我们需要至少三个磁盘组成的磁盘阵列。RAID 5 可以通过磁盘阵列控制器硬件实现, 也可以通过某些网络操作系统软件实现。 RAID 6: RAID 6 是带有两种分布存储的奇偶校验码的独立磁盘结构。它使用了分配在不同的磁盘上的第二种奇偶校验来 实现增强型的 RAID 5。它能承受多个驱动器同时出现故障,但是,用于计算奇偶校验值和验证数据正确性所花费的 时间比较多,造成了系统的负载较重,大大降低整体磁盘性能,而且,系统需要一个极为复杂的控制器。当然,由于 引入了第二种奇偶校验值,我们所以需要的是 N+2 个磁盘。 RAID 7: Sun Solaris OS Training 第 117 页 共 121 页   RAID 7 自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机 CPU 资 源。RAID 7 存储计算机操作系统(Storage Computer Operating System)是一套实时事件驱动操作系统,主要用来 进行系统初始化和安排 RAID 7 磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。通过 Storage Computer Operating System 来设定和控制读写速度,可使主机 I/O 传递性能达到最佳。如果一个磁盘出现故障,还 可自动执行恢复操作,并可管理备份磁盘的重建过程。 RAID 7 采用的是非同步访问方式,极大地减轻了数据写瓶颈,提高了 I/O 速度。(所谓非同步访问,即 RAID 7 的 每个 I/O 接口都有一条专用的高速通道,作为数据或控制信息的流通路径,因此可独立地控制自身系统中每个磁盘的 数据存取。)如果 RAID 7 有 N 个磁盘,那么除去一个校验盘(用作冗余计算)外,可同时处理 N-1 个主机系统随 机发出的读/写指令,从而显著地改善了 I/O 应用。RAID 7 系统内置实时操作系统还可自动对主机发送过来的读/写 指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高 了 I/O 速度。RAID 7 可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率提高至少一倍以上,满足 了各类用户的不同需求。 RAID 10(RAID 0+1): RAID 10,也被称为镜象阵列条带,现在我们一般称它为 RAID 0+1。RAID 10(RAID 0+1)提供 100%的数据冗 余,支持更大的卷尺寸。组建 RAID 10(RAID 0+1)需要 4 个磁盘,其中两个为条带数据分布,提供了 RAID 0 的读 写性能,而另外两个则为前面两个硬盘的镜像,保证了数据的完整备份。 RAID 30: RAID 30 也被称为专用奇偶位阵列条带。它具有 RAID 0 和 RAID 3 的特性,由两组 RAID 3 的磁盘(每组 3 个 磁盘)组成阵列,使用专用奇偶位,而这两种磁盘再组成一个 RAID 0 的阵列,实现跨磁盘抽取数据。RAID 30 提供 容错能力,并支持更大的卷尺寸。象 RAID 10 一样,RAID 30 也提供高可靠性,因为即使有两个物理磁盘驱动器失效 (每个阵列中一个),数据仍然可用。 RAID 30 最小要求有 6 个驱动器,它最适合非交互的应用程序,如视频流、图形和图象处理等。这些应用程序顺序处 理大型文件,而且要求高可用性和高速度。 RAID 50: RAID 50 被称为分布奇偶位阵列条带。同 RAID 30 相仿的,它具有 RAID 5 和 RAID 0 的共同特性。它由两组 RAID 5 磁盘组成(每组最少 3 个),每一组都使用了分布式奇偶位,而两组硬盘再组建成 RAID 0,实验跨磁盘抽取 数据。RAID 50 提供可靠的数据存储和优秀的整体性能,并支持更大的卷尺寸。即使两个物理磁盘发生故障(每个阵 列中一个),数据也可以顺利恢复过来。 RAID 50 最少需要 6 个驱动器,它最适合需要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事 务处理和有许多用户存取小文件的办公应用程序。 RAID 53: Sun Solaris OS Training 第 118 页 共 121 页 RAID 53 称为高效数据传送磁盘结构。结构的实施同 Level 0 数据条阵列,其中,每一段都是一个 RAID 3 阵列。 它的冗余与容错能力同 RAID 3。这对需要具有高数据传输率的 RAID 3 配置的系统有益,但是它价格昂贵、效率偏低。 RAID 1.5:   RAID 1.5 是一个新生的磁盘阵列方式,它具有 RAID 0+1 的特性,而不同的是,它的实现只需要 2 个硬盘。从表 面上来看,组建 RAID 1.5 后的磁盘,两个都具有相同的数据。当然,RAID 1.5 也是一种不能完全利用磁盘空间的磁 盘阵列模式,因此,两个 80GB 的硬盘在组建 RAID 1.5 后,和 RAID 1 是一样的,即只有 80GB 的实际使用空间,另 外 80GB 是它的备份数据。如果把两个硬盘分开,分别把他们运行在原系统,也是畅通无阻的。但通过实际应用,我 们发现如果两个硬盘在分开运行后,其数据的轻微改变都会引起再次重组后的磁盘阵列,没法实现完全的数据恢复, 而是以数据较少的磁盘为准。 既然 RAID 1.5 和 RAID 1 具有非常相似的效果,那么它是怎么实验 RAID 0 的条带式读写操作的呢?到目前为止,我 们还没有确实的材料证明下面的假想:就是磁盘阵列控制芯片具有高级的控制功能,可以让两个磁盘同时以条带的方 式记录相同的数据,但需要读取的时候,控制器却可以分辨出需要读取的程序条带,然后分别从不同的硬盘中读取不 同的条带,以达到提高性能的 RAID 0 效果。   其实,对于家庭用户来说,RAID 1.5 的实现大多数情况下还是在于性能有所提高,毕竟 RAID 1.5 具有 RAID 0 的特性。因此,这次我们针对 RAID 1.5 的性能做了一次对比测试。下面,让我们一起来看看 RAID 1.5 的性能: RAID 级别 RAID 0 RAID 1 RAID 0+1 RAID 1.5 名称 条带 镜像 条带+镜像 条带+镜像 允许故障 否 是 是 是 冗余类型 无 副本 副本 副本 热备用操作 不可 可以 可以 可以 硬盘数量 1个以上 2个 4个 2个 可用容量 最大 最小 中间 中间 减少容量 无 50% 2 个磁盘 1个磁盘 读性能 高(盘的数量决定) 中间 中间 高 随机写性能 最高 中间 中间 高 连续写性能 最高 中间 中间 高 典型应用 无故障的迅速读写 允许故障的小文件、随机数据写入 允许故障的小文件、连续数据传输 允许故障的小文 件、随机数据传输 性能测试: 硬件平台 CPU Intel Pentium4 3.0GHz(Northwood,800MHz FSB) 显卡 启亨 大银家 Ti4680 VIVO 驱动程序: nVIDIA Detonator 4 V43.50 Sun Solaris OS Training 第 119 页 共 121 页 内存 KingMax DDR400 DDRRAM 256MB×2 内存参数统一设置在 DDR 400 AUTO 模式下 硬盘 酷鱼 V SATA 120G(7200rpm,8MB Cache)×2 金钻 9 PATA 80G(7200rpm,2MB Cache)×2 驱动程序: Intel IAA 3.0 With RAID 主板 MSI(微星)875P NEO DFI(钻石)Lanparty PRO875 PS:板载声卡、网卡设备全部关闭 驱动程序: Intel Chipset Software V 5.00 操作系统 Windows XP Professional+SP1 英文版 DirectX DirectX 9.0 软件平台 测试软件 ZDNet WinBench 99 2.0 Sisoft Sandra 2003 HDTach 2.61    这次测试,我们采用了 ICH 5 的 Soft RAID 功能和 Promise PDC20378 的 RAID 功能组建了 SATA 的 RAID 0 系统,和 Lanparty PRO875 主板板载的 Highpoint 372N 组建的 PATA RAID 1.5 进行对比。组建的 SATA 磁盘阵列和 PATA 磁盘阵列所用的硬盘类型不同,所以测试成绩也仅供参考。 WinBench 99:    通过 WinBench 99 测试,我们可以了解到组建 RAID 之后,无论是商用磁盘性能还是高端磁盘性能,都得到了 很大的提高。其中两个金钻 9 组成的 RAID 1.5 在商用磁盘性能方面最为强劲,达到了 21200,而高端磁盘性能则由 ICH 5 RAID 0 控制的 SATA 磁盘阵列带头领先,成绩也是相当喜人。   为了进一步比较 PATA RAID 1.5 和 SATA RAID 0 的差别,我们做了以下的对比测试: HighPoint PATA RAID 1.5 Promise 378 SATA RAID 0 Sun Solaris OS Training 第 120 页 共 121 页    通过两种 RAID 模式的对比,我们发现采用 DiamondMax 9 Plus(金钻 9 代)硬盘组建的 RAID 1.5 系统成绩十 分惊人,其磁盘传输率最高可以达到 95KB/s,而平均传输率也接近 70KB/s。数据传输过程中,其传输率的波动性比 较有规律,传输性能稳定。而 SATA 作为优秀的新生代磁盘接口,当然也表现出非凡的实力。通过两个 Baracuda V(酷 鱼 5 代)组建的 RAID 0 系统在磁盘的最高传输率上没有 RAID 1.5 的表现突出,不过也可以超过 90KB/s,但最低传 输率方面要比 RAID 1.5 高出一定的距离,平均传输率更是比 RAID 1.5 优胜。 Sisoft Sandra 2003:   在 Sisoft Sandra 2003 的磁盘性能测试中,我们都采用了一个空磁盘分区作为测试的目标盘,容量均为 20G。采 用 PATA 组建的 RAID 1.5 系统,其性能没有在 WinBench 99 测试中那么优秀,与两种控制芯片构成的 SATA RAID 0 相差甚远。 HighPoint PATA RAID 1.5 Promise SATA RAID 0 ICH 5 SATA RAID 0 HD Tach 2.61: HighPoint PATA RAID 1.5 Promise SATA RAID 0 ICH5 SATA RAID 0 在 HD Tach 2.61 测试中,RAID 1.5 再展雄风,其平均 47.8MB/s 的读速度让平均只有 31.1MB/s 的 SATA RAID 0 俯 首称臣。不过在 CPU 占用率方面,SATA RAID 0 明显比 PATA RAID 1.5 小得多,其中最小是 ICH5 控制的 RAID 0 系统,仅为 1.2%。不过就算是 CPU 占用率最高的 RAID 1.5 系统也只是 2.8%,对于现今超过 2GHz 的主流机器配置 来说,也是微不足道的。   在 SYSMark 2002 测试中,我们发现组建 RAID 之后的整机性能没有得到想象中那么大的改善,不过在办公性能 方面也会有 5%的提升。PATA 硬盘组建的 RAID 1.5 和 SATA 硬盘组建的 RAID 0 差别不大。   不过在 PCMark 2002 测试中,RAID 1.5 又一次超出 RAID 0 的水平,让人不得不佩服。 总结: Sun Solaris OS Training 第 121 页 共 121 页   RAID 是一种具有悠久的历史磁盘阵列技术。它的诞生不光是为了保证我们的重要数据在冗余的磁盘阵列中得以 安全长久的储存下去,还是突破瓶颈、提升性能的重要手段。至今,RAID 技术已经应用于计算机所渗透到的各个领 域中,而家用计算机市场,这个本来不为 RAID 研发人员所考虑的市场,也已经具有好几年的发展历程。   在过去,PATA 硬盘在家用市场组建的 RAID 通常仅有 RAID 0、RAID 1 和 RAID 0+1,不过今天我们不但亲眼 目睹了 RAID 1.5 的诞生,还感受到 RAID 1.5 的独特魅力。和即将成为主流的 SATA 硬盘组建的 RAID 0 系统相比, PATA 硬盘组建的 RAID 1.5 不显一点的乏力,相反,RAID 1.5 就仿佛是 PATA 硬盘提高性能和确保数据安全的
还剩120页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

xinlu

贡献于2012-01-07

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!