Поддерживайте работоспособность приложения и, если оно падает, перезапустите его.Ubuntu 16 - PullRequest
1 голос
/ 27 сентября 2019

1-е сообщение:

Я работаю на сервере Ubuntu 16.В основном у меня запущено приложение.Я использую Plesk, WinSCP и PuTTY для управления сервером, файлами и для запуска этого приложения.Это приложение .jar, которое я выделяю ОЗУ и запускаю.

В этом приложении есть консоль, с которой я запускаю экран в PuTTY.Если приложение падает, мне нужно перейти на этот экран и снова запустить строку, которая выделяет ОЗУ, и снова запустить приложение.


Так вот мой вопрос:

Не могли бы вы помочь мне понять, является ли написанный мной скрипт неправильным или его можно улучшить / оптимизировать?

Предполагается, что в случае сбоя приложения оно автоматически запускается через несколько секунд.Если экран не найден из-за того, что он был выключен, его необходимо сделать заново, чтобы приложение снова запустилось.Если также происходит сбой слишком много раз, то я не знаю, было бы неплохо поместить какой-нибудь код, чтобы предотвратить постоянный перезапуск чего-либо, что каждый раз будет зависать, на случай, если он запускает цикл сбоев.

Это приложение, конечно, находится в каталоге ftp, и я предполагаю, что некоторым частям кода, из того, что я раскрыл, потребуется путь к каталогу / rute (C: / ftpRoot / mainFolder / anotherFolder / appFolder) .

Если мне нужно дать вам дополнительную информацию, просто скажите мне, и я с радостью это сделаю.

Заранее благодарю всех.


Вот у меня на данный момент:

for session in $(screen -ls | grep -o '[0-9]\{3,\}\.\S*')
    do
        screen -r DedicatedScreen -p0 -X stuff "&9Server is restarting. \015"
        screen -r DedicatedScreen -p0 -X stuff "stop\015" #Send "stop\r" to the RunningApp console.
    done

counter=0
while [ $(screen -ls | grep -c 'No Sockets foun in') -lt 1 ]; do
    if [ $(( $counter % 10)) -eq 0 ]; then
        echo 'A previous server is in use. Waiting for 10 seconds before starting server ...'
    fi

    sleep 1
    counter=$((counter+1))
done

echo 'Starting Application...'

    screen -dmS "DedicatedScreen" java -Xms1024M -Xmx7168M -jar custom_f.jar
    sleep 1
    while [ $(screen -ls | grep -c 'No Sokets found in') -ge 1 ]; do
        sleep 5
        screen -dmS "DedicatedScreen" java -Xms1024M -Xmx7168M -jar custom_f.jar
    done

echo 'Application started.'
...