linux - 保持应用程序运行,如果它崩溃,请重新启动它。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.'
解决方案
推荐阅读
- python - 在 pandas ewm 函数上矢量化 for 循环
- c++ - 将负整数左移零作为未定义行为是否有意义?
- c# - GTK 应用程序不在 Windows 中运行
- python - 您如何使用 if 语句仅排除整数并给出无效的条目消息?
- redux - 用flutter redux更新列表项的问题?
- regex - 此 {{mike}} {{michael}} {{jordan}} 的正则表达式
- wpf - 为什么我不能通过 GridSplitter 调整最后一列的宽度?
- c# - 在 asp.net 核心中替代 HttpConfigurationExtensions.BindParameter
- python - Python_d.exe 和 venv -- 找不到“python_d.exe”
- vb.net - 如何删除逗号的第一个值