Posts Tagged solaris
Sun技术日
今天到长城假日酒店出席了“Sun技术日”,今天共有231人到场。会上照旧是每人2张DVD :Solaris 10(2006/01 update)和一系列的开发包,同时还有不少小礼品哦。我比较幸运的拿到了一本书、一件T-shirt 和一个吉祥物,不过最好的礼品是抽奖的——256MU盘,每场5人。
呵呵对于胃口比较好的同志们我可以肯定地告诉你们:“中饭的量实在太少,下次记得自备干粮吧。”
会议资料下载(已转换为PDF,7-zip格式压缩)
Solaris的软件包
Solaris的软件包是发布软件的标准格式。软件包包含:元信息、压缩过的软件本身的文件、可选的安装或卸载的脚本。元信息部分描了软件包的名称、类 别、属主、权限等信息。软件包的名称通常以发布该软件的公司的纳斯达克上市股票代号为前缀后面跟上软件包的简写名称,Solaris下发布软件包最多的公 司应该是Sun公司,它的纳斯达克上市股票代号为SUNW,所以我们常常可以看到以SUNW前缀软件包,如SUNWman, SUNWcsr。而随着开方源代码和自由软件的兴起,为了方便Solaris用户安装使用开源软件,一个非营利的网站www.sunfreeware.com提供了一些著名的开源软件的Solaris软件包,这些软件包名都以SMC为前缀。
软件包有两种格式,即文件系统格式和数据流格式。前者实际上就是按照一定目录结构组织的文件集合,后者则是将这些文件打包成一个文件以方便传输。(个人理解为一种压缩方式)通常 Solaris软件包在光盘介质中以文件系统格式发布,而在因特网上以数据流格式发布。文件系统格式的软件包通常用软件包名作为顶层目录名,该目录中至少 有pkginfo和pkgmap两个文件,这两个文件描述软件包的元信息。例如在Solaris10的光盘中的Solaris_10/Product目录 下存放许多以文件系统格式发布软件包,查看其中的SUNWcsr软件包;
-bash-3.00# cd /cdrom/cdrom0/Solaris_10/Product/
-bash-3.00# ls -ld SUNWcsr
dr-xr-xr-x 5 root root 2048 Dec 7 23:58 SUNWcsr
-bash-3.00# cd SUNWcsr
-bash-3.00# ls -l
total 78
dr-xr-xr-x 2 root root 2048 Dec 7 23:58 archive
dr-xr-xr-x 2 root root 6144 Dec 7 23:58 install
-r–r–r– 1 root root 3342 Dec 7 23:24 pkginfo
-r–r–r– 1 root root 26025 Dec 7 23:24 pkgmap
dr-xr-xr-x 6 root root 2048 Dec 7 23:58 reloc
文件系统格式和数据流格式可以互相转换。/var/sadm/install/contents文件中记录了所有软件包的所有文件的安装的位置、属主、权限等信息。该文件是Solaris系统的已安装软件包信息库。
-bash-3.00# more /var/sadm/install/contents
……
/usr/bin/newform f none 0555 root bin 16308 54888 1106448826 SUNWesu
/usr/bin/newgrp f none 4755 root sys 10324 56620 1106447294 SUNWcsu
/usr/bin/news f none 0555 root bin 10128 27837 1106448826 SUNWesu
/usr/bin/newsp=./mailp s none SUNWmp
/usr/bin/newtask=../../usr/lib/isaexec l none SUNWcsu
/usr/bin/nfsstat f none 0555 root bin 23936 33443 1106444303 SUNWnfscu
/usr/bin/nice f none 0555 root bin 5768 49667 1106447294 SUNWcsu
/usr/bin/nisaddcred f none 0555 root bin 31224 40868 1106444342 SUNWnisu
/usr/bin/niscat f none 0555 root bin 9964 29056 1106444342 SUNWnisu
/usr/bin/nischgrp f none 0555 root bin 14248 41511 1106444342 SUNWnisu
/usr/bin/nischmod=../../usr/bin/nischgrp l none SUNWnisu
/usr/bin/nischown=../../usr/bin/nischgrp l none SUNWnisu
……
可见如果知道具体文件位置可以用查到该文件所属的软件包名称。
以下命令找出ifconfig命令所属软件包为SUNWcsr:
-bash-3.00# grep bin/ifconfig /var/sadm/install/contents
/sbin/ifconfig f none 0555 root bin 63956 59090 1132684929 SUNWcsr
/usr/sbin/ifconfig=../../sbin/ifconfig s none SUNWcsu
Solaris下有6个用于软件包管理的命令行工具:
pkgadd – 用于安装或缓存(spool)软件包
pkgrm — 用于删除软件包或清除软件包缓存(spool)
pkginfo – 用于获取软件包信息
pkgchk – 用于检查软件包中文件的完整性
pkgtrans — 用于软件包格式转换
pkgask – 用于录制含有交互式脚本软件包安装时需要的用户输入
除了pkgask、pkgrm外,这些命令都接受软件包名作为可选的最后一个参数,如果不指定命令会提示用户输入,也可以用all代表所有。指定软件包的 位置用-d选项,对于文件系统格式软件包只要指定到包含该软件包的目录即可,对于数据流格式的软件包需要指定到文件名称。
软件包管理的常见任务
软件包管理的常见任务有:获得软件包信息、安装软件包、删除软件包、软件包格式转换、缓存软件包等。以下以实例分别介绍每个任务的操作步骤。
获得软件包信息
获得软件包信息的命令主要是pkginfo。pkgchk -v则可以用来获得软件包中的文件列表。如果要查看未安的装软件包的信息,需要用-d选项指定软件包所在的位置。查看系统上安装的软件包则不需要使用-d选项。
pkginfo命令不带任何参数显示当前系统安装的所有软件包的概要信息,包括分类、名称、描述。
-bash-3.00# pkginfo |more
system CADP160 Adaptec Ultra160 SCSI Host Adapter Driver
system HPFC Agilent Fibre Channel HBA Driver
ALE SUNW5xmft Traditional Chinese (BIG5) X Windows Platform minimum required Fonts Package
system SUNWGlib GLIB – Library of useful routines for C programming
system SUNWGtkr GTK – The GIMP Toolkit (Root)
system SUNWGtku GTK – The GIMP Toolkit (Usr)
GNOME2 SUNWPython The Python interpreter, libraries and utilities
system SUNWTk Tk – TCL GUI Toolkit
system SUNWa2psr a2ps – GNU Any to PostScript filter (root)
system SUNWa2psu a2ps – GNU Any to PostScript filter (user)
system SUNWaac Adaptec AdvanceRaid Controller SCSI HBA Driver
system SUNWad810 SUNW W1100z & W2100z Audio Drivers
system SUNWadmap System administration applications
system SUNWadmc System administration core libraries
system SUNWadmfr System & Network Administration Framework Configuration
system SUNWadmfw System & Network Administration Framework
system SUNWadmj Admin/Install Java Extension Libraries
system SUNWadmlib-sysid System and Network identification libraries
system SUNWadmr System & Network Administration Root
system SUNWadp Adaptec 29xx/39/xx/78xx Family of SCSI HBA
system SUNWadpu320 Adaptec Ultra320 Driver
……
pkginfo -l则列出软件包的详细信息:
-bash-3.00# pkginfo -d . -l SMCapch22
PKGINST: SMCapch22
NAME: apache
CATEGORY: application
ARCH: sparc
VERSION: 2.2.0
BASEDIR: /usr/local/apache2
VENDOR: The Apache Group
PSTAMP: Steve Christensen
EMAIL: steve@smc.vnet.net
STATUS: spooled
FILES: 2198 spooled pathnames
66 directories
72 executables
2 package information files
44173 blocks used (approx)
pkgchk命令用来检查软件包是否安装、软件包中的文件是否有所改动等信息。如果软件包成功安装并且没有任何文件改动过,该命令无任何输出,否则在标准 错误上输出相关的信息。pkgchk不带任何参数则检查当前系统安装的所有软件包,并列出检查结果的概要信息,如果要详细信息可以用-l选项。如果要限定 某个具体软件包,最后一个参数写上该软件包名称即可。如果只要检查某个软件包的某个文件可以用-p选项加上该文件的完全路径即可,如果不知道完全路径可以 使用-P选项加文件的部分路径。例如:
-bash-3.00# pkgchk -p /etc/shadow
ERROR: /etc/shadow
modtime <01/22/05 07:46:05 AM> expected <02/13/06 01:36:36 PM> actual
file size <296> expected <373> actual
file cksum <20180> expected <26166> actual
检查/etc/shadow自安装以来是否发生变化。有输出说明有变化,没有输出则表示没有变化。
-bash-3.00# pkgchk -l -p /usr/bin/showrev
Pathname: /usr/bin/showrev
Type: regular file
Expected mode: 0755
Expected owner: root
Expected group: sys
Expected file size (bytes): 28148
Expected sum(1) of contents: 7605
Expected last modification: Jan 23 09:40:57 2005
Referenced by the following packages:
SUNWadmc
Current status: installed
列出/usr/bin/showrev文件在软件包中的属主、权限、所属软件包名称等信息。
-bash-3.00# pkgchk -l -P showrev
Pathname: /usr/bin/showrev
Type: regular file
Expected mode: 0755
Expected owner: root
Expected group: sys
Expected file size (bytes): 28148
Expected sum(1) of contents: 7605
Expected last modification: Jan 23 09:40:57 2005
Referenced by the following packages:
SUNWadmc
Current status: installed
Pathname: /usr/share/man/man1m/showrev.1m
Type: regular file
Expected mode: 0644
Expected owner: root
Expected group: root
Expected file size (bytes): 3744
Expected sum(1) of contents: 56811
Expected last modification: Oct 22 08:51:42 2005
Referenced by the following packages:
SUNWman
Current status: installed
列出含有showrev文件的软件包中该文件的相关信息。可见如果知道某个文件的完全路径名或部分路径名可以通过pkgchk -lp或pkgchk -lP命令查找出该文件所属的软件包。
pkgchk -v pkg_name用来列出指名称的软件包所包含的文件。下面的命令用分页显示列出软件包SMCapch22中所包含的文件列表:
-bash-3.00# ls -l
total 3002
-rw-r–r– 1 root root 75782 Feb 25 20:56 1
drwxr-xr-x 3 root root 512 Feb 25 18:09 SMCapch22
drwxr-xr-x 5 root root 512 Feb 25 17:15 SUNWcsr
-rw-r–r– 1 root root 1216512 Feb 25 17:09 SUNWcsr.pkg
-rw-r–r– 1 root root 220672 Feb 25 17:59 zone.pkg
-bash-3.00# pkgchk -d . -v SMCapch22 2>&1 | more
bin/ab
bin/apachectl
bin/apxs
bin/checkgid
bin/dbmmanage
bin/envvars
bin/envvars-std
bin/htcacheclean
bin/htdbm
bin/htdigest
bin/htpasswd
bin/httpd
bin/httxt2dbm
bin/logresolve
bin/rotatelogs
build/config.nice
build/config_vars.mk
build/instdso.sh
build/library.mk
build/ltlib.mk
build/mkdir.sh
build/program.mk
–More–
要注意的是pkgchk命令只往标准错误输出文件列表,所以使用管道时需要重定向到标准输出。
安装软件包
安装软件包用pkgadd命令,该命令可以安装文件系统各式的软件包:
-bash-3.00# cd /cdrom/cdrom0/Solaris_10/ExtraValue/CoBundled/SunVTS_6.1/Packages
-bash-3.00# pkgadd -d . SUNWvts
Processing package instance <SUNWvts> from </cdrom/sol_10_106_x86/Solaris_10/Ext
raValue/CoBundled/SunVTS_6.1/Packages>
SunVTS Framework(i386) 6.1,REV=2005.11.10.13.29
Copyright 2004 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
## Executing checkinstall script.
Using </opt> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
This package contains scripts which will be executed with super-user
permission during the process of installing this package.
Do you want to continue with the installation of <SUNWvts> [y,n,?] y
Installing SunVTS Framework as <SUNWvts>
## Installing part 1 of 1.
5254 blocks
Installation of <SUNWvts> was successful.
也可以安装数据流格式的本地软件包:
-bash-3.00# pkgadd -d cvs-bundle.pkg all
Processing package instance <SMCcvs> from </export/home/justin/pkg/cvs-bundle.pkg>
cvs(x86) 1.11.20
FSF
The selected base directory </usr/local> must exist before
installation is attempted.
Do you want this directory created now [y,n,?,q] y
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing cvs as <SMCcvs>
## Installing part 1 of 1.
/usr/local/bin/cvs
/usr/local/bin/cvsbug
/usr/local/bin/rcs2log
……
/usr/local/man/man1/cvs.1
/usr/local/man/man5/cvs.5
/usr/local/man/man8/cvsbug.8
[ verifying class <none> ]
Installation of <SMCcvs> was successful.
Processing package instance <SMCgzip> from </export/home/justin/pkg/cvs-bundle.pkg>
gzip(intel) 1.3.5
Free Software Foundation
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
5 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing gzip as <SMCgzip>
## Installing part 1 of 1.
/usr/local/bin/gzexe
/usr/local/bin/gzip
/usr/local/man/man1/gzip.1
……
[ verifying class <none> ]
/usr/local/bin/gunzip <linked pathname>
/usr/local/bin/zcat <linked pathname>
/usr/local/bin/zcmp <linked pathname>
/usr/local/bin/zegrep <linked pathname>
/usr/local/bin/zfgrep <linked pathname>
Installation of <SMCgzip> was successful.
最新版的pkgadd命令还支持http方式安装远程的数据流格式软件包:
-bash-3.00# pkgadd -d http://localhost/pkgs/cvs-bundle.pkg all
## Downloading…
…………..25%…………..50%…………..75%…………..100%
## Download Complete
Processing package instance <SMCcvs> from <http://localhost/pkgs/cvs-bundle.pkg>
cvs(x86) 1.11.20
FSF
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing cvs as <SMCcvs>
## Installing part 1 of 1.
/usr/local/bin/cvs
/usr/local/bin/cvsbug
……
[ verifying class <none> ]
Installation of <SMCcvs> was successful.
Processing package instance <SMCgzip> from <http://localhost/pkgs/cvs-bundle.pkg>
gzip(intel) 1.3.5
Free Software Foundation
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
5 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
Installing gzip as <SMCgzip>
## Installing part 1 of 1.
/usr/local/bin/gzexe
/usr/local/bin/gzip
……
Installation of <SMCgzip> was successful.
要注意的是有些软件包有它所依赖的其它软件包,如果这些依赖没有安装,那么pkgadd将会报错。遇到这种情形应当首先安装依赖的软件包。此外,如果需要 无人值守的情况下安装那些需要用户输入的软件包时,可以事先使用pkgask将设置记录到一个文件中,然后使用pkgadd的-r选项告诉pkgadd命 令使用该文件的的用户输入。
删除软件包
删除软件包用pkgrm命令:
-bash-3.00# pkgrm SMCgzip
The following package is currently installed:
SMCgzip gzip
(intel) 1.3.5
Do you want to remove this package? [y,n,?,q] y
## Removing installed package instance <SMCgzip>
## Verifying package <SMCgzip> dependencies in global zone
## Processing package information.
## Removing pathnames in class <none>
/usr/local/man/man1 <shared pathname not removed>
/usr/local/man <shared pathname not removed>
/usr/local/info/gzip.info
/usr/local/info <shared pathname not removed>
/usr/local/doc <shared pathname not removed>
/usr/local/bin/zcat
/usr/local/bin/gzip
/usr/local/bin/gzexe
/usr/local/bin/gunzip
/usr/local/bin <shared pathname not removed>
## Updating system information.
Removal of <SMCgzip> was successful.
如果试图删除被其它软件包依赖的软件包,pkgrm命令会提出警告,并让用户选择是否继续,如果继续软件包会被强制删除。如:
-bash-3.00# pkgrm SUNWapchr
The following package is currently installed:
SUNWapchr Apache Web Server (root)
(i386) 11.10.0,REV=2005.01.08.01.09
Do you want to remove this package? [y,n,?,q] y
## Removing installed package instance <SUNWapchr>
## Verifying package <SUNWapchr> dependencies in global zone
WARNING:
The <SUNWapchu> package depends on the package
currently being removed.
WARNING:
The <SUNWapchd> package depends on the package
currently being removed.
WARNING:
The <SUNWserweb> package depends on the package
currently being removed.
Dependency checking failed.
Do you want to continue with the removal of this package [y,n,?,q]
缓存软件包
缓存软件包即把常用的软件从光盘等其它介质拷贝到/var/spool/pkg目录下,使得安装更为方便快捷。缓存软件包用pkgadd命令的-s spool选项。比如把上述cvs-bundle.pkg缓存到/var/spool/pkg目录下可以使用以下命令:
-bash-3.00# pkgadd -d cvs-bundle.pkg -s spool all
Transferring <SMCcvs> package instance
Transferring <SMCgzip> package instance
-bash-3.00# ls -l /var/spool/pkg
total 4
drwxr-xr-x 3 root root 512 Feb 26 01:03 SMCcvs
drwxr-xr-x 3 root root 512 Feb 26 01:03 SMCgzip
删除缓存的软件包用pkgrm -s spool pkg_name,例如:
-bash-3.00# pkgrm -s spool SMCcvs
The following package is currently spooled:
SMCcvs cvs
(x86) 1.11.20
Do you want to remove this package? [y,n,?,q] y
Removing spooled package instance <SMCcvs>
-bash-3.00# ls -l /var/spool/pkg/
total 2
drwxr-xr-x 3 root root 512 Feb 26 01:03 SMCgzip
安装已经缓存了的软件包只需运行pkgadd pkg_name即可。
-bash-3.00# pkgadd SMCgzip
Processing package instance <SMCgzip> from </var/spool/pkg>
gzip(intel) 1.3.5
……
软件包格式转换
pkgtrans命令是软件包格式转换工具,它的用法是:
pkgtrans file_or_dir_path file_or_dir_path [package_name ...]
如果是将文件系统格式转换成数据流格式,第一个参数指定软件包所在的目录,第二个参数指定转换后数据流格式软件包存放文件名;如果是将数据流格式转换成文 件系统格式,第一个参数指定数据流格式软件包文件名,第二个参数指定转换后文件系统格式软件包存放目录。如果不指定要转换的软件包名称,pkgtrans 将会根据第一个参数中可选的软件包提示用户输入要转换的软件包名称。
以下命令将Solaris10安装光盘中的SUNWzoner和SUNWzoneu转换成数据流格式的软件包:
-bash-3.00# cd /cdrom/cdrom0/Solaris_10/Product/
-bash-3.00# pkgtrans . /export/home/justin/pkg/zone.pkg SUNWzoner SUNWzoneu
Transferring <SUNWzoner> package instance
Transferring <SUNWzoneu> package instance
-bash-3.00# file zone.pkg
zone.pkg: package datastream
-bash-3.00# head /export/home/justin/pkg/zone.pkg
# PaCkAgE DaTaStReAm
SUNWzoner 1 50
SUNWzoneu 1 450
# end of header
BASEDIR=/
CATEGORY=system
DESC=Solaris Zones Configuration Files
EMAIL=
HOTLINE=Please contact your local service provider
MAXINST=1000
以下命令将数据流格式的Apache2.2软件包转换成文件系统格式:
-bash-3.00# pkgtrans apache-2.2.0-sol10-x86-local . SMCapch22
Transferring <SMCapch22> package instance
-bash-3.00# ls -ld SMCapch22
drwxr-xr-x 3 root root 512 Feb 25 18:09 SMCapch22
-bash-3.00# ls -l SMCapch22/
total 356
-rw-r–r– 1 10 staff 186 Jan 1 16:39 pkginfo
-rw-r–r– 1 10 staff 171631 Jan 1 16:39 pkgmap
drwxr-xr-x 14 10 staff 512 Feb 25 18:09 reloc
相关资源:
命令手册 pkgadd(1M)、pkgask(1M)、pkgrm(1M)、pkgchk(1M)、pkginfo(1)、pkgtrans(1)Sample Text
拓展Solaris的使用率 SUN 投怀IBM
为了拓展Solaris的使用率,SUN让传家之宝Solaris开始支持对手阵营IBM的PowerPC?
乍看之下有点令人诧异,不过在今年的1/10,IBM Power.org的成员Genesi已经端出首款由OpenSolaris社群Blastware主动协助开发的PowerPC工作站,该款支持 Solaris的Power-based工作站并已开始在市面上销售。它们并把这个 PowerPC版本 OpenSolaris的计划称之为 Polaris。
虽然这个 Polaris计划并非由SUN提出,不过将Solaris放在PowerPC上执行也在SUN的计划之内。SUN全球总裁Jonathan Schwartz前(2004)年在自己的blog里就已经提过:「软件要达到真正的开放,不仅仅是释出开原码以供工程技术人员或者学术机构开发…更重要 的是,让不同平台的使用者都可以轻松、几乎无成本的享受到开放软件带来的便利。」「举例而言,SUN正在尝试让Solaris在IBM的PowerPC上 执行,SUN衷心期待IBM予以协助,」Schwartz点出了Solaris意欲支持PowerPC的计划。
事隔两年,SUN未再提及Solaris支持IBM Power的说法,SUN台湾区营销总监朱家昌接受采访时亦表示,「目前尚未看到Solaris『正式』支持IBM Power的计划,任何提及Solaris会支持IBM Power的说法都只能算是一种传言。即使能够在Power架构上执行Solaris,一定不能发挥所有的Solaris功能,」朱家昌说。
而且Solaris支持PowerPC的作法能否在市场上奏效仍是未定之天。IDC(国际数据信息)运算系统分析师古嘉元表示。「如果不是双方正式的携手合作,即表示可能缺乏完整的测试。对用户而言,势必还会观望Polaris的效能表现,」古嘉元说。
Solaris一向被SUN视为和Sparc芯片、JAVA语言同等重要的三项看家法宝。Solaris是使用率相当广的一种Unix衍生版本,在 1990年代末期网络泡沫时期大行其道,但后来随开原码操作系统Linux窜起而式微。同时,微软的Windows操作系统进驻x86架构的主流服务器, 也蚕食SUN的市占率。
为了要拓展Solaris的使用率,SUN在去年六月宣布Solaris进入开原码时代,把500多万行Solaris核心(kernel)的原始码张贴 在OpenSolaris网站上。并宣布以及Solaris 10的支持平台从原本只有SUN的Sparc,延伸至AMD Opteron与Intel的Xeon。同年11月,SUN又与IBM宣布达成协议,把SUNSolaris 10纳为IBM BladeCenter服务器系列搭配的操作系统选项之一。Solaris会与Windows、Linux (for x86与Power芯片)以及IBM的AIX版Unix并列为操作系统选项。
Sun拟打造linux生态系
升阳公司的雄心壮志愈来愈大。 这家伺服器与软体公司12月推出UltraSparc T1“Niagara”晶片架构的伺服器,是升阳力图重振声威和获利能力的一大利器。
在盛大推出硬体的同时,升阳也悄悄发布新的软体,意图让Linux与BSD Unix开放原始码作业系统成为Sparc电脑用户认真考虑采用的选择。升阳为推广这种技术搭配,正极力催生一个卫星软体业。
升阳在营造这种软体“生态系”方面颇有经验。例如,该公司现在正著手回头打造一种Solaris作业系统版本,以支援诸如超微(AMD)Opteron这类的X86处理器。然而,升阳要想在Linux和BSD方面如法炮制,势必面临更严峻的挑战。
Illuminata分析师Jonathan Eunice说:“以Sparc搭配Linux,是可能成为市场主流,但时机已过,至少是五年前的事了。现在,这项计画只会分散既有的开发资源。”
Linux和各种版本的BSD Unix,已可借助UltraLinux和Aurora Linux,在Sparc处理器平台上执行。但这些产品对大多数潜在客户来说,都不是主要的商用选项。目前市场上的两大Linux经销商,都已打退堂鼓- -Red Hat在2000年放弃支援Sparc的计画,而Novell在2002年推出最后一个Sparc版Suse作业系统。
然而,升阳的热忱不减。总裁Jonathan Schwartz最近透过电子邮件接受访问时表示:“我们推动Linux on Sparc是认真的。我亲自和Linux社群的领导者晤谈。BSD也一样。”
升阳希望藉此计画甩掉专属技术公司的形象,进而重振业界地位和获利能力。1990年代,升阳以专属技术著称,但却让这家伺服器大厂在两股横扫伺服器市 场的新兴成长趋势当中错失良机:内建x86处理器(如AMD的Opteron和英特尔的Xeon)的伺服器蔚为风潮,以及开放原始码的Linux作业系统 崛起。
如今,升阳策略180度大转弯,希望藉开原码版Solaris和UltraSparc计画东山再起。
升阳Sparc伺服器事业群执行副总裁David Yen说:“要成功,Solaris必须跨出Sparc的范畴。”他表示,升阳希望让这系列的晶片成为“新的业界标准”。
“艰钜的任务”
要让“Linux/BSD on Sparc”成为用户主要的选择,升阳必须获得外部开原码程式设计师的支持。更大的挑战,是必须说服甲骨文(Oracle)等主要软体公司相信,的确有够大的市场,才能促使这些软体商认为值得砸钱投资支援这种作业系统与晶片的组合。
以某晶片-作业系统组合为核心打造全新的软体生态系有多困难?问蓝色巨人IBM便知。IBM曾聘请数十位程式设计师,著手让Linux支援Power处理器平台,而这项计画也自IBM软体事业群调派人手支援。
IBM自称“Linux on Power”计画很成功,因为推动多年来,已吸引一些客户,并与几家大型软体公司建立伙伴关系。然而,IBM不讳言,过程中的确困难重重。
IBM pSeries Unix系统部副总裁Karl Freund说:“如果软体公司可获得额外的生意,而且客户真的觉得有些麻烦是这项解决方案可以解决的话,那么建立这种生态系就会水到渠成。但是,假如市 场没有这个需求,每年就可能耗费大约5,000万美元到1亿美元。”
升阳的另一个对手惠普公司更持怀疑态度。惠普也曾有自创生态系的经验,例如当年为了协助推广盟友英特尔的Itanium系列晶片,和升阳的Sparc竞争,惠普大手笔资助这项费时五年、耗资100亿美元的计画。
惠普商业关键伺服器事业群行销副总裁Don Jenkins说:“他们(升阳)起步太迟,没有特别的价格/效能比优势,也欠缺驱使Linux市场朝那个方向迈进的理由。依我之见,这是个极为艰钜的任务。”
升阳计划在现有的Solaris-x86计画之外,再营造两个新的软体生态系,所需的投资甚钜,但Schwartz表示他不担心。他说,升阳的Niagara晶片会说服使用者转换。
被问到升阳有没有足够的精力和资源能建立支援Sparc的Linux与BSD生态系时,Jenkins答:“这是旧思维。今天,在营造生态系方面,开 原码社群的力量比软体公司还强大。所以,升阳是不是领袖或支持者,无关紧要。问题在于:‘客户有没有兴趣?’。基于Niagara在执行网路应用的价格/ 效益比是Xeon的五倍,形形色色的客户是有兴趣换掉现行的Linux-Xeon组合,转用Linux-或BSD-Niagara组合。”
潜在伙伴反应冷淡
目前Linux商业化的掌门人是Red Hat和Novell。但升阳尚未说服这两家公司相信Sparc的优点多多。
Red Hat发表声明说:“本公司目前没有让Red Hat Enterprise Linux或Fedora支援 Niagara的计画。”
Novell的反应也一样平淡:“我们现阶段没有让Suse Linux支援Sparc的计画。因为客户需求降低之故,在7.3版之后,我们就已停止打造支援SPARC平台的Suse Linux。”
Schwartz也对合作关系采取务实的看法。他说:“Novell和Red Hat在商言商–升阳有责任让支援Niagara成为商机诱人,令人难以抗拒的提案。”但他透露,其他Linux发布者的兴趣更浓:升阳与Debian 和CentOS社群的协商“更有进展”。
身为升阳最重要的软体合作伙伴,甲骨文公司表示,不排除支援升阳的计画,但前提是必须有市场需求。
甲骨文公司说:“本公司持续提供支援各种作业系统版本的产品,包括Linux版、Windows版和各种Unix版。我们支不支援现有和全新的作业环境,端视客户有无需求而定。”
在市场上播种
升阳不打算独力开发这些作业系统,而是试图在市场上播种。升阳Sparc伺服器事业群技术长Mike Splain说,升阳主动提供硬体给Linux on Sparc计画的领袖David Miller等人。
Splain说:“我们正进一步打进Linux社群。就BSD而言,我们还在摸索。”lain said.
他认为,Niagara应该具有强大的吸引力,因为这款晶片拥有八个处理引擎(或称“核心”),每个都能同时执行四串指令程序(或称“执行绪”)。所 以,Niagara总计能应付32条执行绪,远远超过目前其他处理器最多所能负荷的四条执行绪。不过,其他晶片设计公司也朝扩大执行绪数目的目标迈进。
Splain说:“我们相信,Linux社群若搭上Niagara式的运算列车,势必会受益。无疑地,全世界其他处理器的发展蓝图都朝采用多重核心、多重执行绪架构的方向推进。如果他们能支援Niagara,长期而言,对他们的业绩有益。”
不过,不用猜也知道升阳偏好那一款作业系统。Splain说,Linux on Sparc计画的一大目标,是让客户“了解Niagara的优点,然后慢慢从Linux系统转换到Solaris系统。”
但他指出,Linux与UltraSparc T1的搭配也很理想。这款处理器广泛用于较低阶的伺服器,用来处理网际网路与全球资讯网日常的琐碎任务,这正是升阳新款 T1000与T2000型伺服器瞄准的市场。他说,这项差异,让升阳的计画与IBM的Linux on Power有所区隔。
他说:“我认为,T1可说是比Power容量更大的处理器。我预期,本公司在Linux市场的渗透率会更高,普及速度也会更快。”
Splain说,若有人怀疑,不妨检视升阳过去的纪录。他说:“Solaris x64就是最好的证明。”
Sun和Oracle的合作关系再延长10年
Sun Microsystems和Oracle两家公司刚刚重申了其联盟关系,它们将继续在研发、销售和市场等领域展开合作。
Sun公司CEO Scott McNealy在Oracle总部举办的一次活动中说:“我们希望让各自的员工都清楚我们两家公司合作和相互渗透的关系,我们将携手面对一些相当艰难的市场竞争。”
Sun和Oracle的伙伴关系可以追溯到20年前,Oracle也由此成为Sun平台的第一大数据库供应商,而Sun Microsystems也声称运行Oracle数据库最多的也是Sun的硬件平台。
作为合作伙伴继续延伸的一部分,Oracle得到了Sun Java编程语言接下来十年的许可。而Sun则表示计划销售预装Oracle数据库的硬件产品,购买该系统的用户可以免费使用数据库一年,并可享受技术支持。
评:
业界最高端的合作,Sun的Solaris、 JAVA + Oracle的应用,岂是“强”一个字形容的了得?
长久的伙伴关系,20年来如一日的相濡以沫,岂是“铁”一个字形容的了得?
对于业界的影响就是营造了一种"要上oracle必上solaris!用了Solaris准备oracle!"的大氛围,双赢是必然的。
安装Solaris10失败
常听别人说Nforece的主板跟开源系统总归有点摩擦,他们不愿意公开驱动程序代码。今天被我见识了。
机器配置:AMD3000+ nforce400 + ATI 9700 pro + 2 wdSATA200GRAID 0
软件版本:Solaris 10 For X86
开始安装的时候一切正常,正常的拷贝,正常的设置主机名、密码等等。使我有了想要反驳这个理论的想法,安装结束后重新启动发现Boot manger也配置正常了,启动Solaris似乎也正常,然而就当load kernel结束时,满屏幕的warning !大意是找不到磁盘之类的报错。换成RAID1还是不行,拆掉Raid0单硬盘重装问题仍旧,没有ATA的磁盘,没有测试。
难怪Sun自己的AMD64服务器从来不用nforce芯片组的板子。
最后强烈要求Nvidia开放自己的驱动程序源代码!
GNU / OpenSolaris = Nexenta OS ?!
发现了一个开源项目,似乎要在OpenSolaris的基础上开发一个“debian like"的操作系统,蛮有趣的,现在关注中: http://www.gnusolaris.org/gswiki
该系统遵循CDDL协议,而并非GNU,不太清楚协议的内容。看来SUN开源之后立刻就有人做出响应了。该网站现已张贴有运行gnome桌面的截图。
SOLARIS操作系统常用命令
1、man <要查的命令名字> 4
2、ls 相当于DOS的dir 4
3、clear 相当于DOS的cls,清除屏幕上的内容 5
4、mkdir <目录名> 相当于DOS的md,新建一个目录 5
5、cd <目录名> 5
6、rm <文件名> 5
7、cp <源文件> <目的文件> 5
8、mv <源文件> <目的文件> 6
9、pwd 列出当前所在的目录位置 6
10、more <文件名> 查看文件的内容 6
11、chmod 改变文件或目录的读、写、执行的允许权限 7
12、chown 改变文件或目录的所有权 7
13、chgrp 改变文件或目录的工作组所有权 8
14、date 相当于DOS的date 8
15、su <用户名> 9
16、passwd 更改用户口令 9
17、exit 退出终端操作 9
18、shutdown 超级用户root才有权执行,关闭Solaris操作系统 9
19、find 搜索指定目录下要找的文件,找到后给出文件的路径 9
20、vi 10
21、echo 显示环境变量用 20
22、ping 测试网络通断情况。 20
23、ftp 本地工作站与远端工作站之间文件传输 21
24、telnet ip_address 远程登录命令,在工作站和PC机中都有 22
25、ps 查看系统的进程 22
26、kill 杀掉操作系统中的进程 23
27、tar 把多个文件或目录打包成一个文件,或者把已经打包的文件展开 23
28、compress 把文件压缩成后缀为.Z的压缩文件 23
29、uncompress 把后缀为.Z的压缩文件解压缩 23
30、df -k 查看各文件系统剩余的空间,-k说明单位是千字节(kb) 23
SOLARIS操作系统常用命令
SOLARIS操作系统中区分大小写字母,要注意输入系统的字符的大小写是正确的.在图形界面的CDE环境下,用鼠标的左键可以选定终端中的一个单词或一行字符,用鼠标的中键可以把选定的内容复制到光标当前的位置,十分方便.
1、man <要查的命令名字>
给出要查命令所有选项的含义,以及命令的详细说明.
2、ls 相当于DOS的dir
它的常用选项有-l(显示文件的详细信息),-a(显示包括隐含文件在内),-R(recursive,显示子目录中所有的文件和子目录),-t(依照文件最后修改时间的顺序列出文件名).例如:ls 列出目前目录下的文件名。
ls -a 列出包含以.起始的隐藏文件在内的所有文件名。
ls -t 依照文件最后修改时间的顺序,依序列出文件名。
ls -l 列出目录下所有文件的许可权、拥有者、文件大小、修改时间及名称。
ls -R 显示出目录下,以及其所有子目录的文件名。
内容很多一屏显示不完时,可用管道符连接more命令,每显示一屏暂停,按空格键继续.如: ls -altR | more
注意:
ls rms*.* 将列出rms.ini这类中间带"."的文件,而不会列出rms这类不带"."的文件,用ls rms* 可以把带"."和不带"."的文件都列出
3、clear 相当于DOS的cls,清除屏幕上的内容
4、mkdir <目录名> 相当于DOS的md,新建一个目录
5、cd <目录名>
相当于DOS的cd,和DOS的cd不一样的是,只输入cd将回到HOME目录.
6、rm <文件名>
相当于DOS的del,支持通配符*和?,例如rm file*, 为了不误删除想要的文件,在用通配符删除之前,先用ls file* 看看是否列出的文件都需要删除.要注意,用命令行删除的文件是无法恢复的,Unix操作系统因为多用户的原因,无法提供DOS下的undelete命令.如果在Solaris的CDE环境下,扔到垃圾箱里的文件是可以恢复的,因为扔到垃圾箱里的文件并没有被真正删除.
rm -r <目录名>
相当于DOS的deltree,小心使用.例如:rm file1 删除文件名为 file1 的文件。
rm file? 删除文件名中有五个字符,前四个字符为file 的所有文件。
rm f* 删除文件名中以 f 开头的所有文件。
7、cp <源文件> <目的文件>
相当于DOS的copy,和DOS的copy不一样的是,必须指定源文件名和目的文件名.cp -r <源文件> <目的文件> 相当于DOS的xcopy,带子目录的拷贝.例如:cp file1 file2 将文件 file1 复制成 file2
cp file1 dir1 将文件 file1 复制到目录 dir1 下,文件名仍为 file1.
cp /tmp/file1 . 将目录 /tmp 下的文件 file1 复制到当前目录下,文件名仍为 file1。
cp /tmp/file1 file2 将目录 /tmp 下的文件 file1 复制到现行目录下,文件名为 file2
cp -r dir1 dir2 复制整个目录。若目录 dir2 已经存在,则将目录 dir1,及其所有文件和子目录,复制到目录 dir2 下,新目录名称为 dir1,即dir2/dir1。若目录 dir2 不存在,则将dir1,及其所有文件和子目录,复制为目录 dir2。
8、mv <源文件> <目的文件>
相当于DOS的move,常用来给文件换名.例如:mv file1 file2 将文件 file1,更改文件名为 file2。
mv file1 dir1 将文件 file1,移到目录 dir1 下,文件名仍为 file1。
mv dir1 dir2 若目录 dir2 已经存在,则将目录 dir1,及其所有文件和子目录,移到目录 dir2 下,新目录名称为 dir1,即dir2/dir1。若目录 dir2 不存在,则将dir1更改为目录 dir2。
9、pwd 列出当前所在的目录位置
10、more <文件名> 查看文件的内容
显示满一屏就暂停,按空格键翻到下一页,按回车键看下一行。其它命令的输出太多来不及细看时,常通过管道操作符"|"输出到more来分屏显示输出内容。
例如:
more file1 以分页方式,查看文件名 file1 的内容。
ls -l | more 把ls -l的输出通过管道符输出到more来分屏显示输出内容。
11、chmod 改变文件或目录的读、写、执行的允许权限
格式:chmod [-R] mode name
name 可为文件名或目录名;mode可为 3 个 0-7 的数字,或利用ls -l 命令,列出
文件或目录的读、写、执行允许权的文字缩写。)
mode : rwx rwx rwx r:read w:write x:execute
user group other
缩写 : (u) (g) (o)
例如:
%chmod 755 dir1 把目录dir1设定成任何使用者,都能读取和执行,但只有所有者可做修改。
%chmod 700 file1 把文件file1设定只有所有者可以读、写和执行。
%chmod u+x file2 把文件file2增加所有者可以执行的权利。
%chmod g+x file3 把文件file3增加工作组使用者可执行的权利。
%chmod o-r file4 把文件file4除去其它使用者可读取的权利。
12、chown 改变文件或目录的所有权
格式:chown [-R] username name
name 可以是文件名或目录名。
例如:
%chown user file1
将文件 file1 的所有权,改为使用者 user 所有。
%chown -R user dir1
将目录 dir1,及其下所有文件和子目录的所有权,改为使用者 user 所有。
13、chgrp 改变文件或目录的工作组所有权
格式:chgrp [-R] groupname name
name 可为文件名或目录名
例如:
%chgrp sbsrms file1
将文件 file1 的工作组所有权,改为 sbsrms 工作组。
%chgrp -R bin dir1
将目录dir1,及其下所有文件和子目录,改为 bin 工作组。
14、date 相当于DOS的date
只输入date就显示当前的工作站时间,如果有root超级用户权限,加上参数可以修改 工作站的时间。
格式:date mmddHHMM[cc]yy
mm–月份,dd–日期,HH–小时,MM–分钟,cc–世纪(可选),yy–年份
例如:
#date 1023153098 将把工作站系统时间改为1998年10月23日15点30分
15、su <用户名>
改变自己的用户名进入其他使用者的帐号,拥有其使用权利。不指明用户名,就进入root超级用户。
例如:
%su user 进入使用者 user 的帐号
passwrod: 输入使用者 user 的密码
16、passwd 更改用户口令
例如:
%passwd rms 更改用户rms的口令
17、exit 退出终端操作
18、shutdown 超级用户root才有权执行,关闭Solaris操作系统
例如:
#/usr/sbin/shutdown -y -g0 -i0 输入绝对路径,以保证是执行关闭系统的shutdown程序
19、find 搜索指定目录下要找的文件,找到后给出文件的路径
格式:find search-path -name filename -print
例如:
%find / -name file1 -print ( 从根目录开始寻找 file1文件,并给出它的路径。)
20、vi
vi是在工作站上广泛使用的编辑软件。对初学者而言,
常因其特殊的使用方法,而不得其门而入;对已经在使用 vi 的使用者来说,也
常见因对 vi 的不熟悉或不够了解,而无法发挥出 vi 强大的编辑能力,以下将
简单介绍 vi 的使用方法。不必死记硬背,多实际操作几次就能记住常用的命令。
进入vi
直接执行 vi编辑程序即可:
%vi test
此刻屏幕上会出现 vi 的编辑屏幕,同时 vi 会将文件复制一份至内存中的缓冲区 (buffer) 。 vi会保留在硬盘中的文件不变,而先对缓冲区的文件作编辑,编辑完成后,使用者可决定是否要取代原来旧有的文件。
离开vi
若在输入模式下,则先利用《ESC》进入指令模式,而后即可选用下列指令
离开vi。
:q! 离开vi,并放弃刚在缓冲区内编辑的内容。
:wq 将缓冲区内的资料写入硬盘中,并离开vi。
:ZZ 同wq。
:x 同wq。
:w 将缓冲区内的资料写入硬盘中,但并不离开vi。
:q 离开vi,若文件被修改过,则会被要求确认是否放弃修改的内容。
此指令可与:w 配合使用。
vi 的操作模式
vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)
。当使用者进入 vi 后,即处在指令模式下,此刻键入的任何字符都被视为
指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入输入
模式。
输入模式
如何进入输入模式
a (append) 由光标之后加入资料。
A 由该行之末加入资料。
i (insert) 由光标之前加入资料。
I 由该行之首加入资料。
o (open) 新增一行于该行之下以供输入资料。
O 新增一行于该行之上以供输入资料。
如何离开输入模式
《ESC》 结束输入模式。
指令模式
光标的移动
h 向左移一个字符。
j 向上移一个字符。
k 向下移一个字符。
l 向右移一个字符。
0 移至该行之首
$ 移至该行之末。
^ 移至该行的第一个字符处。
H 移至屏幕的第一列。
M 移至屏幕的中间那列。
L 移至屏幕的最后一列。
G 移至该文件的最后一列。
+ 移至下一列的第一个字符处。
- 移至上一列的第一个字符处。
( 移至该句之首。 (注一)
) 移至该句之末。
{ 移至该段落之首。 (注二)
} 移至该段落之末。
nG 移至该文件的第 n 列。
n+ 移至光标所在位置之后的第 n 列。
n- 移至光标所在位置之前的第 n 列。
<Ctrl><g> 会显示该行的行号、文件名称、文件中最末行的行号、光标
所在行号占总行号的百分比。
注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔开的文字。
屏幕的移动
<Ctrl><f> 屏幕往下卷一页。
<Ctrl> 屏幕往上卷一页。
<Ctrl><d> 屏幕往下卷半页。
<Ctrl> 屏幕往上卷半页。
<Ctrl><e> 屏幕往下卷一行。
<Ctrl><y> 屏幕往上卷一行。
删除、复制及修改指令介绍 (此单元较少使用)
d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
Operator + Scope = command
(运算子) (范围)
运算子:
d 删除指令。删除资料,但会将删除资料复制到内存缓冲区。
y 将资料(字组、行列、句子或段落)复制到缓冲区。
p 放置(put)指令,与 d 和 y 配和使用。可将最后delete或yank的资
料放置于光标所在位置的行列下。
c 修改(change)指令,类似delete与insert的组合。删除一个词组、句
子等的资料,并插入新输入的资料。
范围:
e 由光标所在位置至该字符串的最后一个字符。
w 由光标所在位置至下一个字符串的第一个字符。
b 由光标所在位置至前一个字符串的第一个字符。
$ 由光标所在位置至该行的最后一个字符。
0 由光标所在位置至该行的第一个字符。
) 由光标所在位置至下一个句子的第一个字符。
( 由光标所在位置至该句子的第一个字符。
{ 由光标所在位置至该段落的最后一个字符。
} 由光标所在位置至该段落的第一个字符。
整行动作
dd 删除整行。
D 以行为单位,删除光标后的所有字符。
cc 修改整行的内容。
yy yank整行,使光标所在该行复制到内存缓冲区。
删除与修改
x 删除光标所在该字符。
X 删除光标所在之前一字符。
dd 删除光标所在该行。
r 用接于此指令之后的字符取代(replace)光标所在字符。
如: ra 将光标所在字符以 a 取代之。
R 进入取代状态,直到《ESC》为止。
s 删除光标所在的字符,并进入输入模式直到《ESC》。
S 删除光标所在的该行资料,并进入输入模式直到《ESC》。
移动与复制
利用 delete 及 put 指令可完成资料移动的目的。
利用 yank 及 put 指令可完成资料复制的目的。
yank 和 delete 可将指定的资料复制到内存缓冲区,而通过 put 指令
可将缓冲区内的资料复制到屏幕上。
例:
移动一行 .在该行执行 dd
.光标移至目的地
.执行 p
复制一行 .在该行执行 yy
.光标移至目的地
.执行 p
指令重复
在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
次。
例:
删除10行 .10dd
复制10行 .10yy
.光标移至目的地
.p
指标往下移10行 .10j
取消前一动作(Undo)
即复原执行上一指令前的内容。
u 恢复最后一个指令之前的结果。
U 恢复光标该行的所有改变。
查找
在vi中可查找某一字符串,使光标移至该处。
/字符串 往光标之后寻找该字符串。
?字符串 往光标之前寻找该字符串。
n 往下继续寻找下一个相同的字符串。
N 往上继续寻找下一个相同的字符串。
资料的连接
J 句子的连接。将光标所在的下一行连接至光标该行的后面。
若某行资料太长亦可将其分成两行,只要将光标移至分开点,进入输入模式
(可利用 a、i等指令)再按《Enter》即可。
环境的设定
:set nu 设定资料的行号。
:set nonu 取消行号设定。
:set ai 自动内缩。
:set noai 取消自动内缩。
自动内缩(automatic indentation)
在编辑文件或程序时,有时会遇到需要内缩的状况,『:set ai』即提供自
动内缩的功能,用下例解释:
.vi test
.(进入编辑屏幕后)
this is the test for auto indent
《Tab》start indent ← :set ai (设自动内缩)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自动内缩)
the end of auto indent.
.注:<Ctrl><d> 可删除《Tab》字符。
ex指令
读写资料
:w 将缓冲区的资料写入硬盘中。
:10,20w test 将第10行至第20行的资料写入test文件。
:10,20w>>test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。
删除、复制及移动
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料移动至第30行之后。
字符串搜寻与取代
s(substitute)指令可查找某行列范围。
g(global)指令则可查找整个编辑缓冲区的资料。
s指令以第一个满足该条件的字符串为其取代的对象,若该行有数个满足该条
件的字符串,也仅能取代第一个,若想取代所有的字符串则需加上g参数。
:1, $s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。
恢复编辑时被中断的文件
在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未
被写回硬盘时,当再次回到系统,执行下列指令即可回复中断前
的文件内容。
%vi -r filename
编辑多个文件
vi还提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
当第一个文件编辑完成后,可利用『:w』将该缓冲区存档,而后
再利用 『:n』载入下一个文件。
21、echo 显示环境变量用
例如:
%echo $RMSROOT 显示环境变量RMSROOT的值
22、ping 测试网络通断情况。
格式:ping ip_address
例如:ping 129.9.123.45
23、ftp 本地工作站与远端工作站之间文件传输
必须拥有远端工作站的帐号及密码,才可进行传输工作 。
格式: ftp hostname or ftp ip_address
例如 :
ftp 129.9.123.45 与远端工作站 129.9.123.45 ,进行文件传输
Name (129.9.123.45:user-name) : 输入帐号
Password (129.9.123.45:user-name): 输入密码
!为执行外部操作系统的命令。
ftp> help 列出 ftp 文件传输,可使用的任何命令。
ftp> !ls 列出本地工作站,目前目录下的所有文件名。
ftp> !pwd 列出本地工作站,目前所在的工作目录位置。
ftp> ls 列出远端工作站目前目录下的所有文件名。
ftp> dir 列出远端工作站目前目录下的所有文件名(略同于 UNIX 的 ls -l 指令).
ftp> pwd 列出远端工作站目前所在的目录位置。
ftp> cd dir1 更改远端工作站的工作目录位置至 dir1 下。
ftp> get file1 将远端工作站的文件 file1 ,拷贝到本地工作站中。
ftp> put file2 将本地工作站的文件 file2 ,拷贝到远端工作站中。
ftp> mget *.c 将远端工作站中,文件名后缀为 c 的所有文件,拷贝到本地工作站中。
ftp> mput *.txt 将本地工作站中,文件名后缀为 txt 的所有文件,拷贝到远端工作站中。
ftp> bin 以二进制方式传输文件,切记在传送可执行文件时要先执行此命令。
可以将ASCII文件按二进制方式传输,但决不能将二进制文件按ASCII方式传输,否则二进制文件的内容会遭到破坏而无法使用。
ftp> asc 以ASCII方式传输文件,只在传输ASCII文件时用,特别是在DOS和Solaris之间传输时用。
ftp> prompt 使用 mput/mget 时不用每个文件皆询问yes/no
ftp> quit 结束 ftp 工作。
ftp> bye 结束 ftp 工作,和quit一样。
注: 从PC到工作站间的文件传输也可在 PC端WIN95下的 FTP命令进行文件传输,用法与
上所述大致相同。
24、telnet ip_address 远程登录命令,在工作站和PC机中都有
例如:
%telnet 129.9.123.45
25、ps 查看系统的进程
格式:ps [-euf...]
例如:
%ps -u rms (查看系统中,用户rms的 process。)
%ps -ef (查看系统中,包含系统内部,及所有用户的进程。)
26、kill 杀掉操作系统中的进程
一般先用ps命令先查看进程的ID号,再用kill。如果kill杀不掉,可再加参数-9,说明为强制杀掉。
例如:
%kill -9 1234 这里1234是假设的进程号。
27、tar 把多个文件或目录打包成一个文件,或者把已经打包的文件展开
例如:
%tar cvf RMS RMStar 把目录打包成一个文件
%tar xvf RMStar 把打包的文件展开。
28、compress 把文件压缩成后缀为.Z的压缩文件
例如:
%compress RMStar
29、uncompress 把后缀为.Z的压缩文件解压缩
例如:
%uncompress RMStar.Z
30、df -k 查看各文件系统剩余的空间,-k说明单位是千字节(kb)
Solaris中的酷命令
Solaris 中的命令非常之多,以致很难从中分离出那些很酷的命令。例如,有些命令报告程序进行每个系统调用时所要花费的时间,有些命令动态地显示系统活动信息,而且 这些命令大部分都同时包含在了 Solaris 8 和 Solaris 9 中。这里,我将重点介绍其中一些命令,您或许会发现它们特别有用。
系统管理员是工具的使用者。通过实践经验,我们掌握了更多工具,并且增强了诊断问题以及实施解决方案的能 力。本次专栏中包含的命令是通过经验、朋友、熟人以及出席 9 月举行的 SunNetwork 2002 大会收集到的。Solaris 内核的开发人员 Brian Cantrill 和 Mike Shapiro 所讲的"The /procodile Hunter"让人很有启发并令人感到惊恐,因为 Cantrill 编写代码来说明一个观点的速度比 Shapiro 能够讲解该观点的速度还要快!
有用的 Solaris 命令
truss -c (Solaris >= 8):这是个令人震惊的 truss 选项,它提供了被追踪命令的全面概要信息:
$ truss -c grep asdf work.docsyscall seconds calls errors_exit .00 1read .01 24open .00 8 4close .00 5brk .00 15stat .00 1fstat .00 4execve .00 1mmap .00 10munmap .01 3memcntl .00 2llseek .00 1open64 .00 1 ---- --- ---sys totals: .02 76 4usr time: .00elapsed: .05
它还能显示正在运行的进程的概要数据。在本例中,数据表明了从启动 truss 命令到用 control-c 来终止 truss 执行的期间,进程到底做了些什么。这对于判断进程为何被挂起是很理想的,因为您无须费力浏览整个 truss 的输出。
truss -d 和 truss -D (Solaris >= 8):这两个选项表明与truss显示的每个系统调用相关的时间信息。这对于找出定制代码或商业代码中的问题很有帮助。例如:
$ truss -d whoBase time stamp: 1035385727.3460 [ Wed Oct 23 11:08:47 EDT 2002 ] 0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64) argc = 1 0.0032 stat("/usr/bin/who", 0xFFBEFA98) = 0 0.0037 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT 0.0042 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENT 0.0047 open("/usr/lib/libc.so.1", O_RDONLY) = 3 0.0051 fstat(3, 0xFFBEF42C) = 0. . .truss -D 对于显示系统调用间的延迟时间更加有用:
Dilbert> truss -D who 0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64) argc = 1 0.0028 stat("/usr/bin/who", 0xFFBEFA98) = 0 0.0005 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT 0.0006 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENT 0.0005 open("/usr/lib/libc.so.1", O_RDONLY) = 3 0.0004 fstat(3, 0xFFBEF42C) = 0
这个例子中,stat 这个系统调用要比其他系统调用占用更长的时间。
truss -T:这是个很棒的调式帮助选项。在执行指定的系统调用时,它可以终止进程("-U"也执行同样的操作,不过是在进行用户级的函数调用时)。此时,将会获取用于进一步分析的 core 文件,或者使用一些 /proc 工具来确定进程各个方面的状态。
truss -l(在 Solaris 9 中已改进):显示多线程进程中每个调用的线程号。Solaris 9 中的 truss -l 经过了改进,最后还可以监视多线程的应用程序的执行。
Truss 的确是个功能强大的工具。例如,可在 core 文件中用于分析问题产生的原因。还可以通过"-u"选项来显示用户级的库(既可以为系统库,也可为程序员库)调用的详细信息。
pkg-ge:这是个用于自动获取免费软件包的好工具(http: //www.bolthole.com/solaris)。它通过 /etc/pkg-get.conf 来配置。一旦配置好并运行后,就运行 pkg-get -a 来获取可用包的列表以及运行 pkg-get -I 来获取并安装给定的包。
Plimit (Solaris >= 8):这个命令用于显示并设置正在运行的进程中的每个进程的限制。如果一个长时间运行的进程超过了某个限制(如打开的文件数目),使用该命令就十分方便。 因为无须使用 limit 命令后重新运行该进程,plimit 就可以修改正在运行的进程。
coreadm (Solaris >= 8):在以前没有 coreadm 命令时,core dumps 被置于进程的工作目录下。并且 core 文件将会互相覆盖。而这个问题和其他更多问题都可以由 coreadm 来处理,它是一个管理 core 文件生成的工具。您可以通过该工具指定是否保存 core、core存储的位置和应保留的版本数目,等等。所有这些设置信息都是在重启前通过 coreadm 修改 /etc/coreadm.conf 来保存的。
pgrep (Solaris >= 8):pgrep 在 /proc 中搜索符合给定规则的进程,并返回进程的 ID。其中一个很棒的选项是"-n",它返回的是最新的满足条件的进程号。
preap (Solaris >= 9):除去僵尸进程。任何困于"z"状态(由 ps 命令显示)的进程,该命令都可将之从系统中清除。
pargs (Solaris >= 9):显示进程的参数及环境变量。
nohup -p (Solaris >= 9):nohup 命令可以用于启动一个进程,因此即使用于启动进程的 shell 被关闭(即进程获得"SIGHUP"信号),该进程仍然可以继续运行。这对于让一个后台任务不管碰到何种情况仍然可以继续运行是很有用的。但是如果您已经 启动了一个进程,但稍后希望使它免受 HUP 信号的影响,该怎么办呢?在Solaris 9中, nohup -p 可以获取进程 ID 并使之忽略 SIGHUP 信号。
prstat (Solaris >= 8):prstat 也是 top 命令,但拥有更多功能。这两个命令都可以提供一个屏幕的关于进程的有用信息以及其他的相关信息,并且能频繁地更新,总之是个很棒的显示系统性能的窗口。但 prstat 要比 top 更加精确。它还提供了一些很好的选项。"-a"可以同时显示进程与用户的信息(默认由 CPU hog 排序)。"-c"使其执行很像 vmstat(在前一个报告下面接着显示新的报告)。"-C"显示在处理器集中的进程。"-j"显示一个"工程"中的进程。"-L"显示每个线程和每个进 程的信息。"-m"和"-v"显示每个进程的很多详细的性能信息(包括 pages、traps、lock wait 和 CPU wait)。所有输出数据都可以按照在内存中设置的大小、虚拟内存大小、运行时间等等条件来排列。prstat 在没有 top 的系统中是个十分有用的工具,并且由于它的精确性,所以很可能取代 top(有些地方考虑到它是个被支持的程序而使用它)。
trapstat (Solaris >= 9):trapstat 以及 lockstat 和 kstat 是 Solaris 中最难以理解的命令。它们显示一个运行的操作系统内部中最具体的细节信息。每个命令对于解决 Solaris 系统中发生的古怪问题都是必不可少的。最好是将它们的输出随错误报告一起提交,但进一步的研究揭示,它们也能为一般应用提供有用信息。
vmstat -p (Solaris >= 8):在这个选项可以使用之前,要确定是哪种类型的内存命令导致系统页面调度几乎是不可能的(请查阅"se toolkit")。vmstat -p 可以解决此问题,因为它不但显示您的系统是否处于内存紧缺的情况(通过"sr"栏),而且还显示是否是由以下内容导致的:应用程序的代码,应用程序的数据 或 I/O 。"-p"能够真正帮助找出 Solaris 中导致神秘的内存问题的原因。
pmap -x (Solaris >= 8,Solaris >= 9中进行了错误修复):如果已经得知进程中有内存问题,并且需要获得更多内存使用的详细信息,就可以使用 pmap -x。该命令将解释指定 ID 的目标进程的整个内存映射信息,如下:
# pmap -x 17791779: -ksh Address Kbytes RSS Anon Locked Mode Mapped File00010000 192 192 - - r-x-- ksh00040000 8 8 8 - rwx-- ksh00042000 32 32 8 - rwx-- [ heap ]FF180000 680 664 - - r-x-- libc.so.1FF23A000 24 24 - - rwx-- libc.so.1FF240000 8 8 - - rwx-- libc.so.1FF280000 568 472 - - r-x-- libnsl.so.1FF31E000 32 32 - - rwx-- libnsl.so.1FF326000 32 24 - - rwx-- libnsl.so.1FF340000 16 16 - - r-x-- libc_psr.so.1FF350000 16 16 - - r-x-- libmp.so.2FF364000 8 8 - - rwx-- libmp.so.2FF380000 40 40 - - r-x-- libsocket.so.1FF39A000 8 8 - - rwx-- libsocket.so.1FF3A0000 8 8 - - r-x-- libdl.so.1FF3B0000 8 8 8 - rwx-- [ anon ]FF3C0000 152 152 - - r-x-- ld.so.1FF3F6000 8 8 8 - rwx-- ld.so.1FFBFE000 8 8 8 - rw--- [ stack ]-------- ------- ------- ------- -------total Kb 1848 1728 40 -
这里,我们可以看到每一块内存,它们被用于做什么,占用了多大的(虚拟的和真实的)空间以及其模式信息。
df -h (Solaris >= 9):这个命令在 Linux 上已经应用十分普遍,刚刚转移到了 Solaris 平台。df -h 以一种方便阅读的形式显示文件系统的概要信息:
$ df -hFilesystem size used avail capacity Mounted on/dev/dsk/c0t0d0s0 4.8G 1.7G 3.0G 37% //proc 0K 0K 0K 0% /procmnttab 0K 0K 0K 0% /etc/mnttabfd 0K 0K 0K 0% /dev/fdswap 848M 40K 848M 1% /var/runswap 849M 1.0M 848M 1% /tmp/dev/dsk/c0t0d0s7 13G 78K 13G 1% /export/home

近期评论