Запустить sh-файл при загрузке компьютера

Запустить sh-файл при загрузке компьютера

Я новичок в Linux и хочу узнать, что нужно сделать, чтобы запустить файл .sh при запуске машины. В общем, у меня есть серверная машина с ОС Linux, и я хочу запустить какое-нибудь приложение jboss, когда система перезагружается/падает

Я добавил S99jBossServersв rc2.d ссылку /etc/rc.d/init.d/jBossServers.shи дал полное разрешение (777)jBossServers.sh

содержание jBossServers.shследующее

#!/bin/sh
#
# chkconfig: 2345 80 30 
# description: 
#

RETVAL=0

start () {
    /root/batch/startSikkimCA.sh
    /root/batch/startSikkimSp.sh
}

stop () {
    /root/batch/stopSikkimCA.sh
    /root/batch/stopSikkimSp.sh
    RETVAL=$?
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        start
        ;;
    *)
        start
;;
        RETVAL=$?
esac
exit $RETVAL

Я не уверен, правильно это или нет, но в статье упоминаются 2 пути.

старт() и стоп()

все верно, но приложение все равно не запускается при перезагрузке компьютера.

решение1

Посмотри нав этомкоторый является традиционным стартером процесса и запускает скрипты в /etc/init.d, /etc/rc1.dи т. д. и /etc/rc.local, что, вероятно, является тем местом, которое вам нужно.

Некоторые дистрибутивы используютвыскочкавместо этого - если так, посмотрите документацию по этому поводу.

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

решение2

Попробуйте проверить, запускаются ли ваши скрипты (например, но вставляются touch /var/tmp/startup.scriptв них). Все ли команды в ваших скриптах находятся в search-patch во время загрузки?

Runlevel 2 выглядит для меня необычно. 3 должен быть нормальным для Linux без GUI. Какой дистрибутив и версию вы используете?

решение3

В /etc/inittabищите строку типа id:3:initdefault:. Число, вероятно, будет 3 или 5, но может быть 2 или 4. Число в этой строке — это уровень запуска по умолчанию. Скорее всего, это не 2, поэтому ваши скрипты в rc2.d не будут работать.

Поместите свой скрипт в каталог rcN.d, соответствующий номеру в initdefaultстроке.

В принципе, rc.local — лучший выбор, но rc.local так сильно различается от дистрибутива к дистрибутиву (иногда это каталог, иногда это скрипт, иногда он вообще не настроен), что, не зная вашего дистрибутива, проще просто поместить его в правильный уровень выполнения. Вы можете попробовать man rc.localи посмотреть, что это говорит о вашей системе. Если ваша система поддерживает rc.local как directroy, то поместите туда свой скрипт и не беспокойтесь об уровнях выполнения.

Кроме того, убедитесь, что ваш скрипт принадлежит пользователю root и имеет права 755 (если вы хотите, чтобы любой желающий мог его запустить) или 744.

решение4

Добавление скрипта запуска

Этот метод работает с Red Hat, Fedora, Ubuntu (установите пакет chkconfig и службу), Suse.

Вам следует скопировать ваш скрипт в /etc/init.d (это либо правильный каталог, либо ссылка на правильный каталог, поэтому он будет работать одинаково)

sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh

Затем вам нужно добавить его в процесс запуска системы. Вместо создания всех необходимых ссылок используйте chkconfig (сначала установите пакет в Ubuntu)

sudo chkconfig add jBossServers.sh

Теперь, читая заголовок вашего скрипта, этот скрипт уже имеет информацию для chkconfig относительно уровней запуска и приоритета. Так что все в порядке. В следующий раз, когда вы перезагрузитесь, JBoos будет запущен.

Но вы можете попробовать начать прямо сейчас.

sudo service jBossServers.sh start

Примечание: если ваша система жалуется, что не находит chkconfig или службу, попробуйте вызвать их с /sbin/ перед этим. Пример

sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start

Связанный контент