企业Shell面试题10:开发MysqL启动脚本
说明
MysqL启动命令为:
/bin/shMysqLd_safe--pid-file=$MysqLd_pid_file_path2>&1>/dev/null&
停止命令为:
MysqLd_pid=`cat"$MysqLd_pid_file_path"`
if(kill-0$MysqLd_pid2>/dev/null)
then
kill$MysqLd_pid
sleep2
fi
请完成MysqL启动脚本的编写
要求:用函数,case语句、if语句等实现。
解答:
[root@db02scripts]#cat/etc/init.d/oldgirl
#!/bin/bash
#chkconfig:23456436
#description:MysqLstartup
#Author:oldboy
#Blog:
#Time:2017-07-0709:24:34
#Name:
#Version:V1.0
#Description:Thisisatestscript.
[-f/etc/init.d/functions]&&source/etc/init.d/functions
Port=3306
User="root"
Bindir="/application/MysqL/bin"
Datadir="/application/MysqL/data"
MysqLd_pid_file_path="/application/MysqL/`hostname`.pid"
PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"
exportPATH
return_value=0
#Lockdirectory.
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/MysqL"
log_success_msg(){
echo"SUCCESS!$@"
}
log_failure_msg(){
echo"ERROR!$@"
}
case"$1"in
start)
#Startdaemon
echo"StartingMysqL"
iftest-x$Bindir/MysqLd_safe
then
$Bindir/MysqLd_safe--datadir="$Datadir"--pid-file="$MysqLd_pid_file_path">/dev/null&
return_value=$?
sleep2
#MakelockforCentOS
iftest-w"$lockdir"
then
touch"$lock_file_path"
fi
exit$return_value
else
log_failure_msg"Couldn'tfindMysqLserver($bindir/MysqLd_safe)"
fi
;;
stop)
iftest-s"$MysqLd_pid_file_path"
then
MysqLd_pid=`cat"$MysqLd_pid_file_path"`
if(kill-0$MysqLd_pid2>/dev/null)
then
echo"ShuttingdownMysqL"
kill$MysqLd_pid
return_value=$?
sleep2
else
log_failure_msg"MysqLserverprocess#$MysqLd_pidisnotrunning!"
rm-f"$MysqLd_pid_file_path"
fi
#DeletelockforCentOS
iftest-f"$lock_file_path"
then
rm-f"$lock_file_path"
fi
exit$return_value
else
log_failure_msg"MysqLserverPIDfilecouldnotbefound!"
fi
;;
restart)
if$0stop;then
$0start
else
log_failure_msg"Failedtostoprunningserver,sorefusingtotrytostart."
exit1
fi
;;
*)
echo"Usage:$0{start|stop|restart}"
exit1
;;
esac
exit$return_value
函数版:
#!/bin/bash
#chkconfig:23456436
#description:MysqLstartup
#Author:oldboy
#Blog:
#Time:2017-07-0709:24:34
#Name: