ian*_*215 5 linux ubuntu debian init.d
我正在尝试为 Debian / Ubuntu 的 SCST iSCSI 目标软件编写一个初始化脚本。下载中的当前版本不起作用,似乎可以在 SuSE 和其他设备上运行。
这是我到目前为止所拥有的,但我基于我对 init 脚本和大量谷歌搜索的有限知识。
我只是想知道我是否想多了,每次停止脚本时是否都需要卸载模块。启动时没有加载的模块,我知道我需要启动 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
Run Code Online (Sandbox Code Playgroud)
实际上,我最终在旧的 Ubuntu PPA 中为我的 iSCSI 目标找到了我正在寻找的东西。所以这个问题几乎没有实际意义。
Debian Squeeze 正在转向基于依赖关系的初始化脚本排序,而不是按顺序对脚本进行编号。如果您想使用此功能,则需要在脚本中添加特殊注释以供insserv(update-rc.d替换)使用。
在Debian 的 wiki 上有一个编写“正确的”初始化脚本的指南。
Ubuntu 已经取代了upstartinit,但保留了 init 兼容系统,因此您按照 Debian 规则编写的 init 脚本应该可以在 Ubuntu 中正常工作。否则,您可以编写一个新贵服务文件(Ubuntu 的 wiki上给出了一个太基本的适合您需求的示例)
至于其余的,卸载模块可能没有必要(而且并不总是可能)。如果您确实卸载了模块,我认为它们需要在服务停止后卸载。如果稍后启动的模块依赖于较早启动的模块,您可能还需要颠倒卸载模块的顺序。根据守护进程从“启动”到“准备好将配置加载到其中”的速度,您可能需要在sleep 1运行之前在其中scstadmin(或者您可能不需要。只是需要注意它会失败。)
| 归档时间: |
|
| 查看次数: |
2893 次 |
| 最近记录: |