千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,请解释下面Shell脚本中 if开头的整行代码的意思,你见过它的应用场景么?if(kill -0 $pid 2>/dev/du11)then echo"oldboy"else echo"ol
千家信息网最后更新 2025年02月01日老男孩教育每日一题: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

;;


0