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

おすすめ記事