Я понятия не имею, с чего начать поиски. Я читал о демонах и не понимал этой концепции.
Более подробная информация :
Я пишу поисковый робот, который никогда не останавливается и просматривает RSS в Интернете.
Искатель был написан на java - поэтому сейчас он представляет собой jar.
Я являюсь администратором на компьютере с Ubuntu 11.04.
Существует некоторая вероятность сбоя машины, поэтому я бы хотел, чтобы сканер запускался каждый раз, когда вы запускаете машину.
Кроме того, я бы хотел, чтобы он продолжал работать, даже когда я вышел из системы. Я не уверен, что это возможно, но большую часть времени я выхожу из системы, и я все еще хочу, чтобы он ползал.
Есть какие-нибудь идеи? Может кто-нибудь указать мне правильное направление?
Вот простой способ сделать это с помощью SysVInit. Инструкции:
Создайте сценарий запуска и остановки вашего приложения. Поместите его в какой-нибудь каталог, в нашем примере это:
Запуск скрипта: /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
Создайте следующий сценарий (myscript) и наденьте его на /etc/init.d.
Да! Это возможно. :) Выскочка это способ убедиться, что служба продолжает работать. Он состоит из пяти пакетов, все они установлены по умолчанию:
Запуск демона инициализации и утилиты initctl
upstart-logd предоставляет демон logd и файл определения задания для службы logd
upstart-compat-sysv предоставляет файлы определения заданий для задач rc и инструментов reboot, runlevel, shutdown и telinit, которые обеспечивают совместимость с SysVinit
startup-tasks предоставляет файлы определения заданий для задач запуска системы
system-services предоставляет файлы определения заданий для служб tty
Создать 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.
Процесс, выполняемый crond должно сохраняться между выходами из системы. Может быть, добавьте его в свой crontab.
Чтобы иметь разрешения 0755 и использовать или получить перед вашим .sh путь.Допустим, ваш сценарий включен /root/test.sh , вы должны сначала перейти на CD /root/ перед доступом test.sh.
Так что лучший способ - сделать SH в init.d и там изменить путь к вашему sh и выполните его в функции запуска.