Как заставить файл банки работать на запуске и и когда Вы выходите из системы?

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

Больше деталей:

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

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

Просто поиск простого решения.

29
задан 2 February 2012 в 03:01

6 ответов

Также следует помнить при создании приложений с помощью:

  update-rc.d myscript defaults 

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

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

0
ответ дан 2 February 2012 в 03:01

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, если первый не доступен для записи.

0
ответ дан 2 February 2012 в 03:01

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

  • Выскочка init демон и initctl утилита
  • выскочка-logd предоставляет logd демону и файлу определения задания для logd сервиса
  • upstart-compat-sysv обеспечивает файлы определения задания для емкостно-резистивных задач и перезагрузки, runlevel, завершения работы и telinit инструментов, которые предоставляют совместимости с SysVinit
  • задачи запуска обеспечивают файлы определения задания для системных задач запуска
  • системные службы предоставляют файлы определения задания tty сервисам

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

6
ответ дан 2 February 2012 в 03:01

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

Можно также посмотреть больше деталей здесь:

Выполнение исполняемого файла банки, когда система запускается

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

0
ответ дан 2 February 2012 в 03:01

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

0
ответ дан 2 February 2012 в 03:01

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

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

    • Стартовый скрипт: /usr/local/bin/myapp-start.sh
    • Стоповый скрипт: /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
    
  2. Создайте следующий скрипт (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
    
  3. Поместите скрипт для запуска с системой (используя SysV). Просто запустите следующую команду ( от имени пользователя root ):

    update-rc.d myscript defaults 
    

PS: я знаю, что Upstart великолепен, но я предпочитаю старый SysV init система.

0
ответ дан 2 February 2012 в 03:01

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

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