我有这个脚本每小时运行一次,它应该检查一个Minecraft服务器是否在屏幕上运行,如果不是,那么它应该在屏幕上启动服务器。
if ! screen -list | grep -q "mc"; then
echo "starting"
screen -dmS mc /home/mc/run_server.sh
fi
我还是Bash的新手,我一直试图对此进行调试,并且没有提出为什么它不会启动。
答案 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
命令确定您的用途)