Скрипт 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, что заставит его работать, как и ожидалось, запуская 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 по-прежнему не запускались автоматически при загрузке.

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


person AsanaWiosna    schedule 03.09.2018    source источник


Ответы (1)


Вы можете проверить в 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

person J. Garnier    schedule 27.09.2018