深入探测Linux cluster RPM 安装过程

今天同事在Suse的cluster 2+4的系统上准备安装给RPM,但是这个RPM中的Spec文件里的脚本需要检测当前系统的ifconfig信息,问题就来了。系统在启动的时候IP interface还没有完全起来,导致RPM重启某个服务不起作用。

第一次很简单的我就想到在Spec中先循环检测IP interface,当检测到已经起来了再进行服务重启。结果查看程序log,一直没有打印循环那一块的日志。再检查/var/log/message里系统的log发现系统log也没有写了,一直阻塞在我们打的RPM包那。由此可见cluster安装RPM是队列式安装的,并且Spec里的脚本阻塞也会导致整个cluster安装RPM阻塞!

解决方案:在Spec文件中对循环检测系统IP Interface的地方用多线程引出来,也就是shell中的后台运行。如何对shell脚本进行后台执行,请看下面的例子:

# !/bin/bash
for((i = 0 ;i < 5 ;i ++ )); do
{
    sleep 3 ;echo 1 >> aa  &&  echo " done! "
}
done
wait
cat aa | wc  - l
rm aa
这里程序会顺序执行,即需要15s,再看下面的程序:

# !/bin/bash
for((i = 0 ;i < 5 ;i ++ )); do
{
    sleep 3 ;echo 1 >> aa  &&  echo " done! "
} &
done
wait
cat aa | wc  - l
rm aa
这段程序只需3s,原因很简单,同时执行了,请注意for循环后面的&符号。此符号就是让程序在后台执行。另外再说下wait的作用,就是等上面的后台程序执行完后再执行后面的程序。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值