myciciy
作者myciciy联盟成员·2016-12-01 15:01
IT顾问·某金融科技公司

案例4 小脚本惹出了大麻烦

字数 494阅读 4333评论 0赞 0

案例4 小脚本惹出了大麻烦

某银行灾备环境. 运维人员经常需要远程校验灾备端数据的可用性。为了方便日常的常规操作写了专门的启动停止脚本.执行完脚本就登录不上测试主机了.能ping通。运维人员反映,偶尔也会发生这样的问题,一般做法就是要求系统管理员帮他们重新启动分区,听完了,感觉问题好诡异啊。 我们通过HMC登录到分区,AIX运行正常。后来经常一番仔细排查询问找到了"病根".

欢迎大家交流,下面公布原因

#!/bin/sh
su - oracle -c "/home/oracle/stopdb.sh"
echo "Please waitting for 30 seconds..."
sleep 10
su - oracle -c "/home/oracle/stopasm.sh"
/etc/init.cssd stop
/home/oracle/removedev.sh

#!/bin/sh
. /home/oracle/.profile
echo `id`
echo `env|grep ORA`
export ORACLE_SID=scdb
sqlplus '/as sysdba' <

#!/bin/sh
#umount filesystem
fuser -kux /oracle
umount /oracle
#varyoffvg
varyoffvg oralevg
#exportvg
exportvg oralevg
#rmdev
rmdev -dl hdisk10
rmdev -dl hdisk11
rmdev -dl hdisk12
rmdev -dl hdisk13
rmdev -dl hdisk14
rmdev -dl hdisk15
rmdev -dl hdisk16
rmdev -dl hdisk17

确实是脚本里的这行出问题,不是说这行命令有问题,是每次出现这个问题的时候,运维人员说过,有时候执行脚本停止里面有一些报错,为了保证执行成功,他们又执行了一遍。问题就出在这里,本来第一遍执行的时候/oracle已经被成功umount了,第二次执行的时候就不是/oracle文件系统了,而是一个目录,这个时候fuser会把很多root相关的进行直接kill掉,导致我们无法再登录了。

fuser -kux /oracle

这个场景很好模拟,找台测试机,执行2遍,效果自然就显现了。

如何解决呢,通过hmc登录到终端重启ssh进程,startsrc -s ssh.虽说这样能够重新登录,但是里面可能有其他的进程没有被重新启动,最安全的办法还是重启一下分区。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

AIX系统故障案例集锦
IBM Power AIX PowerHA PowerVM PowerVC IBM flashsystem SVC Storage 等相关技术案例

作者其他文章

相关文章

相关问题

相关资料

X社区推广