维护: ultra
版本: 1.2
日期: 2002-04-27 21:47
If a problem is not completely understood, it is probably best to provide
no solution at all.
单纯的论文工作使人浅薄---------爱因斯坦
我常常回忆起《东京爱情故事》的一个片断。一天深夜里,莉香拨通了丸子的电话,
莉香在浇着花,她从窗口里望出去,深夜的东京,点缀着稀稀疏疏的灯火,在一刹那
间,一种孤独荒凉的感觉涌上我的心来。坦率地说,我并不认同莉香那种爱情观,我
觉得她有点让人受不了。但是这种都市里的孤独感,是我熟悉并且共鸣的,晚上一个
人呆在机房中,磁盘阵列的LCD就像22楼窗外的星星,闪闪发光。这里只不过是一些
solaris浅显易懂的问题而已,纯粹应用于非营利性质的教学
如果有什么问题,请联系[email protected]
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
所有中间的很长的空均为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
道你的网卡设备名.
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
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
$
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公司的文档,这些
输出结果是自解释型的,根据他们的名字就可以猜到其含义.但实际上并不是这
样.这些链表中包含的结构是在
kmem_cache模块的结构由kmem_impl.h定义,hme模块的结构由hme.h定义,等等.
翻看这些头文件,可以得到稍微详细一点的资料. 参数名字通常与某结构的成员
变量同名,头文件中由简单的注释指出其作用. 比如:hme模块输出中包含如下字
段:
brdcstrcv 1094670
我们就可以查hme.h,hme.h中有一个很大的结构:hme, 其中有:
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
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 可以使用.
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
#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: 请问用什么命令可以确定是否有磁带设备?多谢。
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
每次开机都需要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
}
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)
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
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目录,同时可以删除
用户口令登录即可.外检查/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.
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.
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.
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
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
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
#swap -a
Note: the
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 /.
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/solstice/em-products/network/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.
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,重启动即可。
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
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即可。
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
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`
command_item[$command_count]= get_max_CAPS
command_count=`expr $command_count + 1`
command_item[$command_count]= check_DataBase
command_count=`expr $command_count + 1`
command_item[$command_count]= check_netstate_SMP
command_count=`expr $command_count + 1`
command_item[$command_count]= check_work_dir
command_count=`expr $command_count + 1`
command_item[$command_count]= check_dir_OAM
command_count=`expr $command_count + 1`
command_item[$command_count]= check_dir_others
command_count=`expr $command_count + 1`
command_item[$command_count]= check_files_informix
command_count=`expr $command_count + 1`
command_item[$command_count]= check_crontab
command_count=`expr $command_count + 1`
出现的问题:
./scp.sh: command_item[0]: not found
./scp.sh: command_item[1]: not found
./scp.sh: command_item[2]=: not found
./scp.sh: command_item[3]=: not found
./scp.sh: command_item[4]=: not found
./scp.sh: command_item[5]=: not found
./scp.sh: command_item[6]=: not found
./scp.sh: command_item[7]=: not found
./scp.sh: command_item[8]=: not found
./scp.sh: command_item[9]=: not found
./scp.sh: command_item[10]=: not found
./scp.sh: command_item[11]=: not found
./scp.sh: bad substitution
请问这是否因为平台的问题引起的
A: I have looked up several documents about B Shell. There is no array
definition and usage in original B-shell. It seems like B-shell is
expended in HP platform. I think you should modify the source script to
make it pure B-shell and then can run in Solaris.
122 Q: 现在我们有一个特殊的需求,需要在编译时,指定一字节对齐(缺省好象是八
字节对齐的),请问我们使用哪一个编译选项能达到这个目的?
A: There are some differences between different c/c++ compiler in their
options. Actually, I don't know so much about the options used in
gcc, but I think you can get some documents from the web site
http://www.gnu.org. We have detailed document about Solaris C. If
you want these documents, you can contact me or get from
http://docs.sun.com, in which site you find workshop collection.
123 Q: 有如下几个问题请帮助解决:
1、solaris用户登录以后,总是弹出很多控制台窗口和浏览器窗口等,请问:
如何定制用户的登录界面和环境,让其登录后只弹出一个窗口。
2、请问如何再solaris上设置dns?
3、如果想再solaris上将固定ip方式改为自动获取ip的dhcp方式,需要修改哪
些文件?而如果将工作站设为dhcp服务器,又如何设置?最好是能发一份
solaris这方面的配置资料,谢谢
A: 1. 删掉不想要的窗口,选择 exit 退出桌面环境,系统提示是否保存当前桌
面,回答是。.
2. 手边刚好有一本教程,请参照进行配置.
dnsconfig
3. You can create a empty file dhcp.hme0 in /etc directory. If you
don't want to reboot your machine, run the command:
# ifconfig hme0 dhcp start
124 Q: 我们用一台Netra T1,操作系统为solaris7,运行一个应用程序。
用df -k /tmp查看swap空间,发现一些奇怪的现象:
应用程序启动时:
文件系统 千字节 用了 可用 容量 挂接在
swap 1158400 8 1156392 1% /tmp
运行1小时后:
文件系统 千字节 用了 可用 容量 挂接在
swap 1158392 8 1158384 1% /tmp
再过一段时间:
文件系统 千字节 用了 可用 容量 挂接在
swap 1158276 8 1158268 1% /tmp
再过一段时间:
文件系统 千字节 用了 可用 容量 挂接在
swap 1158392 8 1158384 1% /tmp
其中,1158400为swap的总空间大小,为什么总的swap空间会变化。如果swap不断减少
,总有一天会用完,该怎么办。带着疑惑向您请教
A: Actually, the sample data in your table look very healthy. Don't
trust so much about these statistics numbers. In fact, if the gloss
number of swap file system reduced not big, the system can run well.
If the number decrease much, it means a process use a lot of swap
space. If you kill the process, the number will increase some.
125 Q: 在WinNT中有任务管理器, 在Linux上面有top程序, 可以查看一个进程占用
的CPU时间,内存,当前运行的线程数等,但是在Solaris上面如何查询这些信
息呢?
A: There are two ways to see a process's cpu occuptation.
1. run the command in a terminal or console: #ps -elf
2. In cde interface, there is a graphic utility which you can find
in tool(or 工具) column
126 Q: 请问: 设置了一个普通用户,该用户设置有相应的$PATH环境变量,用su命令(不
是su -)切换到超级用户以后,原来的$PATH变量的值发生了改变,导致了应用有
些不正常,请问这如何解决?
A: 实际上,使用su命令切换到超级用户,环境变量$PATH只受文件
/etc/default/su中SUPATH条目的控制。现在,你可以参照此文件对SUPATH条
目进行修改即可满足你的要求。
127 Q: 如果采用“Cluster”机制进行双机热备,两台机器之间需要通过心跳线相连
,请问这些心跳线是如何连接的?也就是说,每台机器有两个网口做心跳侦听,
两台机器间的心跳网线是交叉直接相连,还是可以通过“Lanswitch”或“Hubor”间接相连?
A: 交叉568a-568b
128 Q: 我们的程序需要建立很多socket连接,但因为操作系统的限制,只能建立有限
的连接。如何修改系统参数,提高操作系统对文件描述符数量的限制。
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.
129 Q: ipcs命令有没有功能来删除一个共享内存
A: No, ipcs can only print some usage information about shared memory,
locks, and semaphores.
130 Q: 我们的程序需要建立很多socket连接,但因为操作系统的限制,只能建立有限
的连接。如何修改系统参数,提高操作系统对文件描述符数量的限制。
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.
131 Q: 请解释一下solaris 8有没有dynamic partition的概念.是否可以向windows一
样动态分区而不用format原来的文件系统,谢谢.
A: There is no dynamic partition in Solaris 8. Let's make the
conception "dynamic partition" clear first. "dynamic partition"
means to change a disk's partition without a new format,and all the
data in the former partitions are kept.Up to now, in Solaris system,
it impossible to change a disk's partition without formatting, and
the data should be lost when formatting. The dynamic configuration,
which means a disk adaptor can be loaded, or disconnected from
system without restarting the system. It is an alternative word of
"hot plug" for disk adaptor.
132 Q: 我机器装的是Solaris 8,为什么除了root用户外其他的用户都不能在本机登
录,口令没有问题,现象为进入界面一会儿后又回到登录状态,新增加的用户
也不能登录,谢谢!
A: I solve this problem by manually operating. After checking log files
and the system file system, I solve the problem. The following is my
conclusion.The cause is the system is not properly installed, more
presicely, the disk is not properly formatted. The problem is that
/c0t0d0s6 is used as /tmp. So, /tmp file system type is "ufs"
instead of "tmpfs". The difference between "ufs" and "tmpfs" is
"tmpfs" is automatically freed empty at booting, while "ufs" is not.
So, because some temperate files used by Xession are not deleted at
booting, the dtsession can not be launched properly. The way is
clearing all the /tmp files and rebooting.
133 Q: SUN MOTIF编程怎么改变中文字体的大小,请帮助提供咨询
A: In fact, Motif is a GUI programming standard which is wildly
supported by UNIX operating systems. The fonts in Motif programing
envrionment are standard named, which means, by the same name, you
can refernce the same font, in all UNIX system, no matter the system
is HP, AIX or Solaris. If you want to know something about Motif
programming, you can search for documnets about it, and you will get
hundreds of references or faqs no matter what search engine you use.
In my knowledge, in Motif, you can set the font, not the size of
the font. In Solaris, there are some utilities to find the fonts
install in the system. You can find the usage of these utilities in
Solaris Answerbook. The name of the reference book is "Font
Administration", in System Administration Collection. So, I
recommend you
1.to find some references of Motif programming, which are easy to
find in Internet.
2.to find the "Font Administration" book, in System Administration
Collection, this book will help you to find the fonts installed in
solaris environment.
134 Q: 我在一台netra1120上 安装了solaris7后,又安装了一个106541-09的patch,
patch安装不成功,系统进入ok状态,然后我键入以下命令重起:
ok reboot
系统就一直不断的重起,我希望重新从光盘安装系统都没有办法,此问题该如
何解决?
A: In this situation, you should reinstall you system. If you want to
install you system through cdrom, issue the following command under
ok prompt:
ok boot cdrom
135 Q: 如何在Solaris8 中配置ip地址,和设置路由
# ifconfig -a
hme0: flags=1000843
inet 10.76.175.102 netmask ff000000 broadcast 10.255.255.255
ether 8:0:20:c3:a9:b1
do as you said:
# ifconfig hme0 10.76.175.102 255.255.255.0
ifconfig: setifdstaddr: SIOCSLIFDSTADDR: hme0: Cannot assign requested address
# route add default 10.76.175.251
add net default: gateway 10.76.175.251: entry exists
# more defaultrouter
10.76.175.251
# more /etc/netmasks
10.76.0.0 255.255.254.0
# more nodename
VPNMServer1
# more hosts
10.76.175.102 VPNMServer1
in 7.0
ifconfig -a
hme0: flags=863
inet 10.76.165.155 netmask ffffff00 broadcast 10.76.165.255
ether 8:0:20:c3:a9:90
A:
The command to set ip address is:
#ifconfig hme0 10.76.175.102 netmask 255.255.255.0
from the output of adding default router, your router has been correctly
set.Add a file in you system:
/etc/hostname.hme0
in these file just add an entry, which is your host name. This name
have a correponding entry in /etc/hosts.
You have correctly set other files.
So every time, you reboot the system, the system's ip address and router
are correctly set.
136 Q: 我装SUN双机, volumn manager 2.6 , sun cluster 2.2补丁已打:
showrev -p|grep 107763
Patch: 107763-02 Obsoletes: Requires: 108520-01 Incompatibles: Packages: SUNWsc
在主机227和228上都已安装。但227 nafo test error
227:
Check nafo0... < 20 seconds
hme0 is active
remote address = 10.225.1.228
test hme1 wait...
Setting netmask of hme1 to 255.255.255.0
nafo0 test failed
A: 是运行PNMSET,提示的问题吧?这种问题,多数是网络不稳定造成。一般这条
命令可试多次,且最好在Cluster停下后运行(以减少网络的复杂性)。先定
位是软件问题还是硬件问题:找一个一般的HUB,把四根公网网线都接到HUB
(最好是没任何智能的Dumb Hub)上,看是否还有问题;如果还有问题,就是
软件问题,可能是你没有把补丁打全,请到SUN联合实验室的网站——
SUNLIBRARY上下载PATCH;如果没有问题,表明是硬件问题,可能是SWITCH不
稳定,以前有现象报告华为的2403 Switch出现过;Cisco的Switch应该没问题
。实际上,可以模拟测试过程:
1. 227
# ifconfig plumb hme1
# ifconfig hme1 inet ip1 ... (配置IP)
2. 228
# ifconfig plumb hme1
# ifconfig hme1 inet ip2 ...
3. 227
# ping ip2
4. 228
# ping ip1
Notes: ip1, ip2 应在同一子网。
137 Q: 上次由于停电,工作站突然关机,重新启动,在输入用户名和密码后,进不去,一
直停留在输入用户名的界面,按ctrl-d没有反应,请问如何解决?
A:是家目录中的 .dt/sessions 有问题, 删掉试一下.
138 Q: solaris中却省的共享内存为多少?即如果不再/etc/system下单独设置的话。
A:1M
139 Q: 在SOLARIS下,利用ct library进行SYBASE数据库编程,包含了头文件
ctpublic.h,编译时报告找不到sqlda.h文件(包含在ctpublic.h中),能否提供
一个sqlda.h 或有其它什么解决办法?
A:这个文件是一个基本文件,你机器上肯定已经有了,找出来,然后把它用 -L 选
项加上.
140 Q: 光驱放入光盘后,取不出盘,用eject命令是显示:”
/vol/dev/rdsk/c0t0d0/sybasecd:设备忙”的提示.我记得可以用命令将其
停掉,请问如何操作?
A:/etc/rc2.d/S92volmgt stop
/etc/rc2.d/S92volmgt start
141 Q: 我们现在制作安装包的时候,使用pkgmk生成的包一般上都是一个目录但是通过
一种方法生成的是一个.pkg文件的单独文件(猜想可能是使用了pkgtrans或其
它的程序)请问你知道如何生成.pkg文件我希望能够还原.pkg安装包成为一个
目录,请问可以吗?如果可以,该如何进行呢?
A: 可以用pkgtrans转换。
142 Q: 请问在SOLARIS2.6环境下用什么命令来监视内存的使用情况。例如HP是使用
top命令的,可是SOLARIS 2.6没有这个命令。
A: download it from sunfreeware.com
143 Q: 请问UNIX下的几种SHELL ksh,csh,sh有什么明显的区别?那一个最通用啊?
A: sh 是最古老也是最基本的shell,csh 是 Sun 公司 的 Bill Joy 发明的,由
于增加了history 等功能和类似 C 语言的脚本处理而大受欢迎,以上使用的
最多的两种shell,ksh 由于其强劲的编程能力而受到欢迎,也有较广泛的应
用
144 Q: Sun NetraT 1120,solaris 2.7提供的SNMP Agent特性,使能对哪些特性与服
务提供管理接口?
A: Solaris 内置的 snmp agent 称为 solstice enterprise agent(SEA),
Sun 的管理接口: Desktop management interface( DMI)。有专门的开发
包。
145 Q: 我写了一个多线程的程序,
在main()函数的初始部分调用了如下代码将子线程的信号处理屏蔽:
sigemptyset(&mySigset);
for(i=1;i<=36; i++)
{ //对子线程屏蔽所有信号
sigaddset(&mySigset, i);
}
pthread_sigmask(SIG_BLOCK, &mySigset, NULL);
//创建信号处理线程
if(pthread_create(&user_threadID, NULL, SigCatcher, NULL)==0)
信号处理线程专门负责接收信号,如下:
void *SigCatcher(void *pIn)
{
int signal,i;
sigset_t mySigset;
sigemptyset(&mySigset);
for(i=1;i<=36; i++)
{ //接收所有信号
sigaddset(&mySigset, i);
}
for( ; ; )
{
if(sigwait(&mySigset, &signal)==0)
{
SignalHandler(signal);
}
}
}
理论上此后创建的新的线程不应该接收到异步信号。但是在测试时发现,某个线程调
用select()系统调用时,仍会被信号中断。代码如下:
iRet = select (0, NULL, NULL, NULL, &rDelayTime);
if(iRet < 0 && errno == EINTR)
{ //本线程被异步信号中断
LogInfo(0, "%s:%d: 接收到信号,中断select等待 !/n",__FILE__,__LINE__);
perror("this is the error code!/n");
return FALSE;
}
导致程序中超时判断不准。查了好几天,未能查出是何原因造成此现象。请帮助分析
,什麽情况下该select()调用仍会被信号中断,如何确定是被什麽信号中断的,有无
方法屏蔽。
A: 调 sigwait 之前,应当调用 pthread_sigmask, 看下面这一段:
sigset_t s;
sigfillset(&s);
pthread_sigmask(SIG_BLOCK, &s, NULL); /* Take no interrupts */
sigemptyset (&s);
sigaddset (&s, SIGINT);
sigaddset (&s, SIGTSTP);
sigaddset (&s, SIGQUIT);
sigaddset (&s, SIGHUP);
/* User program waits for everything EXCEPT USR1 and ALRM */
while(1)
{err = sigwait(&s, &sig);
146 Q: 请问UltraSparc 芯片中寄存器是32位还是64位?
A:按照 SparcV9 体系规范,整数寄存器(r[1]。。。。。)是64位的,浮点寄
存器则有 32个 是 32位的,(f[01]。。。f[31]),其后的寄存器是64位的。
147 Q: 请问Solaris 如何唤醒同步对象?
A:对于互斥量和条件变量,内核的唤醒机制是: 将所有等待的线程都唤醒,(唤醒
的意思是:
1 释放同步对象,
2. 置线程为runnable并在就绪队列中排队. )
具体那个线程能首先得到处理器,由线程优先级决定,而线成优先级则由时
间片和线程创建时制定的调整策略控制)
148 Q: 为什么cpio命令后,出现以下提示信息?
%cpio -civt < /dev/rmt/0
end of medium on input.to continue,
type /device/file name when ready.
A: cpio 的 -i 选项处理的是标准输入, 所以一般这样用:
cat /file | cpio -icd。。。。。。。。。
或者 觉得这样不爽 ,也可以这样 : cpio -icdI /file
149 Q: 不知道asn.1在2.7下是否可以使用?我听说在2.7不能使用,在2.6和2.8下可
以用。
A: 现在采用DSET 实现 asn.1 ,这个软件一直没有2.7 和2.8的版本,因此,如
果是新的开发,建议使用其他厂商的软件,(也有自由软件可供使用)有些部
门已经在考虑用其他产品替换DSET
150 Q: Solaris的软件in.named来源于bind,请问,ISC开发的DNS软件Bind有版权吗?在
商业上有使用的限制吗?
A: 它的使用是免费的,即使是商用,修改代码的限制则不太清楚
151 Q: 请问如何让一个结构按一字节对齐?
A: 程序中这样写:
#pragma pack(1)
...
...
#pragma pack()
编译时这样:
cc -misalign............
152 Q: 在solaris中,有关中文的字体太少了(特别是小字体)例如宋体,仅仅有
14,16,18,22,26 这几种。再小一些的字体就没有了。
A:Solaris 下的字体确实不够丰富,好像网上可以下载到一些字体,如果是
TrueType 字体,就无所谓大小, 在 zh.GBK 这种locale下,字体更丰富一些.
153 Q: 我打开一个“终端”,用vi编辑,在插入模式后,在某个时间,系统会将一些
系统反馈信息插入到当前正在编辑的文本中。
A:vi 中出现一些输出,是因为这个终端有一些后台进程正在执行,将输出显示到
了当前终端,用 Ctrl+L 就恢复正常.
154 Q: 在sun工作站上怎么用alias,比如怎么把dir等同于ls?
A:.cshrc
alias dir 'ls -lF'
155 Q: 请问如何将主线程(main()函数调用)的属性设PTHREAD_SCOPE_SYSTEM?(绑
定线程)我在帮助中找不到对应的API,请指教,谢谢!
A: 不可以.
156 Q: 请问线程的缺省堆栈有多大?能否扩大?
A: 主线程自动扩大,线程库创建的线程缺省堆栈1M,可以人为设置大小,请参照附
件.
157 Q: 子进程终止时,父进程必须要用wait类函数取得其状态,否则会产生僵尸进程
(子进程),我用fork产生了几个进程,测试确实如此。这种说法应该没错吧
A: 没错
158 Q: 若用fork简单地产生两个进程,且父进程先终止,则子进程会成为僵尸进程吗
例: if ((pid = fork()) ==0)
{
sleep(20);
exit(0);
}
exit(0);
事实上我用上面例子测试,子进程没有成为僵尸进程,这对迁移问题中结论是否
有冲突?
A: 父进程退出,子进程被init 接管, 改进程自动调用wait.
159 Q: 如何解决如下产生的僵尸进程?
例: if ((pid =fork()) == 0)
{ ...
if (-1 == execlp("subprocess","subprocess",(char *)0) )
//说明:subprocess进程为一个死循环进程,只有发信号才能退出,故父进程部分不能用wait处理
{
kill(getppid(),SIGCHLD);
}
...
}
..... //父进程内容
请问针对这种情况,如何处理僵尸进程?除了wait类函数外,还有什么办法呢?
A: 方法一 : 子进程在退出之前向父进程发一个信号,父进程进行wait。不过这
可有风险,要是子进程不退出,乖乖 ..........
方法二 :只要忽略掉SIGCHLD信号即可,故可调用 sigignore(SIGCHLD),或用
sigset,或用sigaction中flag中加上SA_CLDWAIT标志即可,当然受不同unix而
限制,在svr4中可以,但在4.3+BSD中只有wait等了。
方法三: 下面是教科书式的解决方案,是不是更cool一点?
#include
#include
#include "ourhdr.h"
int
main(void)
{
pid_t pid;
if ( (pid = fork()) < 0)
err_sys("fork error");
else if (pid == 0) { /* first child */
if ( (pid = fork()) < 0)
err_sys("fork error");
else if (pid > 0)
exit(0); /* parent from second fork == first child */
/* We're the second child; our parent becomes init as soon
as our real parent calls exit() in the statement above.
Here's where we'd continue executing, knowing that when
we're done, init will reap our status. */
sleep(2);
printf("second child, parent pid = %d/n", getppid());
exit(0);
}
if (waitpid(pid, NULL, 0) != pid) /* wait for first child */
err_sys("waitpid error");
/* We're the parent (the original process); we continue executing,
knowing that we're not the parent of the second child. */
exit(0);
}
160 Q: 目前遇到一个严重的性能方面的问题,具体原因如下:每处理一个呼叫需要建
立两个TCP连接(主被叫各1),我们原定的规格是保持2400个呼叫,也就是保
持4800个TCP连接,我们使用select来接收和发送数据,一次处理所有的TCP连
接,每隔100ms select所有的TCP连接一次,可是我们发现当TCP数目增多时,
select的时间也迅速增加,测试发现Select 2000个TCP连接的时间需要20ms,
这是导致系统性能的关键。所有的socket已全部通过如下语句设置成了非阻塞
方式
arg = 1;
ioctl(sTemp, FIONBIO, &arg)
A: select 是由poll 实现的,所以避开select调用而直接使用 poll 会有一定的
效果.但系统开销主要还是由于 文件句柄过多引起的,所以提高系统性能还要
想别的办法.如果有数据等待的socket在所有socket中的比例不是很大,则用多
线程来进行调度是更好的选择.
161 Q: 由于3500个TCP Select一次需要40ms的时间,如果改成多线程,花费的总时间
会比40ms还多,我们已经进行过测试,不知道一般这种使用大量TCP的系统是
如何处理的?我们在微机上测试发现NT上select 5000个TCP连接系统仍然不是
非常忙。可能还是solaris哪里没有考虑到?
A: 理论上讲,建立在中断基础上的多线程+ 阻塞接收方式要由于目前的轮询机制,
测试中出现的性能不良应该可以通过调整系统参数解决。实现上讲,采用多线
程方式能够令系统负载分布到内存管理,调度策略,网络几个方面,在这几个
方面都有手段进行调优,Solaris的优势才有机会发挥,这也是目前各种web
server 和其他网络服务器的通行做法,而现在所有的工作都集中在 select函
数,没有什么优化的余地。而我们知道,UNIX 中的 select 广泛的用于 I/O
多路复用,并非专用于网络,所以实现起来复杂些,而 NT中的 select 基本
上只用于socket通信,两者的速度当然不可同日而语,而且,一般微机的主频
还要快些。
162 Q: 请问X Windows、Motif、OpenWindows、CDE之间的关系?
A: X Windows实现 X 协议并提供底层窗口环境功能,对应的开发工具包叫 Xlib,
开发时非常繁琐,所以一般都需要高层的工具包,OpenWindow 和 Motif
就是两种用的较多的工具包,(OpenWindow 已经停止开发)。CDE 是 Motif
的一种实现,不仅包含开发包,还提供完整的桌面管理环境,以 Windows 做
比较, Motif 相当于Win32 API,CDE 相当于Windows 本身。
163 Q: 在用XwinPro,Exceed等X 仿真软件连接主机时,用“CTRL+空格”键进行输入
法切换后,有中文输入的窗口出现,但键字的过程中发现,要输入的窗口中只
有英文字母出现,而回车后无法键入中文。简单的说,在进行切换输入法后,
跟没有切换的效果是一样的,只是在界面中多了一个中文输入的窗口。问如何
解决。
A: 请将本机热键 Ctrl + space屏蔽(一般用作中文输入),留作 X Window 的
中文输入法,就可以实现中文输入。
164 Q: 为何在仿真软件上运行X 程序速度很慢?
A: 由于仿真软件通过X 协议与主机相连,所以与网络的速度关系很大,如果是
10M的共享式 HUB,网络上机器又比较多,速度就会很慢,但我试过一个HUB上
只连接主机和仿真软件所在PC机,速度还可以,否则应当选择更高速的网络。
165 Q: 如何修改机器hostid?
A: 其实是一个简单的命令:
#adb -w -k
进入adb之后执行如下命令,
hw_serial ?w '00' '01' '03' '04' '05' 0
其中,从01到05是新的hostid,不过要把数值从16进制转成十进制,别告诉我你不
会。另外,还有一种改法是改NVRAM的,能永久生效:
72 1 mkp
c0 c mkp
ff d mkp
ee e mkp
0 f 0 do i idprom@ xor loop f mkp
将hostid改为 72c0ffee
不过,这种改法比较危险,需要小心
166 Q: 工作站硬盘共8G。由于数据库要求比较大的空间(5G),所以给根分区/共
1000M空间,当时安装完系统后,使用率为不到80%。运行了一段时间以后(1
个多月),根分区使用率已达100%。请问:
1、1000M分区是否合理?
2、会是什么文件占用了根分区空间?如何查找该文件,并将其删除?
A: 如果 /opt 占用另外的分区,这样的容量应该已经够用,但应该小心尽量不要
在/usr下安装软件。根分区变满一般是两个原因:
1。core 文件增多,用如下命令删除:
find / -name core -exec rm -f {} /;
2. 日志增多,请察看 /var 目录。
167 Q: 怎样将一个目录下的所有文件按大小排序?(包含子目录)
A: find . -exec ls -l {} /; |grep '^-' |sort -n +4 -5
168 Q: 您好,请问如何查看SUN机器或操作系统是32位的还是64位的?
A: isainfo -v
169 Q: 请问soalris下ftpd如何将超时改成不限时?
A: 修改 /etc/inetd.conf, 给 in.ftpd 加 -t 选项
170 Q: 如何获得solaris系统的总虚拟内存?我用vmstat可以获得系统的可用虚拟内
存,但是不能得到系统的总虚拟内存。用df -k查看swap分区的大小,发现该
数值是变化的,基本上是比vmstat显示的可用虚拟内存小两兆的样子。
***************************************************************************************************************
<1 websmap2 [wy] :/export/home/wy>vmstat 1 2
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s6 -- -- in sy cs us sy id
0 0 0 113568 319688 0 7 1 0 0 0 0 1 0 0 0 115 124 48 0 0 100
0 0 0 1417248 667480 0 5 0 0 0 0 0 0 0 0 0 205 592 328 0 1 99
<2 websmap2 [wy] :/export/home/wy>df -k
文件系统 千字节 已用 可用 容量 挂接在
/proc 0 0 0 0% /proc
/dev/dsk/c0t0d0s1 16404230 9681632 6558556 60% /
fd 0 0 0 0% /dev/fd
swap 1415552 320 1415232 1% /tmp
<5 websmap2 [wy] :/export/home/wy>
***************************************************************************************************************
请问这是为什么?我如何获得系统的总虚拟内存?或者说交换分区的大小?
A: swap -s
171 Q: 软件安装文件setup.zh.res和setup.C.res刻盘后文件名被截为8.3的结构,分
别是setupz~1.res和setupc~1.res,经查应该不是刻录的问题,将光盘放入PC
机,可正常显示长文件名,但放入UNIX,则名字被截短,还请各位确认,不同
的操作系统间交换光盘文件是否有什么要注意的,有什么办法解决吗?
A: 由于Solaris 不支持 fat32文件系统,所以windows 下刻的光盘如果有长文件
名则不能识别,同样的问题也出现在软盘的使用上,用微机读此光盘再用ftp
或Samba,NFS 之类的网络文件系统,可以绕开此问题,或者在Solaris下刻光
盘
172 Q: 我们用的是solaris7,我将/notes/log/a.nsf 文件移到 /notes/notesr4目录
下后,从客户端打不开,提示说:无效的NSF版本。请问,如何可以变为有效?
A: 我明白了,是Domino装在Solaris上,因为我发现我们的邮件也是在一台
Solaris上,我一直以为是Window NT什么的呢。可否线把这个文件取回本地,
看看文件本身是否有问题?因为Domino 有自己的管理工具,可能不光是移动
一个文件这样简单。如果你是管理员的话,还是通过管理界面作这样的操作吧
。或者,可以打IBM 的技术支持电话,是800 的,而且挺管用,我以前试过的
173 Q: 如果solaris增加内核功能是不是只有通过增加驱动程序一种手段?
A: 非也! solaris总共定义了6种可加载的内核模块,分别是:device drivers,
system call,filesystem,miscellaneous modules ,stream modules,
scheduling classes ,and exec modules
每种模块都有不同的加载步骤
174 Q: 我们的系统的GUI是MOTIF的,在网上运行时,发现会因为颜色数不够,一些图
标无法显示出颜色,比如当设备故障时应该显示红色,但是因为颜色数不够,
会显示灰色。我们的用户现在已经投诉,希望能帮助我们解决这个问题。谢谢
A: Follow the following steps:
1. To make sure what graphic accelorater card installed in your machine.
run the command :
#ls /dev/fbs
to see what file is there.
If the file is ffb0, your accelorater card is ffb
If the file is afb0, your accelorater card is afb
If the file is m640, your accelorater card is m64
2.To select the setting utility.
From accelorater card type, you should select the proper setting utility.
For ffb, the utility is ffbconfig
For afb, the utility is afbconfig
For m64, the utility is m64config
If other accelorater cards used, the same naming convertion is kept.
3. use the setting utility to see the permitting config parameters:
#xxxconfig -prconf
xxxconfig above is utility your select in step 2.
Then the permitting parameter combinations and current setting are listed.
Select one you want.
4. use the setting utility to set the display:
#xxxconfig -res aaaaxbbbxcc
xxxconfig above is utility your select in step 2.
aaaa is the wildth of display.
bbb is the height of display.
cc is the depth of display.
175 Q: 如何在Solaris上打印出中文的html文件(打印机已配好,lp命令可用)?
A: 如果安装中遇到问题,请参考下面的文章。
http://bbs.ee.ntu.edu.tw/boards/Linux/7/17.html
176 Q: 如果我只分swap区和root区,长期使用会有什么不良后果?如果数据库要占掉
4个分区,请问有什么好的分区方法?
A: 空间适当留大一点, 管理员经常留意core文件和 /var目录的大小,无论分一
个区还是3,4个,这些都是要做的,没有什么差别。
177 Q: workshop编译器缺省是几字节对齐?
A: 32位程序4字节,64位程序8字节
178 Q: 请问solaris 8对文件名的长度有限制吗?
A: 有,255Byte
说明:"0" 为数字零,"o"为小写字母欧,"O"为大写字母欧.请朋友注意!!!
<完>