我想查看最新版本的微服务的日志,并根据日期将其内容发送到文件。
user@MacBook-Pro ~ % kubectl -n bci-api get pods | grep ms-example-microservices
ms-example-microservices-neg-re-v1-7-56bfd9f6c7-kjb24 1/1 Running 1 (6h39m ago) 6h47m
ms-example-microservices-neg-re-v2-0-66d88b48fb-9ttcf 1/1 Running 0 5h14m
ms-example-microservices-neg-re-v2-1-6d8749dfb8-d42jk 1/1 Running 0 6h26m
ms-example-microservices-neg-re-v2-2-849c97f6c-dnp45 1/1 Running 0 4h53m
ms-example-microservices-neg-re-v2-3-db6dc776c-x45jl 1/1 Running 0 5h50m
user@MacBook-Pro ~ % kubectl logs -f -n bci-api ms-example-microservices-neg-re-v2-3-db6dc776c-x45jl > pf_v2-3.2022-07-14.log
我想选择最新版本(在本例中为v2-3
),然后创建一个包含日期的文件。是否可以在一行中完成?
user@MacBook-Pro ~ % kubectl -n bci-api get pods | grep ms-example-microservices | tail -n 1 | awk '{print $1}'
ms-example-microservices-neg-re-v2-3-db6dc776c-x45jl
user@MacBook-Pro ~ %
现在为名称创建日期时间:
user@MacBook-Pro ~ % $(date +"%Y%m%d_%H%M%S")
zsh: command not found: 20220714_172238
user@MacBook-Pro ~ %
我正在尝试嵌套的命令:
kubectl logs -f -n bci-api $(kubectl -n bci-api get pods | grep ms-example-microservices | tail -n 1 | awk '{print $1}') > "pf_$(date +"%Y%m%d_%H%M%S").log"
不幸的是我不知道如何选择v2-3
名称的版本。
答案1
由于您正在调用 awk,所以整行:
kubectl -n bci-api get pods | grep ms-example-microservices | tail -n 1 | awk '{print $1}'
可以替换为
kubectl -n bci-api get pods |
awk '/ms-example-microservices/{last=$1}END{print last}'
现在,为了选择版本,我假设第一个字符串具有相同数量的-
分隔部分,并且我将选择部分编号 6 和编号 7:
kubectl -n bci-api get pods |
awk -F'[ -]*' '/ms-example-microservices/{last=$6"-"$7}END{print last}'
并添加日期(使用简化%F_%T
格式:
$ printf '%s-%s\n' "$(
kubectl -n bci-api get pods |
awk -F"[ -]" '/ms-example-microservices/{last=$6"-"$7}END{print last}'
)" "$(date +'%F-%T')"
v2-3-2022-07-15-04:40:09
答案2
请尝试使用下面的命令它工作正常
varse=$(kubectl -n bci-api get pods|awk -F "-" '/ms-example-microservices/{x=$0}END{print $6"-"$7}')
kubectl -n bci-api get pods|awk '/ms-example-microservices/{x=$0}END{print }' >pf_"$varse"_$(date +%Y-%m-$d).log