我已根据this guide创建了以下init.d脚本,该脚本旨在在启动时启动this branch of 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
运行此脚本,这将使其按预期方式运行,并运行realmd.sh和mangosd.sh,如下所示。
realmd.sh:
#!/bin/sh
# /usr/local/sbin/realmd.sh
/home/rebirth/MaNGOS/bin/realmd &
mangosd.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脚本仍然可以按预期运行。
我查看了以下与该问题有关的帖子:
Init.d script to start Hudson doesn't run at boot on Ubuntu
debian init.d script not running after reboot
两者均未提供解决方案,但是后者确实提供了我没有尝试过的另一条命令sudo update-rc.d mangosd defaults
。不幸的是,运行此命令并重新启动后,realmd
和mangosd
在引导时仍未自动运行。
如果有人有任何建议,或者能够为我指出正确的方向,我将非常感谢。非常感谢你!
答案 0 :(得分:0)
您可以在debian上的/etc/init.d/目录中检查一个名为skeleton的文件,该文件应该可以帮助人们开始使用定制的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 Wiki:https://wiki.debian.org/LSBInitScripts/