Linux_自制系統服務啟動指令碼
阿新 • • 發佈:2019-01-29
目錄
前言
在Linux的某些系統服務中,需要自己定製啟動服務的指令碼。通常會使用Cash語句來實現。
Case語句
一般用於程式啟動指令碼
Syntax:
case $1 in
Param1)
Commands
;;
Param2)
Commands
;;
*)
Commands
esac
Example:
#!/bin/bash -e
#/bin/bash -e 表示系統發生第一個錯誤時就中止指令碼執行
#每個被chkconfig管理的服務需要在對應的init.d下的指令碼加上兩行或者更多行的註釋。
# chkconfig:35 12 45
#第一行告訴chkconfig預設啟動的執行級以及啟動和停止的優先順序。如果某服務預設不在任何執行級啟動,那麼使用 – 代替執行級。
# description:Service start script
#第二行對服務進行描述,可以用\ 跨行註釋。
RETVAL=0
case $1 in
start)
echo "service starting..."
;;
stop)
echo "service stopping..."
;;
restart)
#$0 meating is this one script
sh $0 stop || true
# $0 stop || ture 表示出現錯誤時候不想中止的指令
sh $0 start
;;
*)
echo "input syntax error!"
echo "Usage:Is [start|stop|restart]"
exit 1
;;
esac
echo $RETVAL
###################################SCRIPT END
Apache 啟動指令碼
######################################## Apache 啟動指令碼
#!/bin/bash -e
[ -f /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
RETVAL=0 #使用變數作為判斷和關聯上下本的載體
httpd="/application/apache/bin/httpd" #使用變數簡化使用指令的決定路徑
start() {
$httpd -k start >/dev/null 2>&1 #httpd -k start|restart|graceful|stop|graceful-stop 傳送訊號使httpd啟動、重新啟動或停止
# daemon httpd >/dev/null 2>&1 # 2>&1 將錯誤輸出到正確輸出,即標準輸出和錯誤輸出一起輸出,管道|不通過錯誤輸出
RETVAL=$?
[ $RETVAL -eq 0 ] && action "啟動 httpd:" /bin/true ||\
action "啟動 httpd:" /bin/false
return $RETVAL
}
stop() {
$httpd -k stop >/dev/null 2>&1
# killproc httpd >/dev/null 2>&1
[ $? -eq 0 ] && action "停止 httpd:" /bin/true ||\
action "停止 httpd:" /bin/false
return $RETVAL
}
case "$1" in
start)
start #Call function start()
;;
stop)
stop
;;
restart)
sh $0 stop
sh $0 start
;;
*)
echo "Format error!"
echo $"Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
####################################### SCRIPT END
Postfix service 啟停指令碼
################################ Postfix service 啟停指令碼
#!/bin/bash -e
# chkconfig:35 53 55
# discription:postfix
start() {
echo "Starting postfix..."
postfix start &> /dev/null
echo "OK!"
}
stop() {
echo -n "stopping postfix..."
postfix stop &> /dev/null
echo "OK!"
}
reload() {
echo -n "Loading postfix configure file"
postfix reload &> /dev/null
echo "OK!"
}
status() {
postfix status &> /dev/null
if [ $? -eq 0 ]
then echo "running!"
else echo "stop!"
if
}
help() {
echo "syntax error!"
echo "Uasge:Is [start|stop|restart|reload|status]"
}
case $1 in
start)
$1
;;
stop)
$1
;;
restart)
stop
start
;;
reload)
$1
;;
status)
$1
;;
*)
help
;;
esac
################################SCRIPT END