我需要删除集群上超过14天的部署。如果我跑:
oc get deploy --sort-by=.metadata.creationTimestamp | grep wml-os-rt-hybrid | awk '{ print $1 "\t\t" $6;}'它给了我一份这些部署的清单,以及它们的年龄:
wml-os-rt-hybrid0.1-gz3vczfc 15d
wml-os-rt-hybrid0.1-fj167pbt 8d
wml-os-rt-hybrid0.1-bdzkqi7z 7d
wml-os-rt-hybrid0.1-g4hclw4v 7d
wml-os-rt-hybrid0.1-j6x9tzt6 7d
wml-os-rt-hybrid0.1-qplkkilw 4d
wml-os-rt-hybrid0.1-sadgz9cz 6h我对此非常陌生,我不知道我需要添加什么,这样它也会删除任何比14d更老的东西,在这种情况下,它只是一行,而在其他集群中,则是数百条。
发布于 2020-07-14 20:49:17
试试这个:
oc get deploy --sort-by=.metadata.creationTimestamp |
awk '/wml-os-rt-hybrid/ && !(($6 ~ /d$/) && (($6+0) > 14)){print $1 "\t\t" $6}'假设首先打印的东西是您的“部署”,为了删除“部署”,您可以使用下面的注释中提到的oc delete deployment ,而您要删除的是不符合上述标准的“部署”S,那么类似这样的操作应该可以做到:
oc get deploy --sort-by=.metadata.creationTimestamp |
awk '!( /wml-os-rt-hybrid/ && !(($6 ~ /d$/) && (($6+0) > 14)) ){print $1}' |
xargs -n 1 oc delete deployment如果你愿意的话,你可以做布尔代数来去除这种情况下的双负数。
发布于 2020-07-16 23:03:31
delfile=delete_file_names
... | awk -v delfile="$delfile" 'BEGIN { printf "","" >delfile }; '\
'{ value=$6; sub(".$","",value); '\
'if($6 ~ "h$") value=int(value/24); else value=int(value); }; '\
'value<15 { print $1 "\t\t" $6;}; '\
'value>14 { print $1 >delfile; }'
wml-os-rt-hybrid0.1-fj167pbt 8d
wml-os-rt-hybrid0.1-bdzkqi7z 7d
wml-os-rt-hybrid0.1-g4hclw4v 7d
wml-os-rt-hybrid0.1-j6x9tzt6 7d
wml-os-rt-hybrid0.1-qplkkilw 4d
wml-os-rt-hybrid0.1-sadgz9cz 6h
if [ -s "$delfile" ]; then
IFS=\n' rm -- $(< "$delfile")
fihttps://unix.stackexchange.com/questions/598516
复制相似问题