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的版