老鳥帶你開發專業規範的MySQL啟動腳本
阿新 • • 發佈:2018-06-05
shell編程 老男孩 每一個合格的Linux運維人員都應該做到熟練或精通Shell腳本編程,因為Shell腳本語言差不多是所有編程語言裏最簡單的語言,如果Shell腳本不行,意味著運維之路可能還沒開始就將要終結。——老男孩老師
#!/bin/bash # chkconfig: 2345 64 36 #配置系統自啟動 # description: A very fast and reliable SQL database engine. ############################################################## # File Name: mysqld # Version: V1.0 # Author: oldboy # Organization: www.oldboyedu.com # Created Time : 2018-06-05 08:58:19 ############################################################## #引入系統函數庫 . /etc/init.d/functions #基礎路徑定義 basedir=/application/mysql bindir=/application/mysql/bin lockdir='/var/lock/subsys' lock_file_path="$lockdir/mysql" mysqld_pid_file_path=$basedir/data/`uname -n`.pid #成功提示函數 log_success_msg(){ #action為特殊的提示函數,$@為所有參數。 action "SUCCESS! $@" /bin/true } #失敗提示函數 log_failure_msg(){ action "ERROR! $@" /bin/false } #mysql啟動函數 start(){ echo $"Starting MySQL" #測試mysqld_safe是否可執行 if test -x $bindir/mysqld_safe then #後臺執行啟動mysql命令 $bindir/mysqld_safe &>/dev/null & #獲取返回值 retval=$? #判斷返回值是否為0 if [ $retval -eq 0 ] then #調用成功提示函數。 log_success_msg "mysql Startup" if test -w "$lockdir" #判斷鎖目錄是否可寫。 then touch "$lock_file_path" #創建鎖文件。 fi return $retval #給返回值是專業的表現。 else log_failure_msg "MySQL Startup" #調用失敗函數提示。 return $retval fi else log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" fi } #停止MySQL函數。 stop(){ #判斷mysql pid file大小是否為0。 if test -s "$mysqld_pid_file_path" then #讀取pidfile mysqld_pid=`cat "$mysqld_pid_file_path"` #判斷mysql pid對應的進程是否存在。 if (kill -0 $mysqld_pid 2>/dev/null) then echo $"Shutting down MySQL" kill $mysqld_pid #停止MySQL命令。 retval=$? if [ $retval -eq 0 ] then log_success_msg "MySQL Stop" #調用停止成功函數。 if test -f "$lock_file_path" then rm -f "$lock_file_path" #刪除鎖文件。 fi return $retval else log_failure_msg "MySQL Stop." return $retval fi else log_failure_msg "MySQL server process mysqld_pid is not running!" rm "$mysqld_pid_file_path" fi else log_failure_msg "MySQL server PID file is null or not exist!" fi } #接收傳參判斷並執行相應函數。 case "$1" in start) start retval=$? ;; stop) stop retval=$? ;; restart) stop sleep 2 #這裏很重要,要休息一下。 start retval=$? ;; *) echo $"Usage:$0 {start|stop|restart}" exit 2 esac exit $retval #執行腳本後,有返回值才更專業。
國內最佳Shell編程實戰圖書,《跟老男孩學習Linux運維:Shell編程實戰》,京東有售。
老鳥帶你開發專業規範的MySQL啟動腳本