我试图让 Chandler 在用户 'chandler' 下在启动时在 debian 机器上运行,并尝试了以下脚本,将其定位在 init.d 中:
#! /bin/sh
#
# /etc/init.d/chandler
#
RETVAL=$?
CHANDLER_HOME="/chandler"
# check input
case "$1" in
start)
if [ -f $CHANDLER_HOME/bin/osafsrvctl ];
then
/bin/su chandler $CHANDLER_HOME/bin/osafsrvctl start
fi
;;
stop)
if [ -f $CHANDLER_HOME/bin/osafsrvctl ];
then
/bin/su chandler $CHANDLER_HOME/bin/osafsrvctl stop
fi
;;
*)
echo "Usage: /etc/init.d/osafsrvctl {start|stop}"
exit 1
;;
esac
exit $RETVAL
然后我跑了:
update-rc.d chandler defaults
我已经检查过 init.d 中的启动脚本有 755 权限......但没有任何效果。
我是否忽略了这里一些明显的东西?
谢谢您的指点。
更新:根据以下建议,这是我添加到脚本中的初始化标头:
### BEGIN INIT INFO
# Provides: chandler
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop chandler server
### END INIT INFO
答案1
查看中的其他脚本/etc/init.d
,您应该会看到一个与以下示例类似的 LSB 标头注释块fetchmail
:
### BEGIN INIT INFO
# Provides: fetchmail
# Required-Start: $network $local_fs $remote_fs
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: init-Script for system wide fetchmail daemon
### END INIT INFO
需要这种类型的块。
从man update-rc.d
:
update-rc.d 有两种将脚本安装到启动顺序的操作模式。一种是使用命令行参数来决定顺序和运行级别配置的传统模式,另一种是使用 init.d 脚本 LSB 注释标头中的依赖项和运行级别信息的默认模式。此类标头必须存在于 init.d 脚本中。有关 LSB 标头格式的详细信息,请参阅 insserv(8) 手册页。