Open4
自分用チートシート (一時保存用)
My Cheat sheet (コマンドメモ用)
Vscode
最後尾に文字列追加
Control + e
pbcopy
cat ~/***.log | pbcopyでログ結果をコピーする
cat ~/***.log | grep -B 2 fatal
or grep -A 2 ***
grep -v 一致しない行を表示
—invert-match
*** fzf関連 ***
# fzfを使用して現在のディレクトリ以下のファイルを検索
alias ff='find . -type f -print0 | fzf --read0'
# 検索結果から選択したファイルをエディタで開く
alias vff='vim $(ff)'
# 検索結果から選択したファイルをプレビュー表示する
alias pff='bat $(ff)'
# fzfを使用して、コマンドの履歴を検索する
alias hh='history | fzf'
# historyで表示されたコマンドを確認して実行
alias hhdo="histexec"
ターミナル ショートカット
ctrl + A:行の先頭
ctrl + E nd:行の最後
ctrl + F:カーソル右に移動
ctrl + B カーソル左に移動
ctrl + D カーソル部分の文字を削除
ctrl + D カーソル部分の左文字を削除
ctrl + K カーソルから行末の文字を削除
ctrl + K カーソル位置の単語を削除
ctrl + Y 直前に削除した文字を貼り付け
ctrl + L 画面をクリアにする
◉ctrl + w ワード単位で文字列を削除
ターミナルからFinderを開く
open .
open ~/
cat in:行数を出力
cut -f2 -d” ” text
csvから特定のカラムを切り出す
vim
複数行コピー:行数yy → 今の行数~yy分コピー
ターミナル tab切り替え
shift + command + 十字キー
option + 矢印 単語ごとに移動
control + u 1行削除
vscode ターミナルショートカット
control + shift + `
npm run watch
open -a PhpStorm ./
docker-compose exec ◯◯ bash
mysql -u◯◯ -p ◯◯
DBの一覧を取得
show databases
テーブルの一覧を取得
show tables
設定値の確認
show table statusで確認
json構文確認
https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/policies$new?step=edit
IAM 一覧表
https://www.kabegiwablog.com/entry/2017/08/30/192854
psコマンド オプション
ps axuw
?ps alxf
a:全てのプロセスを表示
x:端末を持たない全てのプロセスを表示する
w:出力の幅を広げる
u:ユーザーリスト
l:長いフォーマットで表示する
f:階層表示する
vimコマンド
Vim command
h 左 j 下 k 上 l 右
w 単語の先頭へ
b 前の単語の先頭へ
e 単語の末尾へ
ge 前の単語の末尾へ
{ } 段落の先頭、末尾へ移動
^ 行頭へ移動
0 行の先頭(1列目)
$ 行末へ移動
gg ファイルの先頭へ移動
G ファイルの最後に移動
zz カーソルを中央へ
f ファイルを検索
; 検索を繰り返す(前)
, 検索を繰り返す(後ろ)
Cnt + o ジャンプリストの1つ前に移動
Cnt + i ジャンプリストの1つ後に移動
: 行数 指定した行数へ移動
Control F 画面を下にスクロール
Control B 画面を上にスクロール
Control G 現在の行数を表示する
ctr + u 画面の高さの半分上に移動
ctr + d 画面の高さの半分下に移動
u 実行したコマンドの取り消し
G; 変更された箇所へ戻る
I 行の最初に移動して入力モードに
A 行の最後に移動して入力モードに
r + 変更したい文字 今の文字を変更したい文字に変える
Ctrl + R 取り消しの取り消し
p 削除した行の貼り付け
/ ~~ の後に n 検索を進める
大文字のNで逆方向に進める
Ctrl + o で元に戻る
閉じタグの確認 → %を押す
行の文字変換
→ :s/old/new/g
:! 外部シェルコマンドが実行できる
: !ls ディレクトリが表示される
:w ファイル名 ファイルを保存
v 選択した書き込み
o カーソルの下の行が動いて挿入モードへ¥
✨テキスト全消し :%d
:%s/$releasever/6.10/g
vimium
vimium
t タブ開く
タブ移動
K
J
k 上
j 下
l 右
h左
u 上50%
gg 上100%
d 下50%
G 下100%
H 戻る
リンクを開く
f 現在のタブ
F 新しいタブ
o 現在のタブ
O 新しいタブで検索O
x タブを削除
k8sチートシート
kubernetes チートシート
リソースの検索と閲覧
# Getコマンドで基本的な情報を確認します
kubectl get services # 現在の名前空間上にあるすべてのサービスのリストを表示します
kubectl get pods --all-namespaces # すべての名前空間上にあるすべてのPodのリストを表示します
kubectl get pods -o wide # 現在の名前空間上にあるすべてのPodについてより詳細なリストを表示します
kubectl get deployment my-dep # 特定のDeploymentを表示します
kubectl get pods # 現在の名前空間上にあるすべてのPodのリストを表示します
kubectl get pod my-pod -o yaml # PodのYAMLを表示します
# Describeコマンドで詳細な情報を確認します
kubectl describe nodes my-node
kubectl describe pods my-pod
# 名前順にソートしたServiceのリストを表示します
kubectl get services --sort-by=.metadata.name
# Restartカウント順にPodのリストを表示します
kubectl get pods --sort-by=‘.status.containerStatuses[0].restartCount’
# capacity順にソートしたPersistentVolumeのリストを表示します
kubectl get pv --sort-by=.spec.capacity.storage
# app=cassandraラベルのついたすべてのPodのversionラベルを表示します
kubectl get pods --selector=app=cassandra -o \
jsonpath=‘{.items[*].metadata.labels.version}’
# ‘ca.crt’のようなピリオドが含まれるキーの値を取得します
kubectl get configmap myconfig \
-o jsonpath=‘{.data.ca\.crt}’
# すべてのワーカーノードを取得します(セレクターを使用して、
# 「node-role.kubernetes.io/master」という名前のラベルを持つ結果を除外します)
kubectl get node --selector=‘!node-role.kubernetes.io/master’
# 現在の名前空間でrunning状態のPodのリストを表示します
kubectl get pods --field-selector=status.phase=Running
# すべてのノードのExternal IPのリストを表示します
kubectl get nodes -o jsonpath=‘{.items[*].status.addresses[?(@.type==“ExternalIP”)].address}’
# 特定のRCに属するPodの名前のリストを表示します
# `jq`コマンドは複雑なjsonpathを変換する場合に便利であり、https://stedolan.github.io/jq/で見つけることが可能です
sel=${$(kubectl get rc my-rc --output=json | jq -j ‘.spec.selector | to_entries | .[] | “\(.key)=\(.value),“‘)%?}
echo $(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name})
# すべてのPod(またはラベル付けをサポートする他のKubernetesオブジェクト)のラベルのリストを表示します
kubectl get pods --show-labels
# どのノードがready状態か確認します
JSONPATH=‘{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}’ \
&& kubectl get nodes -o jsonpath=“$JSONPATH” | grep “Ready=True”
# Podで現在使用中のSecretをすべて表示します
kubectl get pods -o json | jq ‘.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name’ | grep -v null | sort | uniq
# すべてのPodのInitContainerのコンテナIDのリストを表示します
# initContainerの削除を回避しながら、停止したコンテナを削除するときに役立つでしょう
kubectl get pods --all-namespaces -o jsonpath=‘{range .items[*].status.initContainerStatuses[*]}{.containerID}{“\n”}{end}’ | cut -d/ -f3
# タイムスタンプでソートされたEventのリストを表示します
kubectl get events --sort-by=.metadata.creationTimestamp
# クラスターの現在の状態を、マニフェストが適用された場合のクラスターの状態と比較します。
kubectl diff -f ./my-manifest.yaml
# Nodeから返されるすべてのキーをピリオド区切りの階層表記で生成します。
# 複雑にネストされたJSON構造をもつキーを指定したい時に便利です
kubectl get nodes -o json | jq -c ‘path(..)|[.[]|tostring]|join(“.”)’
# Pod等から返されるすべてのキーをピリオド区切り階層表記で生成します。
kubectl get pods -o json | jq -c ‘path(..)|[.[]|tostring]|join(“.”)’
リソースのアップデート
kubectl set image deployment/frontend www=image:v2 # frontend Deploymentのwwwコンテナイメージをv2にローリングアップデートします
kubectl rollout history deployment/frontend # frontend Deploymentの改訂履歴を確認します
kubectl rollout undo deployment/frontend # 1つ前のDeploymentにロールバックします
kubectl rollout undo deployment/frontend --to-revision=2 # 特定のバージョンにロールバックします
kubectl rollout status -w deployment/frontend # frontend Deploymentのローリングアップデートを状態をwatchします
kubectl rollout restart deployment/frontend # frontend Deployment を再起動します
cat pod.json | kubectl replace -f - # 標準入力から渡されたJSONに基づいてPodを置き換えます
# リソースを強制的に削除してから再生成し、置き換えます。サービスの停止が発生します
kubectl replace --force -f ./pod.json
# ReplicaSetリソースで作られたnginxについてServiceを作成します。これは、ポート80で提供され、コンテナへはポート8000で接続します
kubectl expose rc nginx --port=80 --target-port=8000
# 単一コンテナのPodイメージのバージョン(タグ)をv4に更新します
kubectl get pod mypod -o yaml | sed ‘s/\(image: myimage\):.*$/\1:v4/’ | kubectl replace -f -
kubectl label pods my-pod new-label=awesome # ラベルを追加します
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # アノテーションを追加します
kubectl autoscale deployment foo --min=2 --max=10 # “foo” Deploymentのオートスケーリングを行います
Kubectlコンテキストの設定
kubectl config view # マージされたkubeconfigの設定を表示します。
# 複数のkubeconfigファイルを同時に読み込む場合はこのように記述します。
KUBECONFIG=~/.kube/config:~/.kube/kubconfig2
kubectl config view
# e2eユーザのパスワードを取得します。
kubectl config view -o jsonpath=‘{.users[?(@.name == “e2e”)].user.password}’
kubectl config view -o jsonpath=‘{.users[].name}’ # 最初のユーザー名を表示します
kubectl config view -o jsonpath=‘{.users[*].name}’ # ユーザー名のリストを表示します
kubectl config get-contexts # コンテキストのリストを表示します
kubectl config current-context # 現在のコンテキストを表示します
kubectl config use-context my-cluster-name # デフォルトのコンテキストをmy-cluster-nameに設定します
# basic認証をサポートする新たなユーザーをkubeconfigに追加します
kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
# 現在のコンテキストでkubectlのサブコマンドの名前空間を永続的に変更します
kubectl config set-context --current --namespace=ggckad-s2
# 特定のユーザー名と名前空間を使用してコンテキストを設定します
kubectl config set-context gce --user=cluster-admin --namespace=foo \
&& kubectl config use-context gce
kubectl config unset users.foo # ユーザーfooを削除します
エンドポイントの確認
Kubectl get endpoints “hostname”
クラスター外からのアクセス
Kubectl port-forward svc/“hostname” 8080:80 localhost : podのポート
EKSとの接続コマンド
aws eks --region ap-northeast-1 update-kubeconfig --name (k8s-terraform-smaple-clustar)