Как заставить jar-файл запускаться при запуске и выходе из системы?

Я понятия не имею, с чего начать поиски. Я читал о демонах и не понимал этой концепции.

Более подробная информация :

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

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

Просто ищу самое простое решение.

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок

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

  1. Создайте сценарий запуска и остановки вашего приложения. Поместите его в какой-нибудь каталог, в нашем примере это:

    • Запуск скрипта: /usr/local/bin/myapp-start.sh
    • Остановить сценарий: /usr/local/bin/myapp-stop.sh

    Каждый из них будет содержать инструкции по запуску / остановке приложения. Например, в myapp-start.sh содержание может быть таким же простым, как следующее:

    #!/bin/bashjava -jar myapp.jar 

    Для сценария остановки это может быть что-то вроде этого:

    #!/bin/bash# Grabs and kill a process from the pidlist that has the word myapppid=`ps aux | grep myapp | awk '{print $2}'`kill -9 $pid
  2. Создайте следующий сценарий (myscript) и наденьте его на /etc/init.d.

    /etc/init.d/myscript содержание:

    #!/bin/bash# MyApp## description: bla blacase $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    ;;esacexit 0
  3. Поместите скрипт для запуска в системе (используя SysV). Просто выполните следующую команду (как корень):

    update-rc.d myscript defaults 

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

Да! Это возможно. :) Выскочка это способ убедиться, что служба продолжает работать. Он состоит из пяти пакетов, все они установлены по умолчанию:

  • Запуск демона инициализации и утилиты initctl
  • upstart-logd предоставляет демон logd и файл определения задания для службы logd
  • upstart-compat-sysv предоставляет файлы определения заданий для задач rc и инструментов reboot, runlevel, shutdown и telinit, которые обеспечивают совместимость с SysVinit
  • startup-tasks предоставляет файлы определения заданий для задач запуска системы
  • system-services предоставляет файлы определения заданий для служб tty

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

3 кратких предложения...

  1. Создать Sсценарий пирога в /etc/rc3.d (многопользовательский консольный режим) с соответствующим Kплохие сценарии в /etc/rc.0 и /etc/rc6.d чтобы отключить вашу Java-программу контролируемым образом при выключении системы (уровень выполнения 0) или перезагрузке (уровень выполнения 6), см. Введение в уровни выполнения.

    Возможно, вы сможете запустить свое Java-приложение на уровне выполнения 2 (rc2.d), но в качестве сканера ему потребуется TCP/IP. Поэтому заранее убедитесь, что ваша сетевая служба доступна / запущена на вашем уровне выполнения 2. Сетевое взаимодействие определенно находится на уровне выполнения 3.

    /etc/init.d содержит все фактические сценарии запуска / завершения. /etc/rcN.d каталоги просто содержат ссылки на них с префиксом S или K для запуска или завершения их соответственно, для каждого уровня выполнения N.

  2. Процесс, выполняемый crond должно сохраняться между выходами из системы. Может быть, добавьте его в свой crontab.

  3. Процесс, выполняемый с nohup также должны сохраняться. Видеть nohup: выполните команду даже после выхода из системы.

    $ nohup java -jar myapp.jar &

    По умолчанию, myapp.jarстандартный вывод будет отправлен в файл с именем ./nohup.out, или $HOME/nohup.out если первое невозможно записать.

Также будьте внимательны при подаче заявок с:

  update-rc.d myscript defaults 

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

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

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

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

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

Запуск исполняемого файла jar при запуске системы

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