2016-03-15 86 views
1

我正在寻找一种以编程方式杀死长时间运行的AWS EC2实例的方法。有没有办法确定Amazon AWS EC2实例运行多久?

我做了一些搜索,但我似乎找不到一种方法来查找实例已运行多久,以便我可以编写脚本来删除运行时间超过某个特定的实例时间段...

有人处理过这个吗?

+0

AWS的Load Balancer应该有配置选项。你用它吗? – lucasnadalutti

+0

检查EC2实例元数据中的启动时间属性。 –

+0

@MarkB,谢谢你,我发现这个:http://stackoverflow.com/questions/18916135/determining-amazon-ec2-instance-creation-date-time – Becks

回答

1

我注意到你的问题cron的标签,所以也许你可以使用这个bash脚本:

UPTIME=`uptime | awk {print $3}` 

# Reboot if uptime longer than 180 days (6 months) 
if [ $UPTIME -gt 180 ] 
then 
    # Whatever you want to do here... 
fi 

如果你想更精细的控制,你也可以从/proc/uptime使用这样的事情在数秒内获得正常运行时间:

UPTIME=$(awk -F. '{print $1}' /proc/uptime)

注意{print $2}会给你在几秒钟内

空闲时间
+0

我接受它,你的答案只适用于ec2实例本身。我所追求的是我可以从亚马逊获得的任何元数据,告诉我至少EC2实例创建的时间。 – Becks

+0

是的,这是针对ec2实例本身的cron。您希望能够在其他“主管”计算机上获取该元数据并能够从那里采取行动? – avip

0

EC2服务为每个实例存储一个LaunchTime值,您可以通过执行DescribeInstances调用找到该值。但是,如果您停止实例并重新启动该实例,则此值将随新启动时间一起更新,因此确定实例自启动以来运行的时间并不是一种可靠的方法。

我能想到的确定原始启动时间的唯一方法就是使用CloudTrail(假设您已启用了您的帐户)。您可以在原始启动事件中搜索CloudTrail,并将其与EventTime关联。

相关问题