Linux
從頭開始的 Debian 初始化腳本
我正在嘗試為 Debian / Ubuntu 的 SCST iSCSI 目標軟體編寫一個初始化腳本。下載中的目前版本不起作用,並且似乎可以在 SuSE 和其他系統上執行。
這是我到目前為止所擁有的,但我是基於我對初始化腳本和大量Google搜尋的有限了解。
我只是想知道我是否在想這個,每次停止腳本時是否需要解除安裝模組。啟動時不載入模組,我知道我需要啟動 iscsi 守護程序並載入配置。
任何幫助,將不勝感激。
#!/bin/sh DAEMON=/usr/local/sbin/iscsi-scstd PIDFILE=/var/run/iscsi-scstd.pid CONFIG=/etc/scst/scst.conf case "$1" in start) echo "Starting SCST iSCSI target service: " modprobe scst modprobe scst_vdisk modprobe iscsi_scst start-stop-daemon --start --quiet --exec $DAEMON scstadmin -config $CONFIG $RETVAL=$? if [ $RETVAL == "0" ]; then echo -n "Success" fi ;; stop) echo "Stopping SCST iSCSI target service: " modprobe -r scst modprobe -r scst_vdisk modprobe -r iscsi_scst start-stop-daemon --stop --quiet --exec $DAEMON --pidfile $PIDFILE $RETVAL=$? if [ $RETVAL == "3" ]; then echo -n "Success" fi if [ $RETVAL == "1" ]; then rm -f $PIDFILE echo -n "Success" fi ;; restart) echo "Stopping SCST iSCSI target service: " modprobe -r scst modprobe -r scst_vdisk modprobe -r iscsi_scst start-stop-daemon --stop --quiet --exec $DAEMON --pidfile $PIDFILE sleep 2 echo "Stopping SCST iSCSI target service: " modprobe scst modprobe scst_vdisk modprobe iscsi_scst start-stop-daemon --start --quiet --exec $DAEMON scstadmin -config $CONFIG ;; status) $RETVAL=$? if [ $RETVAL == "0" ]; then echo -n "SCST iSCSI target service is running" fi if [ $RETVAL == "3" ]; then echo -n "SCST iSCSI target service is not running" fi if [ $RETVAL == "4" ]; then echo -n "SCST iSCSI target service is unknown" fi *) echo "Usage: /etc/init.d/scst {start|stop|restart}" exit 1 esac exit 0
實際上,我最終找到了我在舊的 Ubuntu PPA 中為我的 iSCSI 目標尋找的東西。所以這個問題幾乎沒有實際意義。
Debian Squeeze 正在轉向基於依賴關係的 init 腳本排序,而不是按順序對腳本進行編號。如果您想使用它,您需要在腳本中添加特殊註釋以供
insserv
(update-rc.d
替換)使用。在 Debian 的 wiki 上有一個編寫“正確”初始化腳本的指南。
Ubuntu 已經
upstart
替換了 init,但保留了一個 init 兼容系統,因此您按照 Debian 的規則編寫的 init 腳本應該在 Ubuntu 中正常工作。否則,您可以編寫一個 upstart 服務文件(Ubuntu 的 wiki 上給出了一個太基本的滿足您需要的範例)至於其餘部分,可能不需要解除安裝模組(並且並非總是可能)。如果您確實解除安裝了模組,我會假設它們需要在服務停止後解除安裝。如果稍後啟動的模組依賴於較早啟動的模組,您可能還需要顛倒解除安裝模組的順序。根據守護程序從“啟動”到“準備好將配置載入到其中”的速度,您可能需要
sleep 1
在其中執行scstadmin
(或者您可能不需要。只是需要注意它失敗了。)