【问题标题】:Shutting down computer when no one is on servers没有人在服务器上时关闭计算机
【发布时间】:2021-10-29 16:49:38
【问题描述】:

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

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

检查某人是否在该特定IP上
lsof -iTCP:25565 -sTCP:ESTABLISHED

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

【问题讨论】:

  • 用 shell 脚本不行。该检查只是暂时的状态,如果在其中一台服务器上没有人在您的探测之间进行短暂的一瞥,您将无法确定这种方式。
  • 是的,但我的理解是我可能会做一个循环,每分钟左右探测一次,并检查是否有人在其中任何一个上,如果没有人,则继续,一旦达到 30 分钟或这样就可以关闭了。如果有人想玩,我怀疑我会连续 30 次错过他们。

标签: bash minecraft shutdown


【解决方案1】:

然后是这样的:

#!/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 是唯一需要更改的变量

【讨论】:

  • 到目前为止,这似乎工作得很好!非常感谢!我将继续弄乱它并在不同的情况下对其进行测试,但现在,这很好用!
  • 如果您喜欢,可以将我的回答标记为有用。
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 2020-11-11
  • 2012-03-07
  • 1970-01-01
  • 2020-11-17
  • 2016-06-16
  • 2010-09-18
  • 2015-06-30
相关资源
最近更新 更多