Запустите скрипт оболочки при запуске Ubuntu


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". Проблема в том, что он не работает при перезагрузке.

Ответы:


1

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


Я совершенно не могу понять, что вы говорите, я настоящий наивный!
Реза Амери

2
Добавьте /opt/bin/myshel.sh в /etc/rc.local и посмотрите, будет ли он выполнен после перезагрузки.

1
@RezaAmeri: Нет. Просто добавьте строку в конец скрипта rc.local, чтобы вызвать ваш scipt ( /opt/bin/myshell.sh).
TrueY

1
@TrueY ты имеешь в виду после выхода 0? Или после комментариев и до выхода 0? Или, может быть, я должен удалить выход 0 и добавить /opt/bin/myshell.sh? Спасибо за помощь.
Реза Амери

1
@RezaAmeri: у меня нет exit 0, но, конечно, до этого.
Правда

1

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

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

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


2
Вот что update-rc.d [name] defaultsделает
Гленн Джекман

@glennjackman: я этого не знал. Спасибо!
Правда

Моя проблема - это как раз скелет файлов в init.d. Я хочу создать файл в init.d, который запускает мою оболочку и имеет стандартный скелет.
Реза Амери
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.