Скрипт Debian 8.11 init.d не запускается при запуске - PullRequest
0 голосов
/ 03 сентября 2018

Я создал следующий скрипт 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, что заставит его работать должным образом, запустив 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 для запуска Hudson не запускается при загрузке в Ubuntu

сценарий debian init.d не запускается после перезагрузки

Ни один из них не дал решения, однако у последнего была другая команда, которую я не пробовал, sudo update-rc.d mangosd defaults. К сожалению, после запуска этой команды и перезагрузки realmd и mangosd по-прежнему не запускались автоматически при загрузке.

Если у кого-нибудь есть какие-либо предложения или он может указать мне правильное направление, я был бы очень признателен. Большое спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете проверить в debian файл skeleton, расположенный в каталоге /etc/init.d/, который должен помочь людям начать работу с пользовательскими службами init.d.

Эта строка не обязательна, и вы можете удалить ее:

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

Заменить:

 /lib/lsb/init-functions

с

. /lib/lsb/init-functions

Вы должны удалить тоже:

set -e

Если это не работает, вы можете попробовать установить значения по умолчанию - начните со следующего:

# 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/

пример начертания: https://gist.github.com/gsf/6222405

другой пример: https://gist.github.com/wallyqs/c96d56e735c74ee4cc1f

...