Google compute engine 从Google计算引擎中删除所有停止的实例

Google compute engine 从Google计算引擎中删除所有停止的实例,google-compute-engine,Google Compute Engine,我在谷歌计算引擎上有数千个虚拟机实例。几乎所有这些都被阻止了。如何一次删除所有已停止的实例? (在UI上执行此操作需要花费很长时间,而且—UI崩溃) 谢谢 首先从项目中获取虚拟机列表: gcloud compute instances list | grep TERMINATE 验证是否需要删除所有这些VM。然后,下面生成可以执行的命令,以将它们全部删除。您可以将输出重定向到一个文件,然后运行“bash”。如果幸运的话,可以随意优化到单个命令行:) gcloud计算实例列表:逐个列出实例 aw

我在谷歌计算引擎上有数千个虚拟机实例。几乎所有这些都被阻止了。如何一次删除所有已停止的实例? (在UI上执行此操作需要花费很长时间,而且—UI崩溃)


谢谢

首先从项目中获取虚拟机列表:

gcloud compute instances list | grep TERMINATE
验证是否需要删除所有这些VM。然后,下面生成可以执行的命令,以将它们全部删除。您可以将输出重定向到一个文件,然后运行“bash”。如果幸运的话,可以随意优化到单个命令行:)

gcloud计算实例列表:逐个列出实例

awk:打印出“gcloud计算实例删除”终止的\u实例\u名称--zone“实例所属的区域名称”

通过管道将此输出传输到bash,使其在终端上执行

当提示确认时,“yes Y”提供“Y”或“yes”回答。

终止的实例在gcloud控制台中显示为已停止。假设您希望删除终止的实例,您可以查找状态为已终止的实例

这里的其他答案也可以,但它们将遍历您的所有实例。一种稍微干净一点的方法是从gcloud请求一个已过滤的实例列表,以便您只遍历已知处于此状态的实例

最后,我发现辅助磁盘在其父实例删除时并不总是删除,所以我也喜欢在清理过程中清除孤立磁盘

类似这样的东西应该可以做到(对于bash shell):

!/bin/bash
#删除终止的实例
对于$(gcloud compute instances list--uri--filter=“status:terminated”2>/dev/null)中的终止的\u实例\u uri,执行以下操作
terminated_instance_name=${terminated_instance_uri##*/}
终止的\u实例\u区域\u uri=${终止的\u实例\u uri/\/instances\/${终止的\u实例\u名称}/}
terminated_instance_zone=${terminated_instance_zone_uri##*/}
如果[-n“${terminated_instance_name}”]&&&&n“${terminated_instance_zone}”&&gcloud compute instances delete${terminated_instance_name}--zone${terminated_instance_zone}--delete disks all--quiet;然后
echo“已删除:${terminated_instance_zone}/${terminated_instance_name}”
fi
完成
#删除孤立磁盘(筛选没有用户的磁盘)
对于$(gcloud compute disks list--uri--filter=“-users:*”2>/dev/null)中的孤立磁盘uri,执行以下操作
孤立磁盘名称=${孤立磁盘uri}
孤立磁盘区域uri=${孤立磁盘uri/\/disks\/${孤立磁盘名称}/}
孤立磁盘分区=${孤立磁盘分区(uri###*/}
如果[-n“${orphaned_disk_name}”]&&&&n“${orphaned_disk_zone}”&&gcloud compute disks删除${orphaned_disk_name}--zone${orphaned_disk_zone}--quiet;然后
echo“已删除:${orphaned_disk_zone}/${orphaned_disk_name}”
fi
完成
gcloud compute instances list | grep TERMINATE | awk '{printf "gcloud comoute instances delete %s --zone %s\n", $1, $2}' 
yes Y | gcloud compute instances list | awk '/TERMINATE/ {printf "gcloud compute instances delete %s --zone %s; ", $1, $2}' | bash