科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道民航气象数据库系统服务器的管理技巧

民航气象数据库系统服务器的管理技巧

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如自动杀死僵死的进程,boot丢失、unix内核破坏等故障的解决方法,为气象设备维修人员提供参考。如果当前的核心较大,制作特定系统应急盘时,一张软盘可能装不下,因此,我们一般选择通用内核应急盘。

2008年7月7日

关键字: 文件系统 操作系统 unix 服务器 数据库

  • 评论
  • 分享微博
  • 分享邮件

  根据民航气象部门广泛使用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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章