tkuchikiの日記

新ブログ https://blog.tkuchiki.net

Linux

プロセスのメモリ使用量とCPU使用率などが取れる mackerel-plugin-linux-proc-stats をリリースしました

プロセスのメモリ使用量と CPU 使用率などのメトリクスが取れる、 mackerel-plugin-linux-proc-stats をリリースしました。 Installation https://github.com/tkuchiki/mackerel-plugin-linux-proc-stats/releases からバイナリをダウンロードして解凍してく…

linux で TZ の offset を出力する

date +%z を使います。 $ TZ=UTC date +%z +0000 $ TZ=Asia/Tokyo date +%z +0900 $ TZ=EST date +%z -0500 全ての TZ と offset を出力する場合は、以下のシェルスクリプトを実行します。 実行結果 $ ./tz.sh EST5EDT -0500 MST7MDT -0700 Portugal +0000 J…

ログインユーザ名を取得する

su コマンドで root になった場合などで、 ログインしたときのユーザ名を取得する方法です。 結論から書くと、logname(1) を使えば良いです。 $ ssh ec2-user@ec2-host $ whoami ec2-user $ sudo su - $ whoami root $ logname ec2-user Amazon Linux, CentO…

2015年うるう秒の検証方法と検証結果 (Amazon Linux, CentOS)

日本時間 2015/07/01 08:59:59 から 09:00:00 の間にうるう秒が挿入されます。 検証手順と、どのように対応すれば良さそうか検証した結果をまとめます。 情報は、すべて執筆時(2015/06/18)のものです。検証環境は Amazon Linux 2015.03、Timezone は Asia/To…

GPG Pubkey の Summary を一覧表示する

$ rpm --import http://path/to/gpg-pubkeyのようにして、GPG Pubkey を import すると思いますが、 $ rpm -qa gpg-pubkey* gpg-pubkey-0608b895-4bd22942 gpg-pubkey-a12e206f-52aecba3のように表示されても、どれが何の key なのかわかりにくいと思います…

perl, php, python の標準モジュールで /etc/shadow の hash を生成する方法

※追記 /etc/shadow の hash を生成するコマンドを作りました - tkuchikiの日記 で環境依存しない方法を紹介しています。 useradd や chef の user resource で password を設定するときに必要になる、 /etc/shadow の hash を生成する方法です。/etc/shadow …

git 2.2.0 の rpm 作成方法

rpm を作成した環境は、CentOS 6.4、git 1.7.1 です。執筆時(2014/12/15) の git 最新版は 2.2.0 でした。 git.spec が極端に変更されない限りは、 多少バージョンが前後しても同様の手順で作業できると思います。perl-Git に、subversion-perl, perl-YAML …

Amazon Linux で yum.conf に installonlypkgs を正しく設定しないと kernel update で問題が発生する

Amazon Linux 2014.03 の kernel update 時に instance が起動しなくなる問題の対処法 - tkuchikiの日記 の続編です。この現象を確認したのは、 Amazon Linux 2012.03, 2012.09, 2013.03, 2013.09, 2014.03, 2014.09 です。 2012.03 よりも前のバージョンに…

Amazon Linux 2014.03 の kernel update 時に instance が起動しなくなる問題の対処法

追記: Amazon Linux 2014.03 の問題ではなく、yum.conf の設定の問題でした。Amazon Linux で yum.conf に installonlypkgs を正しく設定しないと kernel update で問題が発生する - tkuchikiの日記 に詳細を書きました。解決方法自体は間違っていないので、…

yum でインストールした rpm がどの repository のものか調べる

インストール済みの rpm がどの repository のものかは、yumdb コマンドで調べられます。 YumDB - yum - Trac に詳しく書いてありますが、 $ yum install -y yum-utils して、yumdb コマンドを入れたあとに、 $ yum search from_repo REPO_NAME で以下のよう…

PhantomJS 1.10 の RPM を生成できない場合の対処法

git checkout 1.9 をしないで、master の PhantomJS 1.10(development) を rpmbuild する際の手順です。 1.9 では、問題ありませんでした。Build | PhantomJSの手順で、RPM の作成まで行おうとしたところ、 $ ./mkrpm.sh phantomjs => Copying sources... =>…

Oracle の RPM で install した MySQL 5.5 から 5.6 への upgrade 手順

例として、5.5.28 -> 5.6.17 への upgrade 手順を記します。 Oracle の RPM を使う場合の手順です。 Oracle の mysql-community repo から yum で入れている場合は、 yum upgrade でできると思います。 RPM 取得 $ wget http://dev.mysql.com/get/Downloads/…

Ubuntu 14.04 で Docker 0.11.0 を動かす

Ubuntu 14.04 で Docker 0.11.0 を動かしたかったのですが、 apt-get update apt-get install -y docker.io で install される Docker の version が、 0.9.1 でしたので、Binaries - Docker Documentation を参考に install しました。 apt-get install -y …

現在の shell を shellscript の中から確認する(Linux, BSD 両対応)

現在の shell(以下、current shell) を確認する方法として真っ先に思い浮かぶのは以下だと思います。 $ echo $SHELL /bin/bash ただ、これは不正解で、$SHELL はあくまでも login shell ですので、 login shell と current shell が違う場合は正しい値を返し…

Monit でログを監視してプロセスを再起動させる

Monit を使って、 ログに特定の文字列が書き込まれた時にプロセスを再起動させる例です。以下の要件を満たすために検証しました。 原因を調べきれていないけれど時々セグフォしてしまう ずっと落ちたままだと困るので再起動させたい 数分で起き上がってくれ…

varnish-release-4.0 の spec ファイルを書いた

まだ公式に varnish-release-4.0 の rpm がなかったので、spec ファイルを書いた。末尾のコードを適切なディレクトリに設置して、以下のコマンドを実行する。 最後に yum install varnish でインストールできる。 yum install -y rpm-build rpmdevtools rpmd…

find でディレクトリに symlink が含まれるときはパスの末尾に / をつけるか、-L をつける

$ tree -p /tmp/ /tmp/ ├── [lrwxrwxrwx] foobar -> /tmp/hoge └── [drwxr-xr-x] hoge ├── [-rw-r--r--] hogege └── [-rw-r--r--] hogehoge 2 directories, 2 filesというディレクトリ構成の時に、 $ find /tmp/hoge /tmp/hoge /tmp/hoge/hogege /tmp/hoge/h…

Redis の rpm を簡単に作成できるようにした

以前、CentOS 6 用 Redis 2.6.13 の RPM 作成手順 - tkuchikiの日記 という記事を書いたが、 毎回記事を見ながら作業するのは面倒なので、変数を少し変えただけで作れるようにした。rpmbuild の環境がない場合は、以下を予め実行。 yum install -y rpmbuild …

yum の repo ファイルの enabled を変更するコマンド

/etc/yum.repos.d/*.repo の enabled を sed などで書き換えるのは面倒だなと思っていたら、 書き換えるコマンドがあった。 4.3.5. Yum リポジトリの追加・有効化および無効化ただし、CentOS の場合は、6 以降でないと利用することができない。 また、Amazon…

シェルスクリプトの for で seq 以外の方法で指定回数ループを回す

シェルスクリプトで指定回数ループを回す方法をぐぐってみたところ、 上位の結果は以下の方法がヒットした。 for i in `seq 1 3`; do echo $i; done # 実行結果 1 2 3 これってブレース展開でもできるんじゃ? と思ってやったら、予想通りできた。 for i in …

CentOS 6 用 Varnish インストール手順

色々なディストリビューション用のパッケージインストール方法が公式に記載してある。 RedHat 系のインストール手順は Installation on RedHat | Varnish Community だが、 el5 と書いてあるため、el6 用では無さそう。 一度インストールして、varnish.repo …

CentOS 6 用 Redis 2.6.13 の RPM 作成手順

ほぼ Redis 2.6 の RPM を作成する - akishin999の日記 の通り。 非常に参考になりました。ありがとうございます。 rpmbuild などをインストール yum install rpm-build rpmdevtools tcl-devel rpmdev-setuptree epel の redis rpm をインストール spec ファ…

CentOS 5 で node.js をソースからビルドすると npm でエラーがでる

CentOS 5 で nodejs をビルドしたら npm install で、 node: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.6' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.7…

yum の設定ファイルの行頭に余分なスペースをつけてはいけない

chef で、yum.conf の設定を、していたら '1h\ninstallonly_limit = 5': invalid value のようなエラーが出力されて、 一見おかしなところが見当たらなくて、??? となっていた。 設定ファイルをよくみてみると、行頭にスペースが。 これを消したら、エラーも…

パスワードを設定していないユーザで ssh ログインしようとすると公開鍵認証でもログインに失敗する

公開鍵認証で ssh ログインできるように設定していたが、 なぜか Permission denied でログインできない。 id_rsa や id_rsa.pub 、authorized_keys 、それらの Permission を見なおしても特におかしいところが見当たらない。 ssh の -v で debug message を…

tinyproxy の install と、proxy 経由での yum install

外部ネットワークに繋がっていないマシンに、 yum などのパッケージ管理コマンドでインストールする方法のまとめ。 proxy するマシンと外部ネットワークに繋がっていないマシンがある想定。手軽に使える forward http proxy : stone, Tinyproxy - 酒日記 は…

Mac で cp を使うときの注意

MacでFinderからドラッグ&ドロップしてディレクトリを上書きしようとすると置き換えられてしまう。 そこで、 cp -rf src dest のように実行したところ、 まったく上書きされていない。。。 Macのマニュアルを見てみると、 COMPATIBILITY Historic versions …

BSD(Mac) で find xargs sed を使う際の注意点

ファイルを一括置換するときに、 find /path/to/dir -type f | xargs sed -i "s/hoge/foobar/g" みたいにコマンドを打つことがあると思いますが、 Macでは、 sed: 1: "/path/to/dir": invalid command code . や、 sed: 1: "path/to/dir/file": extra charac…

opensslでパスフレーズ無効

openssl rsa -in example.com.key -out example.com.key 以下のように表示されるのでパスワードを入力 Enter pass phrase for example.com.key: writing RSA key 上書きするのはミスした時に危険なので、コピーしてやったほうがいいかも

指定日付以前のファイルを削除

必要になる度にググって検証して、と面倒なことをしているのでメモ。30日より前のファイルを削除の場合 find DIRECTORY -mtime +30 -name "*.sql.bz2" | xargs rm -fmtime は日単位の指定のみなので、 細かい指定をする場合はatimeを使う。 find DIRECTORY -…