awk를 사용하여 마이크로서비스를 선택하고 현재 날짜와 버전이 포함된 파일을 만듭니다.

awk를 사용하여 마이크로서비스를 선택하고 현재 날짜와 버전이 포함된 파일을 만듭니다.

최신 버전의 마이크로서비스 로그를 보고 날짜를 기준으로 해당 내용을 파일로 보내고 싶습니다.

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

관련 정보