Форум русскоязычного сообщества Ubuntu


Автор Тема: автостарт приложения в случае закрытия  (Прочитано 599 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн InterVi

  • Автор темы
  • Участник
  • *
  • Сообщений: 123
    • Просмотр профиля
    • мой код
Есть проблема: переодически вываливается майнкрафт-сервер, запущенный в screen. Соответственно, нужно чтобы он как-то сам запускался в случае закрытия. Нашел способ как сделать демона, но это не подходит т.к. он будет в фоновом режиме и тогда невозможно будет им управлять.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: автостарт приложения в случае закрытия
« Ответ #1 : 04 Июня 2013, 15:28:18 »
Код: (bash) [Выделить]
while : ; do ... ; done

Оффлайн InterVi

  • Автор темы
  • Участник
  • *
  • Сообщений: 123
    • Просмотр профиля
    • мой код
Re: автостарт приложения в случае закрытия
« Ответ #2 : 04 Июня 2013, 15:51:40 »
но что во while писать? [ ps -A | grep "java" = null ]?
while [ ps -A | grep "java" = null ]; do java -Xmx2000M -Xms2000M -jar /root/craftbukkit.jar nogui; doneэто правильный вариант?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: автостарт приложения в случае закрытия
« Ответ #3 : 04 Июня 2013, 15:54:46 »
но что во while писать?
Ничего, точнее достаточно ":".

Оффлайн InterVi

  • Автор темы
  • Участник
  • *
  • Сообщений: 123
    • Просмотр профиля
    • мой код
Re: автостарт приложения в случае закрытия
« Ответ #4 : 04 Июня 2013, 15:57:46 »
Но тогда появляется другая проблема - остановка сервера. Нужно вырубить его командой stop, но тогда цикл запустит его снова, с этим что делать?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: автостарт приложения в случае закрытия
« Ответ #5 : 04 Июня 2013, 16:01:59 »
Либо убивать в окне терминала по Ctrl+C, либо...

Какие коды возврата в случае штатного завершения и падения?
Посмотреть можно так:
java -Xmx2000M -Xms2000M -jar /root/craftbukkit.jar nogui ; echo $?

Оффлайн InterVi

  • Автор темы
  • Участник
  • *
  • Сообщений: 123
    • Просмотр профиля
    • мой код
Re: автостарт приложения в случае закрытия
« Ответ #6 : 04 Июня 2013, 16:10:17 »
При завершении выдает 0, а вот то самое падение проверить немогу. Пробовал провоцировать выделив 10мб памяти, тоже 0. И работает все с такой скоростью что CTRL+C не очень удобный и безопасный метод, успеть перед стартом сервера нереально, особенно когда ssh тормозит.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: автостарт приложения в случае закрытия
« Ответ #7 : 04 Июня 2013, 16:14:37 »
Короче, когда приложение завершается нормально, то обычно код возврата "0", что соответствует логическому значению "истина".
Если при падении будет что-то отличное от нуля, то можно сделать такую штуку:
Код: (bash) [Выделить]
while ! ... ; do : ; done

 

Страница сгенерирована за 0.043 секунд. Запросов: 25.