电脑技术学习

solaris基础和常用知识 (1)

dn001
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登录,如果想这样,修改此脚本,
将下面这一行注释掉即可
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
<net|host> name1 gateway name2 metric value <passive|active|external>
所有中间的很长的空均为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
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`

修改/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 <ip> [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
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
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
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
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
其次,生成新的文件系统,将其安装到一个临时目录(/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命令 ,启动系统。
二、软件安装
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。重启工作站,可以看到在
/dev下有fa0接口,而网卡的设备名为fatm0。
2、>adinfo fatm0 可查询设备硬件信息
>adconfig fatm0 可进行设备配置
>adstat fatm0 可查询设备状态
这三个命令较少用到。
3、接口ip地址配置
ifconfig fa0 <internet address> netmask <netmask> broadcast <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 控制网络服务,所以要自动启动
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?
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 ,远程直接安装。
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
$ <install software>


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
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[i]=(int *)malloc(sizeof(int)*32000);
printf("after new!");
//1.....
c=getc(stdin);
for(int i=0;i<100;i++)
free((void *)p[i]);
printf("after delete!");
//2......
c=getc(stdin);
return 0;
}
发现在 2 处系统的空闲内存块并没有增加,free调用到底有没有释放内存?
A: malloc 调用引起进程堆空间增长,但free调用不会导致该堆空间立即缩小,
系统只是简单记录这一变化,就继续运行程序,只有系统出现内存短缺时,
系统才收集这些内存块重新分配,这样实现是为了减少系统开销,提高效率.

46 Q: 请问在kstat的输出中,类似avenrun_15min这种内核动态参数有没有介绍材料?
A: 通常, kstat输出的是内核模块中的一些链表或数组,按照SUN公司的文档,这些
输出结果是自解释型的,根据他们的名字就可以猜到其含义.但实际上并不是这
样.这些链表中包含的结构是在<sys/>下的一些头文件中定义的,比如
kmem_cache模块的结构由kmem_impl.h定义,hme模块的结构由hme.h定义,等等.
翻看这些头文件,可以得到稍微详细一点的资料. 参数名字通常与某结构的成员
变量同名,头文件中由简单的注释指出其作用. 比如:hme模块输出中包含如下字
段:
brdcstrcv 1094670
我们就可以查hme.h,hme.h中有一个很大的结构:hme, 其中有:
uint32_t hme_brdcstrcv; /* # broadcast packets received */

标签: