本文主要給大家介紹Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本,文章內(nèi)容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本吧。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、做網(wǎng)站、德欽網(wǎng)絡(luò)推廣、小程序開發(fā)、德欽網(wǎng)絡(luò)營銷、德欽企業(yè)策劃、德欽品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供德欽建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
說明:
MySQL啟動命令為:
/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 >/dev/null &
停止命令邏輯腳本為:
mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) then kill $mysqld_pid sleep 2 fi
請完成MySQL啟動腳本的編寫,并實(shí)現(xiàn)可以使用chkconfig配置開機(jī)自啟動。
要求:用函數(shù),case語句、if語句等實(shí)現(xiàn)。
解答:此題的技巧適合絕大多數(shù)啟動腳本,例如:rsync,nginx等,僅以MySQL為例介紹思路。
簡單、易用、高效、專業(yè)
#!/bin/bash # chkconfig: 2345 64 36 # description: MySQL startup # Author:oldboy # Blog:http://oldboy.blog.51cto.com # Time:2017-07-07 09:24:34 # Name:mysqld # Version:V1.0 # Description:This is a test script. [ -f /etc/init.d/functions ] && source /etc/init.d/functions 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" #此步對開機(jī)啟動及定時(shí)啟動及其關(guān)鍵。 export PATH return_value=0 # Lock directory. lockdir='/var/lock/subsys' lock_file_path="$lockdir/mysql" log_success_msg(){ echo " SUCCESS! $@" # 注意函數(shù)的縮進(jìn),下同,也是專業(yè)的表現(xiàn),可放到functions里。 } log_failure_msg(){ echo " ERROR! $@" } # Start Func start(){ # Start daemon echo "Starting MySQL" if test -x $bindir/mysqld_safe # 啟動文件是否可執(zhí)行。 then $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" >/dev/null & return_value=$? # 是否處理好返回值是區(qū)別腳本是否專業(yè)規(guī)范的關(guān)鍵。 sleep 2 # Make lock for CentOS if test -w "$lockdir" # 鎖目錄是否可寫。 then touch "$lock_file_path" # 創(chuàng)建鎖文件。 fi exit $return_value else log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" fi } # Stop Func stop(){ if test -s "$mysqld_pid_file_path" # 是否PID文件存在并大小大于0。 then mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) # 檢查PID對應(yīng)的進(jìn)程是否存在。 then echo "Shutting down MySQL" kill $mysqld_pid # 不能帶-9,否則后果自負(fù)。 return_value=$? sleep 2 else log_failure_msg "MySQL server process #$mysqld_pid is not running!" rm -f "$mysqld_pid_file_path" fi # Delete lock for Oldboy's CentOS if test -f "$lock_file_path" then rm -f "$lock_file_path" fi exit $return_value else log_failure_msg "MySQL server PID file could not be found!" fi } case "$1" in start) start ;; stop) stop ;; restart) if $0 stop; then $0 start else log_failure_msg "Failed to stop running server, so refusing to try to start." exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $return_value #是否處理好返回值是區(qū)別腳本是否專業(yè)規(guī)范的關(guān)鍵。
看完以上關(guān)于Shell如何操作開發(fā)企業(yè)級服務(wù)啟動腳本,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業(yè)知識信息 ,可以持續(xù)關(guān)注我們的行業(yè)資訊欄目的。