Скрипт-автоподнималка упавшего сервера. Bash, screen, и прочие радости

Ситуация:
Есть сервер на Java, который время от времени падает (т.к. на VDS ему иногда не хватает памяти), но в целом выполняет свою задачу. Есть скрипт, которым я пытаюсь сделать проверку, работает ли сервер, и если не работает - запустить.
#!/bin/bash
echo "Server auto up script, Ctrl+C to stop keeping server up.";
while true
do
	sleep 3
	ps cax | grep java > /dev/null
  if [ $? = "1" ]
      then 
        echo 'Server restarting right now!'
        screen -dmS Server "java -jar /path/to/server.jar -Xmx512M -Xms64M -server"
  fi
done

Знаю, что таким макаром среагирует на любую другую java-программу - может и тут подскажете решение получше?
Для чего screen? Чтобы можно было подключится по ssh, выполнить некоторые профилактические команды, глянуть текущую статистику. Иначе было бы проще:
java -jar /path/to/server.jar -Xmx512M -Xms64M -server &

Проблема:
screen не создается. Аналогичная команда, например
screen -dmS Server "sleep 30"
screen создает и ждет 30 секунд, как и положено. Что интересно,
screen -dmS Server "sleep 30 && echo CLUSTERFUCK"
уже не работает, в списке от screen -ls новой сессии нет.
В общем, помогите разобраться. Заранее спасибо.
  • Вопрос задан
  • 2930 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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