屏幕无法启动。不知道为什么

时间:2014-02-04 07:42:34

标签: bash minecraft

我有这个脚本每小时运行一次,它应该检查一个Minecraft服务器是否在屏幕上运行,如果不是,那么它应该在屏幕上启动服务器。

if ! screen -list | grep -q "mc"; then
        echo "starting"
        screen -dmS mc /home/mc/run_server.sh
fi

我还是Bash的新手,我一直试图对此进行调试,并且没有提出为什么它不会启动。

1 个答案:

答案 0 :(得分:1)

它应该工作。究竟什么不开始?你把它放在一个文件中吗?

#!/bin/bash
if ! screen -list | grep -q "mc"; then
    echo "starting"
    screen -dmS mc /home/mc/run_server.sh
else
    echo "minecraft server is already running!"
fi

将其保存在您的主目录中,如mc.sh文件。 为它设置可执行权限:

chmod +x mc.sh

尝试运行它:

./mc.sh

如果在! screen -list | grep -q "mc"(列出所有正在运行的会话的命令)中找不到名为“mc”的条目,则screen -list条件有效,因此如果此时没有“mc”屏幕会话,它会显示一条“开始”消息并开始一个新的屏幕会话,run_server.sh将在其中运行。

否则会显示“我的服务器已经在运行!”什么都不做。

如果你把它放在crontab中并且它在那里不起作用,请尝试使用具有绝对路径的每个命令。

0 * * * * /home/alandoyle/mc.sh

并使用screen的完整路径替换脚本中的每个screen用法(例如,/usr/bin/screen;您可以使用which screen命令确定您的用途)