从头开始的Debian初始化脚本

我正在尝试为Debian / Ubuntu的SCST iSCSI目标软件编写一个初始化脚本。 目前的下载不起作用,似乎配备SuSE和其他工作。

这是我迄今为止,但我基于这一点,我有限的初始化脚本知识和大量的谷歌search。

我只是想知道如果我在想这个,我是否需要卸载模块,每当我停止脚本。 在启动时不加载的模块,我知道我需要启动iscsi守护进程并加载configuration。

任何帮助,将不胜感激。

#!/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 

实际上,我终于find了我正在为我的iSCSI目标在旧的Ubuntu PPA中寻找的东西。 所以这个问题几乎没有意义。

Debian Squeeze正在转向基于依赖关系的init脚本sorting,而不是顺序编写脚本。 如果你想使用它,你需要在脚本中为insservupdate-rc.dreplace)提供特殊的注释。

Debian的wiki上有一个指导你写一个“正确”的init脚本。

Ubuntu已经与upstart取代了init,但是已经存在一个init兼容性系统,所以你在Debian的规则下编写的初始化脚本应该在Ubuntu中正常工作。 否则,你可以编写一个新贵的服务文件(Ubuntu的维基上给出了一个太基础的需要的例子)

至于其他方面,卸载模块可能是没有必要的(并不总是可能的)。 如果你卸载模块,我会假设他们需要在服务停止后被卸载。 如果稍后启动的模块取决于之前启动的模块,则可能还需要反转卸载模块的顺序。 根据守护进程从“启动”到“准备好加载configuration”的速度有多快,在运行scstadmin之前,您可能需要sleep 1 (或者您可能不需要,只需注意它就会失败)。

查看/etc/init.d/skeleton作为例子。 这应该在Ubuntu主机上。