Я новичок в 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