1

У меня есть сценарий оболочки, который работает на jvm, он работает так, как я пишу: sh /opt/bin/myshel.sh Я добавил сценарий оболочки в /etc/inti.d со следующими подробностями:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          WSO2Services.sh
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

/opt/bin/myshel.sh

Я сохранил этот файл как «myShell.sh» в «/etc/init.d» и изменил его режим на исполняемый. И также я использовал sudo update-rc.d myShell.sh defaults для обновления файлов "rc * .d". Проблема в том, что он не работает при перезагрузке.

2 ответа2

1

Самый простой способ выполнить что-либо при загрузке - это поместить его в /etc/rc.local. Если вы хотите написать полный сценарий инициализации Sys V, вы, вероятно, захотите использовать один из существующих сценариев в качестве шаблона. Вы могли бы также хотеть рассмотреть использование выскочки.

1

Сначала проверьте файл /etc/inittab . Есть строка вроде id:2:initdefault поэтому она запускается на уровне выполнения 2 (в моем случае). Так что это начнется при загрузке: /etc/init.d/rc 2 . Таким образом, все сценарии, начинающиеся с S ## somename (# - десятичная цифра) в /etc/rc2.d будут выполняться. Это символические ссылки на скрипты в /etc/init.d .

Так что подобное должно быть сделано в вашем случае. Если ваш уровень запуска равен 2 создайте символическую ссылку в /etc/rc2.d/S##myshell.sh на сценарий в ../init.d/myshel.sh . Затем он будет работать во время загрузки. Имейте в виду, что сценарии с одинаковым уровнем сценария (две десятичные цифры после S) выполняются параллельно.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .