首页 > 解决方案 > Debian 8.11 init.d 脚本不会在启动时运行

问题描述

我根据本指南创建了以下 init.d 脚本,旨在在启动时启动MaNGOS 的这个分支

#!/bin/sh
### BEGIN INIT INFO
# Provides: mangosd
# Should-Start: console-screen dbus network-manager
# Required-Start: $all
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start mangosd at boot time
### END INIT INFO
#

set -e

/lib/lsb/init-functions

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin

SCRIPT="/usr/local/sbin/realmd.sh"
SCRIPT2="/usr/local/sbin/mangosd.sh"
PROGRAMNAME="realmd"
PROGRAMNAME2="mangosd"
case "$1" in
start)
     $SCRIPT
     $SCRIPT2
     ;;
stop)
     pkill $PROGRAMNAME
     pkill $PROGRAMNAME2
     ;;
esac

exit 0

我可以使用 运行此脚本sudo /etc/init.d/mangosd start,这将使其按预期工作,运行 reald.sh 和 mangosd.sh,如下所示。

领域.sh:

 #!/bin/sh
 # /usr/local/sbin/realmd.sh

 /home/rebirth/MaNGOS/bin/realmd &

芒果.sh:

 #!/bin/sh
 # /usr/local/sbin/mangosd.sh

 cd /home/rebirth/MaNGOS/bin
 ./mangosd &

这三个文件都具有相同的权限,如下所示:

 -rwxr-xr-x 1 root root 80 Sep  2 20:33 /usr/local/sbin/mangosd.sh

realmd然后程序mangosd将按预期运行。根据指南,我已经运行sudo insserv mangosd并验证了启动文件是否已创建:

 $ ls -la /etc/rc2.d/S04mangosd
 lrwxrwxrwx 1 root root 17 Sep  2 18:00 /etc/rc2.d/S04mangosd -> ../init.d/mangosd

我跑了sudo reboot,也realmd没有mangosd在启动时自动启动。此时手动运行 init.d 脚本仍然可以按预期工作。

我查看了以下与此问题相关的帖子:

启动 Hudson 的 Init.d 脚本不会在 Ubuntu 上启动时运行

debian init.d 脚本在重新启动后未运行

两者都没有提供解决方案,但是后者确实有另一个我没有尝试过的命令,sudo update-rc.d mangosd defaults. 不幸的是,运行此命令并重新启动后,realmd仍然mangosd没有在启动时自动运行。

如果有人有任何建议,或者能够指出我正确的方向,我将非常感激。非常感谢!

标签: startupinit.ddebian-jessie

解决方案


您可以在 debian 上查看名为骨架的文件,该文件位于目录 /etc/init.d/ 中,该文件旨在帮助人们开始使用自定义 init.d 服务。

此行不是强制性的,您可以将其删除:

# Should-Start: console-screen dbus network-manager

代替 :

 /lib/lsb/init-functions

. /lib/lsb/init-functions

你也应该删除:

set -e

如果它不起作用,您可以尝试将默认设置 required-start 设置为此:

# Required-Start: $remote_fs $syslog

所以最终文件可以是:(未测试)

#!/bin/sh
### BEGIN INIT INFO
# Provides: mangosd
# 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 mangosd at boot time
### END INIT INFO
#

. /lib/lsb/init-functions

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin

SCRIPT="/usr/local/sbin/realmd.sh"
SCRIPT2="/usr/local/sbin/mangosd.sh"
PROGRAMNAME="realmd"
PROGRAMNAME2="mangosd"
case "$1" in
start)
     $SCRIPT
     $SCRIPT2
     ;;
stop)
     pkill $PROGRAMNAME
     pkill $PROGRAMNAME2
     ;;
esac

exit 0

这些链接可以帮助您:

Debian 维基:https ://wiki.debian.org/LSBInitScripts/

初始化脚本示例:https ://gist.github.com/gsf/6222405

另一个例子:https ://gist.github.com/wallyqs/c96d56e735c74ee4cc1f


推荐阅读