老男孩教育每日一题:2017年3月9日-请解释下面Shell脚本中if开头的整行代码的意思及应用场景吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老男孩教育每日一题:2017年3月9日-请解释下面Shell脚本中if开头的整行代码的意思及应用场景吗?相关的知识,希望对你有一定的参考价值。

请解释下面Shell脚本中 if开头的整行代码的意思,你见过它的应用场景么?

if(kill -0 $pid 2>/dev/du11)
then
    echo"oldboy"
else
   echo"oldgirl"
fi

面试题:请解释if (kill -0 $pid 2>/dev/null)代码的意思?

if(kill -0 $pid 2>/dev/null)
    then
       echo "oldboy"
else
       echo "oldgirl"
fi

老男孩解答要点:

  1.  kill -0 $pid中的-0表示不发送任何信号给PID对应的进程,但是仍会对变量值PID对应的进程是否存在进行检查,如果$pid对应的进程存在,则返回0,不存在返回1。

  2.  2>/dev/null不输出错误信息。

  3.  系统里的应用场景是mysql的/etc/init.d/mysqld脚本中停止MySQL服务的脚本代码段。

  4.  使用/etc/init.d/mysqld stop命令执行脚本关闭数据库的程序代码如下:

 

  stop‘)

    # Stop daemon. We usea signal here to avoid having to know the

    # root password.

    iftest-s"$mysqld_pid_file_path"

    then

      mysqld_pid=`cat "$mysqld_pid_file_path"`

      if (kill-0$mysqld_pid2>/dev/null)

      then

        echo$echo_n"Shutting down MySQL"

        kill$mysqld_pid

        # mysqld shouldremove the pid file when it exits, so wait for it.

        wait_for_pid removed "$mysqld_pid""$mysqld_pid_file_path"; return_value=$?

      else

        log_failure_msg "MySQL server process #$mysqld_pidis not running!"

        rm"$mysqld_pid_file_path"

      fi

      # Delete lock forRedHat / SuSE

      if test-f"$lock_file_path"

      then

        rm-f"$lock_file_path"

      fi

      exit$return_value

    else

      log_failure_msg "MySQLserver PID file could not be found!"

    fi

    ;;


本文出自 “悠久之翼的博客” 博客,请务必保留此出处http://youjiu.blog.51cto.com/3388056/1911141

以上是关于老男孩教育每日一题:2017年3月9日-请解释下面Shell脚本中if开头的整行代码的意思及应用场景吗?的主要内容,如果未能解决你的问题,请参考以下文章

老男孩教育每日一题-2017年4月10日-find命令题目

老男孩教育每日一题-2017年3月22日:请说明用户访问网站流程

老男孩教育每日一题-2017年3月28日-awk累计相加

老男孩教育每日一题-2017年3月31日-awk数组统计

老男孩教育每日一题-2017年4月27日-如何正确清理MySQL binlog?

老男孩教育每日一题-2017年5月8日-请根据以下数字信息,确认相应的端口号,端口号对应的服务名称