首页 > 解决方案 > 保持应用程序运行,如果它崩溃,请重新启动它。Ubuntu 16

问题描述

第一篇文章:

我正在运行 Ubuntu 16 服务器。主要是我有一个应用程序正在运行。我使用 Plesk、WinSCP 和 PuTTY 来管理服务器、文件并运行这个应用程序。该应用程序是一个 .jar,我分配 RAM 并运行它。

这个应用程序有一个控制台,我在 PuTTY 上遇到了一个屏幕。如果应用程序崩溃,我需要进入该屏幕并再次运行分配 RAM 的行并再次启动应用程序。


所以这是我的问题:

你能帮我看看我写的脚本是错误的还是可以更好/优化的?

目的是如果应用程序崩溃,它会在几秒钟后自动启动。如果由于关闭而找不到屏幕,则必须重新制作屏幕,然后重新启动应用程序。如果它也崩溃了太多次,那么我不知道是否可以放置某种代码来防止一直重启一些每次都会崩溃的东西,以防它启动一个崩溃循环。

这个应用程序当然位于 ftp 的目录中,我猜我公开的某些代码部分需要目录 path/rute (C:/ftpRoot/mainFolder/anotherFolder/appFolder)

如果我需要给你任何额外的信息,请告诉我,我很乐意。

谢谢大家。


这是我目前拥有的.sh :

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.'

标签: linuxservercrashubuntu-16.04application-restart

解决方案


推荐阅读