linux – Debian init脚本从头开始

前端之家收集整理的这篇文章主要介绍了linux – Debian init脚本从头开始前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为Debian / Ubuntu编写SCST iSCSI目标软件的init脚本.下载中的当前版本不起作用,似乎适合在SuSE和其他人上工作.

这是我到目前为止所做的,但我的基础是我对初始脚本和大量谷歌搜索的有限知识.

我只是想知道我是否在考虑这个问题,每次停止脚本时我是否需要卸载模块.启动时无负载的模块,我知道我需要启动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 here上有一个编写“正确”的init脚本的指南.

Ubuntu已经用upstart取代了init,但是已经保留了一个init兼容系统,所以你按照Debian规则编写的init脚本应该在Ubuntu中正常工作.否则,您可以编写一个upstart服务文件(在Ubuntu的wiki here上给出了一个基本的 – 用于您需要的示例)

至于其余部分,可能不需要卸载模块(并且不总是可行).如果你卸载模块,我会假设它们需要在服务停止后卸载.如果稍后启动的模块取决于先前启动的模块,您可能还需要反转卸载模块的顺序.根据守护进程从“已启动”到“准备好将配置加载到其中”的速度,您可能需要在运行scstadmin之前进行一次休眠1(或者您可能没有.只是要知道它失败了.)

猜你在找的Linux相关文章