ksaitoの日記

日々試したことの覚え書き

ファイルの作成と削除を待つ

シェルでファイルの作成と削除を待つのにinotify-toolsを使います。 インストール aptでインストールします。 $ sudo apt install -y inotify-tools ファイルの作成と削除を待つ waitfile.shに指定した引数のファイルが作成されるのをfilewaitで待ちます。 …

Raspberry pi 3

Raspberry pi 3のOSイメージをSDカードに約手順です。 環境 MacBook Pro 2015 OS X EI Capitan 10.11.6 Raspberry pi 3 Model B TOSHIBA microSDHCカード 16GB Class10 UHS-I対応 (最大転送速度40MB/s) 5年保証 (国内正規品) MSDAR40N16G出版社/メーカー: 東…

コンテナとファイルのやりとり

docker cpコマンドでも良いのですが、ディレクトリごと出し入れしたい場合には、tarコマンドを使った方が便利です。 tarの-Cオプオションは、tarを実行する前に指定されたディレクトリに移動します。 tar -C /tmp -cf - logは、(cd /tmp; tar cf - log)と同…

Dockerfileでexitステータスが0以外を返す処理を扱う

Dockerfileで外部のシェルを実行する場合に、そのシェルが正常終了したのに終了ステータスが0以外を返すことがあります。 dockerは、0以外のステータスが返されるとビルドが失敗したと判断して処理を中断してしまいます。 Dockerfileを下記のように記載する…

su: cannot open session: Permission denied

Oracle 12cをOracle Linuxにインストールする際に、事前準備をするパッケージがあります。 これを設定すると、oracleユーザのsuできません。 設定 インストールマニュアルに従って下記のように設定します。 $ cd /etc/yum.repos.d $ curl -O http://public-y…

dockerコンテナからkeychainを使ってgithubに接続する際に困ったこと

かなり前のブログに、sshの秘密鍵にパスフレーズを設定し、keychainを使って毎回パスフレーズを入力しなくて良い方法を書きました。 ksaitoの日記: keychain この方法をdockerコンテナに応用した場合、ちょっと厄介です。 例えば、こんな風にgithubに接続済…

ECSにELBやAutoScaleを設定するときに必要な設定

ECSにサービスを登録する際に、ELBとAutoScaleを設定すると下記のエラーが表示されました。 これは、認証情報-アカウント設定の「Security Token Service リージョン」が無効担っているためで、同メニューからECSが稼働しているリージョンを有効化することで…

ネットワーク遅延

ネットワーク遅延について理解が曖昧だったのでおさらいしました。 調べ方 測定したいサーバのいずれかからpingコマンドを使って調べます。 gceのインスタンスからヤフージャパンとyahooを測定します。 $ ping -c 2 www.yahoo.co.jp PING ***.jp (***.***.**…

gitで過去のコミットを書き換える

gitの最初のcommitにパスワードを書き込んでpushしたとします。さらに、しばらくcommit/pushを繰り返したとします。 下記の手順でパスワードを全てマスクした文字に書き換える事ができますが、cloneして作業している人すべてに影響がでるので作業前には関係…

pythonの開発環境その2

以前にdirenvとvirtualenvでpythonの開発環境を作る手順を書きました。 ksaito11.hatenablog.com pythonzを使うとpythonのバージョンも選択できるようになります。 前提パッケージ ubuntu17.04に下記の前提パッケー時をインストールします。 $ apt-get insta…

プロキシの設定する

プロキシ環境下では、プロキシサーバを設定しないとインターネットに接続できません。 環境変数に設定する場所は、/etc/environmentや/etc/profile.dだったり、$HOMEの各種シェルの.profileと、いろいろな場所で設定できます。 yumやaptといったコマンド毎に…

systemdのサービスをansible-playbookのhandlersでうまく記述する方法

ansible-playbookのhandlersでserviceを使ってサービスをリスタート出来ますが、systemdのサービスを再起動しようとしてもエラーになります。 systemdは、設定変更時にsystemctl daemin-reloadを実行してからサービスを再起動する必要があるためです。 下記…

docker runすると/bin/bash: /bin/bash: cannot execute binary fileが出る場合の対処

コンテナのデバッグで下記のコマンドをよく使います。 $ docker run -it --rm <イメージ> /bin/sh zabbixのオフシャルイメージの幾つかで下記のようなエラーがでてしばらく悩みました。 $ docker run -it --rm zabbix/zabbix-agent:alpine-3.2-latest /bin/s…

s3cmd syncでシンボリックリンクのコピー

s3cmd syncで下記のようなシンボリックリンクをコピーすると無限に深いディレクトリを作り続けます。(何れどこかでエラーになると思いますが…) $ ls -l .fcpcache lrwxr-xr-x@ 1 user staff 1 3 11 16:40 .fcpcache -> . $

Dockerコンテナでdebconfのdialogを使う

Dockerコンテナでdialogを使ってインタラクティブに設定をするための設定です。 コンテナからdebconf実行 特別何もしないとtextで入力を求められます。 sudo docker run -it --rm -e TZ=Asia/Tokyo -e LANG=ja_JP.UTF-8 ubuntu:16.10 bash root@b1af411dee00…

GNU screenの日本語環境でncursesを使うと表示が乱れる

GNU screenの日本語環境でncursesを使うと表示が乱れます。 環境 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial $ screen -v Screen version 4.03.01 (GNU) 28-…

dockerでgnu screenを使う

dockerコンテナでGNU screenを使えるようにしてみました。 環境 試した環境は、以下の通りです。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: denial $ docker --ver…

DockerのGUIをMacで使う

DockerコンテナのGUIアプリ(といってもxterm)をMacから使ってみました。 Quartz 2.7.11のインストール QuartzからMacにダウンロードしてインストールします。 Quartzの設定 X11 - 環境設定でネットワークク・ライアントからの接続を許可をチェックしてX11…

既存のDebianパッケージの展開

既存のDebianパッケージを参考にするためにダウンロードして展開する方法です。 下記のコマンドで作成したディレクトリに既存パッケージの完成形が展開されます。 apt-get download mysql-server-5.7 mkdir mysql dpkg-deb --raw-extract mysql-server-5.7_5…

gitのrebaseでコミットを書き換える

git rebaseでコミットをきれいにする方法です。 使うタイミング 自分専用のトピックブランチで作業が完了して 元のブランチに戻す前 に行います。 練習用のリポジトリ作成 sampleというファイルに機能が3つインプリされているという想定のテスト用のリポジ…

systemdで設定を上書きする方法

systemdで設定を上書きするには、/etc/systemd/systemに設定します。 systemctl edit <サービス>コマンドがあります。 $ sudo systemctl edit <サービス名>.service エディタが起動されて追加設定を書き込めます。 設定先は、/etc/systemd/system/<サービス…

既存のgitリポジトリを短時間でコピーする。

既存のgitリポジトリを短時間でコピーする方法です。 ローカルにクローン ブランチを指定して最新コミットに限定してクローンします。 $ git clone --depth 1 -b <ブランチ名> <URL> リモートにプッシュ 自分用のリポジトリにプッシュするとrejectされます。 $ gi</url>…

pythonの開発環境

pythonでちょっとしたテストをする際に独立した環境を準備する方法です。 virtualenvコマンドで独立したpython環境を作成して、direnvでcdするだけで環境の切り替えをすることが出来ます。 環境 ubuntu 16.04 LTS python 2.7 初期設定 下記のパッケージをイ…

複数のディレクトリの差分と同期

複数の環境に共通のシェルやプログラムを配置することがあります。「全て同じはず」という言葉を信じる以外に確認方法がない場合、gitに移行する方法です。 bareリポジトリの作成 bareリポジトリを作ります。GitHubやbitbucketを使ってもokです。 $ git init…

git mergetoolを使ったコンフリクトの解消

gitのmergetoolでemacsのemergeを選択する設定です。 git config --global merge.tool emerge コンフリクトが発生した場合に、mergetoolを起動するとemacsのemergeが起動します。 git mergetool aとbで、どちらの変更を採用するか、pとnで前後の変更へ移動、…

Ubuntu 16.04のDockerをaufsからdevicemapperに切り替える。

Ubuntu 16.04のDockerをaufsからdevicemapperに切り替えました。 aufsで作成したコンテナは、全て削除されます。 RedHat系のコンテナでswapを追加しようと試みました。 LVMなのでサイズ変更できるかと思いましたが、下記の通りmdsetupがエラーとなりました。…

iPhone7

iPhone6SからiPhone7に引越ししました。 大きな問題はありませんでしたが気が付いたところが幾つかあります。 SIMカード 今回は、USIMカードは同梱されておらず、今使っているものを差し替えるだけでした。iPhone6Sは、SIMなしとなります。 引っ越し 引っ越…

ubuntu 16.04のtimezone設定

今までは、下記でtimezoneが設定できました。 # echo "Asia/Tokyo" > /etc/timezone # dpkg-reconfigure --frontend noninteractive tzdata Ubuntu 16.04では、このやり方は出来ませんでした。 # grep "VERSION=" /etc/os-release VERSION="16.04.1 LTS (Xen…

zabbixのカスタムLLD

ドキュメントに作り方が書いてあります 。 カスタムLLDで必要なJSONファイルを作成する汎用の処理をpythonで作成します。 シェルで取得した下記の形式のファイルを入力にします。 {#NAME1} {#NAME2} name11 name12 name21 name22 ファイルからJSON形式に変換…

Selenium2をpythonで使う

Selenium2をpythonで使ってみました。 テストシナリオの作成 FirefoxとSelenium IDEを使って操作をキャプチャします。 yahooで"test"を検索して画像検索に切替えるというシンプルな操作をキャプチャします。 エクスポートでpythonを出力します。 こんな感じ…