zoukankan      html  css  js  c++  java
  • suse 关于使用 /etc/init.d/boot.local的问题

    最近看了一个问题,有同事在 suse环境下的/etc/init.d/boot.local 中,增加了一行脚本。

    该脚本的简单大意如下:

    #!/bin/bash
    while [ 1 ]
    do
       if [ $(ps -ef |grep -i java|grep -v grep|wc -l) -gt 0 ]
       then
          echo "find java process"
          break;
       else
          echo "can't find process"
          sleep 2
          continue;
       fi
    done

    本来应该是最终走分支if的,但是运行发现,该脚本在java运行之后,也没能退出。

    手工执行该脚本,也能正常退出,不会一直循环,那是什么原因导致的脚本不退出呢?

    唯一的可能就是if条件不满足。

    最后发现,要是条件判断满足,前提是,正常的runlevel,因为/etc/init.d/boot.local 这个脚本是由 /etc/init.d/boot 这个script 所启动的,而且是最后 boot script 工作完成要准备进入 runlevel 环境执行各项 rc script 前所执行。而 rh 的 /etc/rc.d/rc.local 脚本是 runlevel 环境执行各项 rc script 時最后一个阶段所执行的。

    所以,哪怕最后进入了正常的runlevl,但是该脚本的运行环境中,ps -ef 和我们手工执行看到的ps -ef 是不一致的。

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    第5章:文本处理
    第4章:查找与替换
    第3章:正则表达式
    命令行获取苹果电脑的主要硬件配置
    Linux的tree命令
    log4j.xml的实用例子
    史上最牛js
    Some warning were found during validation
    记十多年前的一次培训经历
    Mac OS X上IntelliJ IDEA 13与Tomcat 8的Java Web开发环境搭建
  • 原文地址:https://www.cnblogs.com/10087622blog/p/8423434.html
Copyright © 2011-2022 走看看