gitリポジトリの過去のコミット含めて、全てのファイルに対してgrepします。
git rev-list --all | xargs git grep '文字列'
/etc/apt/sources.list
の下記の行を追加します。
deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted
次のコマンドでソースパッケージを取得します。
apt update apt-get source openssh
次のコマンドで、ビルドに必要な準備をします。
cd openssh-7.6p1 sudo apt-get build-dep openssh-server autoconf ./configure
ビルドします。
make
以上
Kubernetes-dashboardをデプロイしましたが、接続するのにちょっと苦労しました。
マニュアル通りkubectl proxy
を実行したところlocalhost
以外からは接続できませんでした。
$ kubectl proxy Starting to serve on 127.0.0.1:8001
表示をみてもIPアドレスが制限されているので、下記のような結果です。
$ curl http://ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com:8001 curl: (7) Failed to connect to ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com port 8001: 接続を拒否されました $
$ kubectl proxy --address 0.0.0.0 Starting to serve on [::]:8001
アクセスできるようになりましたが、認証エラーとなりました。
$ curl http://ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com:8001 <h3>Unauthorized</h3>$
0.0.0.0
は、自分のIPアドレスに絞ったほうが良いです。
$ kubectl proxy --address 0.0.0.0 --accept-hosts '.*' Starting to serve on [::]:8001
これで、アクセスできました。
$ curl http://ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com:8001 | head -5 { "paths": [ "/api", "/api/v1", "/apis",
シェルでタイムアウトを設けて何かを待つ処理をワンライナーで書いてみました。
アプリケーションサーバの起動のあとに何か実行する必要がある場合、起動の完了を待つ必要があります。 同期呼び出しやコールバックなどが設定できない場合は、ログやポートを定期的に監視する必要があります。
ここでは、サンプルとして、時刻の秒が48秒になったら何か処理することを想定します。
下記のように実装しました。
$ timeout 30 bash -c 'while true; do date +'%S' | grep 48 && break; sleep 1; done' 48 $ echo $? 0 $ timeout 3 bash -c 'while true; do date +'%S' | grep 48 && break; sleep 1; done' $ echo $? 124 $
ワンライナーの詳細です。
何かの状態になったかを確認する専用のコマンドが提供されていない場合は、grep
やdiff
が便利です。これらのコマンドは、終了ステータスで条件を満すと0、満たさないと0以外を返します。
時刻が48秒かを判別するには、下記のようにします。
date +'%S' | grep 48 echo $?
while文を使って、条件の判定を毎秒繰り返す事ができます。
$ while true > do > date +'%S' | grep 48 > sleep 1 > done
この処理では、条件を満たしても終了しないので、終了処理を追加します。
&&
は、実行したコマンドが成功した時に実行するコマンドを指定できます。
コマンドが成功(=条件を満たした)場合にbreak
コマンドを実行してループを抜けます。
$ while true > do > date +'%S' | grep 48 && break > sleep 1 > done 48 $
timeout
コマンドを使って一定時間経過しても条件を満たさない場合は、エラーとなるようにします。
条件を満たしたか、タイムアウトになったかは、終了ステータスで判別できます。
$ timeout 60 bash -c 'while true; do date +'%S' | grep 48 && break; sleep 1; done' 48 $ echo $? 0 $ timeout 2 bash -c 'while true; do date +'%S' | grep 48 && break; sleep 1; done' $ echo $? 124 $
vaultのオフシャルコンテナの0.9.5を起動すると下記のエラーがでました。
Attaching to vault vault | Couldn't start vault with IPC_LOCK. Disabling IPC_LOCK, please use --privileged or --cap-add IPC_LOCK vault | su-exec: vault: Text file busy
--privileged
などをつけても改善しませんでした。
ホストOSがUbuntu 16.04 LTSの場合に選択されるストレージドライバが原因となるようで、課題では、ホストOSを変更するしかないみたいです。
ホストOSをUbuntu 17.10ですると解消しました。18.04 LTSが出るまでの一次避難ですん。
なぜだか、2つ以上のファイルをコミットしようとすると下記のようなエラーが出ます...
$ git commit fatal: ambiguous argument 'Makefile README.md': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' $
下記のように1ファイル毎、コミットするとエラーは出ないのですが、ファイル数が多いとつらい...
$ git commit Makefile -m "test" [test 072a6d3] test 1 file changed, 1 insertion(+) $ git commit --amend -m "test" [test ecee83b] test Date: Tue Feb 20 22:41:38 2018 +0900 2 files changed, 2 insertions(+) $
なんでだろう?