为重启脚本创建屏幕?庆典

问题描述 投票:1回答:1

我正在尝试在Ubuntu服务器上使用此脚本。

#!/bin/sh
while (true)
do
    screen -S myserver java -server -Xms4G -Xmx4G -jar craftbukkit.jar
    echo "Server restarting in 5 seconds. Ctr+C to kill the server!"
    echo "Rebooting in:"
    for i in 5 4 3 2 1
    do
        echo "$i..."
        sleep 1
    done
    echo "Rebooting Server!"
done

但是,只要我运行脚本并从屏幕上分离,它就会启动重启过程。如何在屏幕关闭后才启动重启?

bash ubuntu gnu-screen
1个回答
1
投票

测试屏幕会话是否仍在运行:

#!/bin/sh
while :
do
    screen -S myserver java -server -Xms4G -Xmx4G -jar craftbukkit.jar
    if screen -ls myserver | grep -q "No Sockets found"
    then 
        echo "Server restarting in 5 seconds. Ctr+C to kill the server!"
        echo "Rebooting in:"
        for i in 5 4 3 2 1
        do
            echo "$i..."
            sleep 1
        done
        echo "Rebooting Server!"
    else 
        echo "Not rebooting yet"
    fi
done

但由于这是一个无限循环,如果您分离屏幕并且它没有重新启动,它将启动另一个屏幕会话。我不知道你为什么把它放在一个循环中。

© www.soinside.com 2019 - 2024. All rights reserved.