首页 > 解决方案 > 没有人在服务器上时关闭计算机

问题描述

我在我的塔上运行了多个 minecraft 服务器,并试图找出一个在后台运行的脚本,该脚本将检查过去 30 分钟内是否没有人在任何服务器上,然后关闭服务器和计算机。然后,当有人想加入时,我将使用我的树莓派唤醒局域网。

我想出了如何使用 rcon 和网络唤醒来关闭服务器。我遇到的主要问题是弄清楚关机。我唯一能找到的是如何使用

lsof -iTCP:25565 -sTCP:ESTABLISHED

但我不知道从那里去哪里。我使用的是 Linux 机器,我对 bash 文件的大部分经验来自设置服务器,仅此而已。您可以提供的任何帮助将不胜感激!谢谢!

标签: bashminecraftshutdown

解决方案


然后是这样的:

#!/bin/bash

PORTLIST="25565 25566 25567"
TIMEOUT=3600

let T=0
declare -i START
declare -i NOW
START=$(date +%s)

while [ $T -lt $TIMEOUT ] ; do
   sleep 30
   for PORT in $PORTLIST ; do
      if lsof -iTCP:$PORT -sTCP:ESTABLISHED >/dev/null ; then
         T=0
         START=$(date +%s)
         # starting over
         continue 2
         fi
      done
   NOW=$(date +%s)
   let T=NOW-START
   done
echo timeout

PORTLIST 和 TIMEOUT 是唯一要更改的变量


推荐阅读