扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
根据民航气象部门广泛使用SCO UNIX做为局域网服务器操作系统的实际情况,结合平时工作中积累的经验,本文介绍了在SCO UNIX 系统中应用shell程序和系统应急盘来解决系统性故障。如自动杀死僵死的进程,boot丢失、unix内核破坏等故障的解决方法,为气象设备维修人员提供参考。
前言
采用SCO UNIX做为网络操作系统在民航气象局域网中使用十分普遍,由于气象设备维修人员一般对Windows较熟悉,对SCO UNIX的使用和维修接触较少,一旦服务器出现系统性故障,例如:不能对用户进行管理,系统死机等。一般只能通过重新安装软件系统来解决。但这样做有可能丢失一些重要的程序和数据;还要耗费相当多的时间,因此,这只是一个没有办法时的办法。本人在工作中经过多次试验发现了利用系统应急盘和手工编写的shell程序能够有效地解决系统性故障,增强系统的安全性,而且使用起来更简单,更方便,现整理出来供大家参考。
1 系统应急盘的制作
应急盘由boot引导盘和root文件系统软盘组成,其中boot应急盘包含了引导和装入unix核心所必须的三个文件:/boot、/etc/default/boot和/unix,root应急盘包含了一部分的unix系统的实用程序。其制作步骤如下:
1.以root身份登录
2.使用scoadmin中filesystem下的floppy manager或键入命令mkdev fd进入创建应急盘的界面
3.根据提示制作boot盘和root盘
其中制作boot盘时有两个选项:
1.System specific boot
2.Generic boot(builds a special kernel)
选择1,制作一特定系统的应急盘,包含与本机系统相同的内核。
选择2,制作一个较小的通用内核应急盘,只连接较少的设备驱动。
如果当前的核心较大,制作特定系统应急盘时,一张软盘可能装不下,因此,我们一般选择通用内核应急盘。
2 系统应急盘的使用
2.1 NO OS 故障
服务器启动失败,并显示“NO OS”。这表明硬盘上管理引导的部分/etc/hd0boot,etc/hd1boot,或者主引导块/etc/masterboot被损坏了。可采取如下步骤解决:
1.用boot应急盘启动系统,在Boot:时,键入 hd(40)unix
2.进入单用户,在#提示符下键入命令:
#instbb hd/dev/hd0a (将引导块分区写给硬盘)
#dparam-w (将主引导块代码写给硬盘)
2.2 boot丢失
服务器启动时显示“boot not found”。 这表明系统中/boot丢失了。可采取如下步骤进行解决:
1.用boot应急盘启动系统
2.在Boot:时键入fd(60)unix.Z root=hd(42)
3.进入单用户,在#下键入命令:
#umount/stand (/stand中放置了引导文件和内核,通常情况下,/stand在安装时被设置成只读的,如果需要替换/boot,必须先卸载/stand,然后再安装/stand)
#mount/stand
#mount-r/dev/fd0/mnt
#cp/mnt/boot/stand
#umount/mnt
#haltsys
4.从硬盘重新启动系统。
2.3 unix内核文件故障
服务器启动时显示“unix not found”。这表明unix内核文件丢失或被破坏,此时,可在Boot:提示下输入其它内核文件(如unix.old、unix.safe等)来启动系统。如果无其它内核文件,则可按下列步骤从应急启动盘上来恢复unix内核文件:
1.用boot应急盘启动系统
2.在Boot:时键入fd(60)unix.Z root=hd(42)swap=hd(41)
3.进入单用户,在#下键入命令:
#umount/stand
#mount/stand
#mount-r/dev/fd0/mnt
#cp/mnt/uniz.Z/stand
#umount/mnt
#haltsys
4.回车后从硬盘重启系统。
2.4 SH文件错误 服务器加电后在系统引导提示符下键入回车键,当第一屏被刷新后显示第二屏时出现许多错误信息,如: INIT: command exec /etc/brc 1〉/dev/console 2〉&&1 failed to execute, errno=9 (exec of shell failed) ...
这表明系统/bin/sh文件受损或丢失。因为sh是Shell标准、作业控制和限制性命令的解释程序,所以,该文件受损或丢失将导致系统启动失败。可采取如下步骤进行解决:
1.用boot盘和root盘引导系统,直到出现提示符#
2. mount/dev/hd0root/mnt
3. cp/bin/sh/mnt/bin/sh
4. umount/dev/hd0root
5.haltsys
6.在系统正常引导后进入超级用户下, 将文件/bin/sh的属主与组均改为系统原来所定义的bin即恢复了系统。2.5 INIT文件丢失 服务器加电后在系统引导提示符下键入回车键,当第一屏被刷新后在第二屏的最后一行出现如下信息:Kernel: i/o bufs=600k,然后系统挂起。
这表明系统的/etc/init文件丢失。 因为init程序在核心初始化的最后阶段开始执行,其进程号(pid)为1。该进程按一定规则启动/etc/inittab文件中所列的进程,引导系统进入所规定的运行级别。它首先读/etc/init tab中的initdefault项,当所有的进程都创建成功后, init进入循环等待。init主要用于打开主控台/etc/console,检查文件系统的一致性,执行/etc/rc 进行必要的设置。init在单用户模式下启动Shell,而在多用户模式下运行/etc/brc、/etc/bchk等外壳程序并启动/etc/rc。另外,它还调用/etc/getty为每个终端生成一个getty进程,以便在读入用户注册名后完成用户的注册过程。如果/etc/init文件受损,新的进程就无法创建,从而导致系统挂起。对于这种故障,可采取如下步骤进行解决:
1.用Boot盘和Root盘引导系统,直到出现提示符#
2. mount/dev/hd0root/mnt
3. cp/etc/init /mnt/etc/init
4.umount/dev/hd0root
5. haltsys
6.在系统正常引导后进入超级用户,将/etc/init文件的属主与组均改为系统原来所定义的bin即可。
3 shell程序的应用
3.1自动杀死SCO UNIX僵死的进程 由于网络的原因,有些进程会突然僵死。这些僵死的进程,会消耗系统大量的资源,直接影响机器的正常运行。为了实时地、自动地杀死这些僵死的进程,本人编写了 Shell程序Autokill。
ps -ef | awk '{ print $1,$2,$7,$8 }' | \
awk '/[0-9][0-9]:[0-9][0-9]:[1-9][0-9]/ { print $1,$2,$3,$4 }' | \
awk '!/root/ { print "kill -9 " $2}' > /tmp/k_kill
chmod 777 /tmp/k_kill
/tmp/k_kill 3.2 Autokill程序解释 首先,用命令 ps -ef 查看进程状态,通过管道传送给 awk 进行处理。
在第一个 awk 中,获取进程的用户标识(UID)、进程号(PID)、进程占用CPU时间(Time)、进程执行命令(CMD)四个字段的值。
在第二个awk 中,通过模式匹配,选取所有匹配模式的行。在awk 中,[0-9]匹配0~9中任一个数字,[1-9]匹配1~9中任何一个数字,连用两个[0-9][0-9]则匹配一个任意两位数,因此[0-9][0-9]:[0-9][0-9]:[1-9][0-9]则匹配 Time时间字段值,查找占用 CPU 时间超过 10 秒的进程;如果要查找占用 CPU 时间超过半小时的进程,则把模式改成 [0-9][0-9]:[3-9][0-9]:[0-9][0-9]。
在第三个 awk 中,用 “!/root/ ”过滤掉由 Root用户生成的进程,并进行Shell语言拼装,并将最终结果定向到文件 /tmp/k_kill。
在Autokill程序的最后,执行 /tmp/k_kill 杀死进程。 3.3 查看结果 Autokill程序采用了管道处理方式,如要查看中间结果,则可以依次断开管道。
第一步执行:ps -ef
第二步执行:ps -ef | awk '{ print $1,$2,$7,$8 }'
第三步执行:ps -ef | awk '{ print $1,$2,$7,$8 }' | \
awk '/[0-9][0-9]:[0-9][0-9]:[1-9][0-9]/ { print $1,$2,$3,$4 }'
第四步执行:ps -ef | awk '{ print $1,$2,$7,$8 }' | \
awk '/[0-9][0-9]:[0-9][0-9]:[1-9][0-9]/{ print $1,$2,$3,$4 }' | \
awk '!/root/ { print "kill -9 " $2}' > /tmp/k_kill
最终查看/tmp/k_kill 文件。
再有,如只想自动杀死由某一用户执行的进程(如1234),只要将模式“!/root/”改成 “!/1234/”即可。
4 结语
气象局域网能否正常、安全、平稳地运行,在很大程度上取决于服务器的运行情况。因此,在服务器维修中,正确应用操作系统的系统应急盘和shell程序,可以降低设备故障率,起到事半功倍的作用。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者