我们作为金融系统的计算机系统管理员,从1994年开始使用SCO公司的多用户系列操作系统产品,先后使用了Xenix、SCO Unix Svr4的普通版和网络版,一直到SCO OperServer 5.0.5。原因是这些操作系统产品有多用户和多任务的功能,安全保密性比较好,容易挂接图形和字符终端设备,网络连接简单,业务使用成本较低。但正是由于这些特点,不可避免地带来了当计算机出现异常关闭及误删系统文件等问题时,不能像Windows系列产品那样,有中文提示和帮助,需要系统维护人员读懂系统出现的各种英文提示,手工敲入一条条Unix命令,从而排除各种故障。因此,给系统维护带来了困难,也给系统维护人员提出了比较高的技术要求。
---- 在实际工作中,我们发现造成Unix系统故障的原因主要有两个: 首先是计算机异常关闭。在重新启动时,尽管计算机会自动检查文件系统,但对于那些无法自动修复的错误提示,一线操作人员读不懂,也不再处理,这样日积月累造成系统崩溃; 其次是上级有技术维护人员在处理计算机故障时照本宣科,不但原问题没有解决,又给系统造成了新的伤害。
---- Unix系统的故障现象集中表现为系统不能引导、不能进入多用户工作方式、login状态下所有用户都不能登录和系统不能正常关闭,以及个别接终端的串口不能使用等等。解决这些问题所使用的工具主要是安装系统时创建的应急系统启动盘。下面,就几个典型常见的故障提供解决办法。
一、根目录损坏
---- 此时在计算机启动后出现如下提示:
---- boot not found
---- cannot open
---- stage 1 boot failure:error loading hd(40) /boot
---- 原因是系统的根目录/boot文件损坏或丢失,造成系统不能启动。修复办法:
用应急盘的boot盘引导系统,在boot:提示下输入:
fd(60) unix.Z root=hd(42)
其中fd(60) unix.Z 表示使用软盘的unix核心引导,root=hd(42) 表示系统启动的文件系统为硬盘上的文件系统。
在系统启动时输入超级用户口令,进入单用户模式,卸载/stand文件系统,输入命令如下:
#umount /stand
重新加载stand文件系统,输入命令如下:
#mount /stand
执行第2和第3步的目的是改变/stand的只读属性,在默认情况下,/stand是只读方式的。
构造引导盘文件系统,输入命令如下:
#mount ?r /dev/rfd0135ds18 /mnt
其中-r 参数表示使用只读方式,/dev/rfd0135ds18是软盘对应的系统设备文件,mnt是将软盘形成空文件目录,构造成功后,mnt目录下的内容就是软盘的内容。
将引导盘的boot文件拷入硬盘,输入命令如下:
#cp /mnt/boot /stand
卸载软盘文件系统,重新启动计算机,输入命令如下:
#umount /mnt
#reboot
---- 其中第一条命令卸载软盘所构造的目录,第二条命令重新启动计算机。
二、Unix文件损坏
---- 如果发生这种情况,在启动计算机时出现以下提示:
---- unix not found
---- 然后系统挂起,原因是系统的/unix文件损坏或丢失。解决办法有2个: 一是使用系统在原来重新连接内核时自动备份的旧内核启动:在boot:下输入unix.old启动即可;二是用应急启动盘修复,具体操作步骤如下。
在boot下输入以下命令:
fd(60) unix.Z root=hd(42) swap=hd(41)
其中fd(60) unix.Z 表示使用软盘的unix核心引导,root=hd(42) 表示系统启动的文件系统为硬盘上的文件系统,swap=hd(41)表示使用硬盘的交换区。
和处理第一种故障类似,系统启动到单用户方式下,卸载/stand文件系统再加载,将软盘的unix.Z拷入硬盘。输入命令如下:
#umount /stand
#mount /stand
#mount ?r /dev/rfd0135ds18 /mnt
#cp /mnt/unix.Z /stand
#reboot
三、系统启动后不能进入多用户工作方式
---- 造成这种情况的原因一般有2种可能:首先是/etc/inittab文件丢失或损坏;其次是/etc/passwd文件丢失或损坏。
---- 如果在系统在引导时出现如下提示:
---- init:cannot open /etc/inittab errno:2
---- 此时按+d进入多用户失败,则表明是/etc/inittab文件丢失或损坏,而此文件包括init命令,控制计算机所进入的init级别,其中init 0就是关闭计算机,init 1为进入单用户工作方式,init 2是系统启动时默认的多用户运行级别。解决办法是修复inittab文件,重新建立unix内核。具体的解决办法有以下2个。
重新建立inittab的文件连接,输入以下命令即可:
#ln s /var/opt/K/SCO/unix/5.0.5a/etc/inittab/etc.inittab
其中-s参数表示将源文件不改名的情况下,从源目录(这里是/var/opt/K/SCO/unix/5.0.5a/etc/inittab)连接到目的目录(这里是/etc/inittab)。
重构inittab文件
#touch /etc/.new-unix
(将new-unix的时间标签改为最新)
#cd /etc/conf/bin
#./idmkenv
(“./”表示执行)
在系统提示下输入“y”,然后输入:
#cat /etc/inittab
说明,cat本来是查看文件内容的命令,这里表示将idmkenv的执行结果输出到/etc/inittab文件中
完成上述工作后,输入:
#init 2
就可以进入多用户操作系统了。
如果在系统引导时提示
su:unknown id:root
init:single user mode
password file missing
entering system maintenance mode
然后系统只能进入单用户维护模式,则表明是/etc/passwd文件丢失或损坏。如果使用l 命令显示文件的长列表,系统会出现如下显示:
/etc/passwd cannot be opened for reading
解决办法是将应急盘的root盘(第二张应急盘)中的passwd文件拷入硬盘,修改passwd文件的属主和属组。输入命令如下:
#mount r/dev/rfd0135ds18/mnt
(以只读方式构造软盘文件系统)
#cp /mnt/etc/passwd /etc/passwd
(将软盘的passwd文件拷入硬盘)
#chown bin:auth passwd
(卸载软盘文件系统)
#reboot
(重新启动)
四、系统不能正常关闭
---- 计算机运行正常,但系统关闭输入以下命令
---- shutdown g0 i0
---- y后,计算机提示如下:
---- /etc/initscript:/etc/uadmin:not found
---- 然后系统挂起。造成每次关闭计算机都是非正常关机,开机就需要检查文件系统。原因是/etc/uadmin文件丢失或损坏。解决办法是将应急启动root盘的uadmin文件拷入硬盘,命令格式为:
---- #mount /dev/rfd0135ds18/mnt
---- (以只读方式构造软盘文件系统)
---- #cp /mnt/etc/uadmin /etc/uadmin
---- (将软盘的uadmin文件拷入硬盘)
---- #chown bin:bin /etc/uadmin
---- (改变uadmin文件的属主为bin用户,属组为bin组)
---- #umount /mnt
---- (卸载软盘文件系统)
---- #reboot
五、个别串口所连终端上所有用户都不能注册
---- 其现象为终端、连接线都正常,终端上也显示login提示符,但是在用户名后系统提示如下:
---- terminal 串口名is disabled ---see account administrator
---- (其中串口名可以是tty21a等)
---- 然后又退出到login提示符下,普通用户都不能登录系统。造成这种故障的原因是,首次安装系统时,系统默认用户最多不成功的登录次数为99次,如果超过这一数目,系统将自动将此串口锁住,因此用户无法登录。解决办法是超级用户登录后,使用scoadmin管理工具,取消这一限制。首先输入以下命令:
---- #scoadmin
---- 进入系统管理菜单,然后选中system(系统管理)一项,在接下来的菜单中选terminal manager(终端设备管理),然后选unlock(解锁),按功能键就可以找出被系统自动加锁的终端串口,按确认解锁。如果不需要用户在某个终端串口的不正确登录限制,那么在解所后退出到terminal manager菜单,选中options(参数选择)一项,其中的maximum unsuccessful attempts before locking terminal(在锁终端串口前允许的最大不成功登录尝试次数)默认值为99次,改为infinte(不限制)即可。
---- 另外,在实际应用中可经常使用“fsck y”命令检查文件系统的一致性并自动修复错误。一旦计算机系统出现故障,无论是一线操作人员还是技术维护人员,都要将计算机的异常现象、处理措施和步骤记录在案,为将来进一步更高一级的技术处理提供了详细的资料,同时也是工作经验的文字积累过程,为经验的交流提供了良好的基础。