Как сделать файл jar запускать при запуске & amp; и когда вы выходите из системы?

Я не знаю, с чего начать смотреть. Я читал о демонах и не понял понятия.

Подробнее:

  • Я пишу сканер, который никогда не останавливается, и сканеры через RSS в Интернет.
  • Искатель был написан в java - поэтому его jar прямо сейчас.
  • Я администратор на машине с Ubuntu 11.04.
  • Есть вероятность того, что машина потерпит крах, поэтому я хотел бы, чтобы сканер запускался каждый раз при запуске машины.
  • Кроме того, мне бы хотелось, чтобы он продолжал работать, даже когда я вышел из системы , Я не уверен, что это возможно, но большую часть времени я выхожу из системы, и я все еще хочу, чтобы он сканировал.

Любые идеи? Может ли кто-нибудь указать мне в правильном направлении?

Просто искать самое простое решение.

27
задан 2 February 2012 в 05:01

9 ответов

Вот простой способ сделать это с помощью SysVInit. Инструкции:

Создайте сценарий начала и остановки вашего приложения. Поместите его в какой-то каталог, в нашем примере: Start Script: /usr/local/bin/myapp-start.sh Stop Script: /usr/local/bin/myapp-stop.sh Каждый из них предоставит инструкции для запуска / остановки приложения. Например, содержимое myapp-start.sh может быть таким простым, как следующее:
#!/bin/bash

java -jar myapp.jar 
Для сценария остановки это может быть примерно так:
#!/bin/bash
# Grabs and kill a process from the pidlist that has the word myapp

pid=`ps aux | grep myapp | awk '{print $2}'`
kill -9 $pid
Создайте следующий скрипт (myscript) и поместите его на /etc/init.d. /etc/init.d/myscript content:
#!/bin/bash
# MyApp
#
# description: bla bla

case $1 in
    start)
        /bin/bash /usr/local/bin/myapp-start.sh
    ;;
    stop)
        /bin/bash /usr/local/bin/myapp-stop.sh
    ;;
    restart)
        /bin/bash /usr/local/bin/myapp-stop.sh
        /bin/bash /usr/local/bin/myapp-start.sh
    ;;
esac
exit 0
Положите скрипт на работу с системой (используя SysV). Просто запустите следующую команду (с правами root):
update-rc.d myscript defaults 

PS: Я знаю, что Upstart отличная и бла-бла, но я предпочитаю старую систему SysV init.

30
ответ дан 25 May 2018 в 14:48
  • 1
    Но как система узнает, какой параметр будет использовать? Как установить «начало». Пробовал здесь, и это не сработало. – John John Pichler 20 March 2015 в 00:05
  • 2
    Это работает, но команда & service service myapp start " не выходите из команды. – Tobia 22 June 2015 в 11:46
  • 3
    Теперь как использовать параметры start | stop | restart в myscript? – Codevalley 29 July 2015 в 13:21
  • 4
    Кроме того, даже после выполнения 3 шагов моя банка не запускается при запуске. Вы уверены, что нам нужно изменить разрешения или путь или что-то в этом роде? – Codevalley 29 July 2015 в 13:26
  • 5
    @Codevalley, как я уже упоминал, этот метод предназначен для SysV init. Чтобы использовать сервис или другую команду, вам нужно написать выскочку. Но если вы собираетесь это сделать, вы должны написать системный (поскольку он становится стандартным) – Marcos Roriz Junior 31 October 2015 в 00:29
Да! Возможно. :) Upstart - это способ пойти, чтобы убедиться, что сервис остается включенным. У него есть пять пакетов, все из которых установлены по умолчанию:

. Демон initstart init и утилита initctl upstart-logd предоставляет демона logd и файл определения заданий для службы logd. Upstart-compat-sysv предоставляет файлы определения заданий для задач rc и инструменты перезагрузки, запуска, выключения и telinit, обеспечивающие совместимость с задачами запуска SysVinit, предоставляют файлы определения заданий для системных задач запуска. Системные службы предоставляют файлы определения заданий для служб tty

. Обучение очень приятное и хорошо стоит. У Upstart есть веб-сайт: http://upstart.ubuntu.com/

6
ответ дан 25 May 2018 в 14:48

3 быстрых предложения ...

Создайте сценарий запуска в режиме /etc/rc3.d (режим многопользовательской консоли) с соответствующими сценариями Kill в /etc/rc.0 и /etc/rc6.d, чтобы убить вашу Java-программу контролируемым образом когда система отключается (уровень рунинга 0) или перезагружается (уровень запуска 6) См. Знакомство с уровнями Runlevels. Возможно, вы сможете запустить приложение Java на уровне выполнения 2 (rc2.d), но в качестве искателя ему потребуется TCP / IP. Поэтому убедитесь, что ваш сетевой сервис доступен / запущен на вашем уровне запуска 2 заранее. Сеть определенно находится на уровне выполнения 3. /etc/init.d содержит все фактические сценарии запуска / уничтожения. /etc/rcN.d каталоги содержат только ссылки на них, с префиксом S или K, чтобы начать или убить их соответственно, на уровень выполнения N. Процесс, выполняемый crond, должен сохраняться между выходами. Возможно, добавьте его в свой кронтаб. Процесс, выполняемый с nohup, также должен сохраняться. См. Nohup: выполните команду даже после выхода из системы.
$ nohup java -jar myapp.jar &
По умолчанию стандартный вывод myapp.jar будет идти в файл с именем ./nohup.out или $HOME/nohup.out, если первый не может быть записан.
2
ответ дан 25 May 2018 в 14:48
  • 1
    И когда я выйду из системы, он все равно будет работать на фоне? – RanZilber 29 January 2012 в 15:59

Также имейте в виду, когда делаете ссылки с помощью:

  update-rc.d myscript defaults 

Чтобы иметь разрешения 0755 и использовать или получить перед вашим .sh путь. Предположим, что ваш скрипт находится на /root/test.sh, сначала вы должны перейти на CD /root/ перед доступом к test.sh.

Так что лучше всего сделать SH на init.d и там изменить путь к вашему sh и выполнить его в функции запуска.

0
ответ дан 25 May 2018 в 14:48

Простые сценарии запуска с проверкой версии Java для автономного агента Linux и Windows auth-agent.bat

0
ответ дан 25 May 2018 в 14:48

Самый простой способ - использовать supervisord. Подробнее см. На странице http://supervisord.org/

. Вы также можете просмотреть более подробную информацию:

http://supervisord.org/

https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps

0
ответ дан 25 May 2018 в 14:48
Да! Возможно. :) Upstart - это способ пойти, чтобы убедиться, что сервис остается включенным. У него есть пять пакетов, все из которых установлены по умолчанию:

. Демон initstart init и утилита initctl upstart-logd предоставляет демона logd и файл определения заданий для службы logd. Upstart-compat-sysv предоставляет файлы определения заданий для задач rc и инструменты перезагрузки, запуска, выключения и telinit, обеспечивающие совместимость с задачами запуска SysVinit, предоставляют файлы определения заданий для системных задач запуска. Системные службы предоставляют файлы определения заданий для служб tty

. Обучение очень приятное и хорошо стоит. У Upstart есть веб-сайт: http://upstart.ubuntu.com/

6
ответ дан 25 May 2018 в 14:48
Да! Возможно. :) Upstart - это способ пойти, чтобы убедиться, что сервис остается включенным. У него есть пять пакетов, все из которых установлены по умолчанию:

. Демон initstart init и утилита initctl upstart-logd предоставляет демона logd и файл определения заданий для службы logd. Upstart-compat-sysv предоставляет файлы определения заданий для задач rc и инструменты перезагрузки, запуска, выключения и telinit, обеспечивающие совместимость с задачами запуска SysVinit, предоставляют файлы определения заданий для системных задач запуска. Системные службы предоставляют файлы определения заданий для служб tty

. Обучение очень приятное и хорошо стоит. У Upstart есть веб-сайт: http://upstart.ubuntu.com/

6
ответ дан 25 May 2018 в 14:48
Да! Возможно. :) Upstart - это способ пойти, чтобы убедиться, что сервис остается включенным. У него есть пять пакетов, все из которых установлены по умолчанию:

. Демон initstart init и утилита initctl upstart-logd предоставляет демона logd и файл определения заданий для службы logd. Upstart-compat-sysv предоставляет файлы определения заданий для задач rc и инструменты перезагрузки, запуска, выключения и telinit, обеспечивающие совместимость с задачами запуска SysVinit, предоставляют файлы определения заданий для системных задач запуска. Системные службы предоставляют файлы определения заданий для служб tty

. Обучение очень приятное и хорошо стоит. У Upstart есть веб-сайт: http://upstart.ubuntu.com/

6
ответ дан 25 May 2018 в 14:48

Другие вопросы по тегам:

Похожие вопросы: