当服务器上没有人时关闭计算机
Shutting down computer when no one is on servers
我 运行 我的塔上有多个 minecraft 服务器,我正试图在后台找出一个脚本 运行 来检查过去是否没有人在任何服务器上30 分钟,然后关闭服务器和计算机。然后,当有人想加入时,我将使用我的 raspberry pi 在 LAN 上唤醒。
我想出了如何使用 rcon 和局域网唤醒功能关闭服务器。我遇到的主要问题是弄清楚关机。我唯一能找到的是如何使用
检查某人是否在该特定 IP 上
lsof -iTCP:25565 -sTCP:ESTABLISHED
但我不知道从那里去哪里。我使用的是 Linux 机器,我对 bash 文件的大部分经验来自于设置服务器,仅此而已。您能提供的任何帮助将不胜感激!谢谢!
然后像这样:
#!/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 是唯一要更改的变量
我 运行 我的塔上有多个 minecraft 服务器,我正试图在后台找出一个脚本 运行 来检查过去是否没有人在任何服务器上30 分钟,然后关闭服务器和计算机。然后,当有人想加入时,我将使用我的 raspberry pi 在 LAN 上唤醒。
我想出了如何使用 rcon 和局域网唤醒功能关闭服务器。我遇到的主要问题是弄清楚关机。我唯一能找到的是如何使用
检查某人是否在该特定 IP 上lsof -iTCP:25565 -sTCP:ESTABLISHED
但我不知道从那里去哪里。我使用的是 Linux 机器,我对 bash 文件的大部分经验来自于设置服务器,仅此而已。您能提供的任何帮助将不胜感激!谢谢!
然后像这样:
#!/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 是唯一要更改的变量