我想这可能是一个奇怪的问题,但是我有一个小的EC2现实,每月花费大量钱。不过,它每小时都会充电,所以我只在需要时打开此特定实例,并在完成后将其关闭。
此实例的目的是托管一个反击:全局进攻专用服务器,我只能在我有弹奏时才为此供电。
,我没有忘记将其关闭并受到很多费用,或者拥有一个不知情的启动脚本,要求该实例在3个小时后进行电源,而是考虑了一个更聪明的设计。
这是我的主意;通过确定在过去的10分钟内没有记录该实例在不再使用UDP 27015上的一定数量的网络活动时,该实例在感觉不再使用时会智能地自身供电。
这样,我可以上电,参加比赛,而不必担心关闭服务器的电源: - )
听起来很酷。问题是我如何解决任务。我想每10分钟在Cron的帮助下每10分钟执行一次bash。
如果我在这里并不完全疯狂,可以提供bash的建议建议吗?或者,也许是一个更好的解决方案,我如何解决此任务,以节省$$,通过在感觉到它不再使用时关闭服务器的电源!
我对EC2实例不太熟悉,但是如果他们运行某种形式的Linux ...在Fedora下,我可以使用 ifconfig 查看多少数据已在整个网络接口上接收/传输。这不仅是单个端口,而且是该接口上的所有端口...这个数字对您来说足够吗?每隔几分钟进行一次监视,应该很容易看一下负载何时下降...
可能是一个简单的脚本,从启动EC2实例并仅记录数据时就开始了。游戏结束后一个小时,您可以抓住日志,手动关闭,并在您闲暇时对其进行检查,以查看是否有效。(令人惊讶的是,有时有多少东西使用网络...
事后的想法:也许 tcpdump 会更好吗?它可以与UDP端口27015一起使用吗?您可能需要某种方法来计时,例如将其作为背景过程运行,可能是-c选项,睡一会儿,然后在TCPDUMP过程仍在运行的情况下杀死。您可能需要通过 wc -l 或只是 GREP 最终数据包抓取行。警告: tcpdump 可能需要作为root运行。
E.g. /usr/sbin/tcpdump -n -nn -q -c 100 -i eth0 port 27015
进一步的想法:
#!/bin/bash --norc
/usr/sbin/tcpdump -n -nn -q -i eth0 port 27015 2>./logfile 1>/dev/null &
TCPDUMP_PID=$!
echo "sleeping... pid=$TCPDUMP_PID"
sleep 30
echo "wake up"
kill $TCPDUMP_PID
sleep 2
cat ./logfile