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 是不一致的。

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    1602液晶显示实验
    LNMP安装(二)
    LNMP安装(一)
    vim插件安装
    资料下载
    建表的sql
    time
    计算机里的加减乘除
    branch
    存储过程
  • 原文地址:https://www.cnblogs.com/10087622blog/p/8423434.html
Copyright © 2011-2022 走看看