informix 資料庫啟動關閉指令碼

tonykorn97發表於2009-04-09

編寫啟動指令碼容易出現的兩個問題:

一般情況下,我們會在/etc/init.d/下面寫一個指令碼,大概如下:

[@more@]

#!/bin/bash

case "$1" in
start)

echo "Starting Informix Database Server..."
su - informix -c "oninit " >/dev/null 2>/dev/null
wait $!
sleep 6
;;
stop)
echo "Shutting Informix Database Server ..."
su - informix -c "onmode -ky" >/dev/null 2>/dev/null
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac


然後用chmod +x 讓這個檔案可以執行,接著再ln -s 到 /etc/rc.d/rc0.d/K01指令碼名 與 /etc/rc.d/rc6.d/K01指令碼名,同時也要 ln -s 到 /etc/rc.d/rc3.d/S99指令碼名 與/etc/rc.d/rc5.d/S99指令碼名

但是會有2個問題不方便:
1,不能用chkconfig --add 來新增這個服務。
2,關機或者重起的時候stop選項不起作用。

解決辦法:
1,為了可以用chkconfig --add 來新增這個服務,在指令碼里面新增:
# chkconfig: - 99 01
# description: autostart informix server

2,關機或者重起的時候stop選項不起作用。
執行K指令碼的時候會查詢/var/lock/subsys/下是否有與K開頭指令碼同名的空檔名,如果沒有就不去執行,所以要按照伺服器指令碼編寫的規範,啟動的時候要在/var/lock/subsys/先touch一個與K01後面同名的空檔案.同時也要呼叫/etc/rc.d/init.d/functions能夠接受star與stop命令訊號,

最後的指令碼就是如下所示:

#!/bin/bash
# chkconfig: - 99 01
# description: autostart informix server

# Source function library.
. /etc/init.d/functions

case "$1" in
start)

echo "Starting Informix Database Server..."
su - informix -c "oninit " >/dev/null 2>/dev/null
wait $!
sleep 6
touch /var/lock/subsys/autostart
;;
stop)
echo "Shutting Informix Database Server ..."
su - informix -c "onmode -ky" >>"$LOGPATH"autostart.log 2>&1
rm -rf /var/lock/subsys/autostart
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-1020235/,如需轉載,請註明出處,否則將追究法律責任。

相關文章