Redisのmaxclientsを変更する時はmax open filesも変更する
実行環境:CentOS 6.7、Redis 3.0 Redisのconnected_clientsがデフォルトの上限10000に達していたので、maxclientsを上げようとしたが、エラーが出てしまった。 $ redis-cli info | grep connected_clients connected_clients:10000 $ redis-cli 127.0.0.1:6379>...
View ArticleVirtualHostのServerNameに環境変数を入れる、あるいはワイルドカードや正規表現で対応する
ApacheとNginxの場合でそれぞれ対応方法を見ていく。 Apacheと環境変数 ApacheのVirtualHostのServerNameに環境変数から作る文字列を入れたかった。...
View Articleファイルサイズだけを取得するコマンド
ファイルサイズだけを取得したい場合、ls -lとcutもしくはawkを組み合わせて取得する方法が真っ先に思い浮かぶ。 $ ls -l test.txt | cut -d' ' -f5 3104 $ ls -l test.txt | awk '{print $5}' 3104 コマンドを組み合わせなくても、ファイルサイズをbyte単位で取得するには、wc -c < ファイルだけでできる。wc...
View Articleコマンドで二つの時間の差分を取る方法
%H:%M:%S形式で二つ時間がかかれているファイルから、その二つの時間の差を取得する方法を考える。用途としては、ログファイルからstartとendの時刻を取り出し、その差分を計算するなど。 $ cat time.txt 17:34:21 19:21:14 dateコマンド、awkのmktime、rubyのTimeを使う方法をそれぞれ見ていく。...
View Article最新のJDKのrpmをコマンドで取得する
最新のJDKのrpmをコマンドで取得し、yum installする。手動でダウンロードせず、JDKの更新がスクリプトで実施可能になる。 $ SITE=http://www.oracle.com $ URL=${SITE}$(curl -s $SITE/technetwork/java/javase/downloads/index.html | egrep -m1 -o...
View ArticleIPアドレスを指定のプレフィックス長で変換する
192.168.1.0/24のようにプレフィックス24で表示されているIPアドレスの範囲をプレフィックス 26で表示してみる。 Rubyで実行するには、ipaddressライブラリをgemでinstallして使う。 $ gem install ipaddress ipaddress (0.8.3) $ ruby -r'ipaddress'...
View Articleある正数以上の数で最小のNの倍数をワンライナーで求める
ワンライナーの前にRubyである正数に最も近いNの倍数を求めるスクリプトを作る。 例として、ある正数を引数で渡して変数given_nrに格納し、Nを8とする。スクリプトファイル名をmultiple.rbとする。 まず考えられる解法は、given_nrをNで割り、余りがでなければgiven_nrを、余りが出れば商に1を足した数にNをかけたものを出力する方法だ。 N=8...
View ArticleMuninのプラグイン内でバックグラウンド実行したいときの注意点
Muninプラグインをshellスクリプト等で自作する中で、スクリプト内でバックグラウンド実行したいときは書き方に注意が必要だ。 例えば、スクリプト内で集計をして集計結果を出力したいとする。集計に時間がかかるので集計結果をファイルに吐いておき、出力は出力済みのファイルを読むだけにする。集計処理はバックグラウンド実行になる。 スクリプトを以下のように作成する。...
View Article二段階認証と通常のパスワード認証をユーザによって分ける方法
Google Authenticatorによる二段階認証を導入すると、ユーザごとにgoogle-authenticatorコマンドを実行してシークレットキーを作らないと、ログインできなくなる。 二段階認証を導入したので、設定をしていないユーザのログインができないのは当たり前だが、一部のユーザだけ通常のパスワードによるログインを許可したい場合は、二段階認証の設定に追加設定が必要となる。 Google...
View ArticlerbenvでOSのユーザごとにRubyのversionを分ける
rbenvはユーザごとにinstallし、Rubyもユーザごとにinstallするのが想定されている使用方法だが、Rubyのinstallをユーザに任せずシステム管理者がinstallする場合、rbenvをただ一つsystem wideにinstallして、どのユーザでもrbenvを使えるようにしたい。...
View Article送信先IPアドレスをiptablesで変える方法
あるホストから別のホストへ通信する際の通信先のホストのIPをiptablesで変換する方法を記載する。 送信先IPアドレスをiptablesで変えたい時 iptablesでの実現の仕方を書く前に、送信先IPアドレスをiptablesで変えたいのはどのような時か。例を2つあげたい。 グローバル経由でRedis Sentinelに接続する プライベートLAN内でReplication +...
View Articlebash固有機能を使うときはshebangをbashにするだけでは安全とは言えない
プロセス置換等、/bin/shでは利用できず/bin/bashを使う必要がある場合、シェルスクリプトを書くときに、shebangを気にする必要がある。しかし、shebangで/bin/bashを指定しても、シェルスクリプト実行時にsh script.shとしてしまうと問題が発生する。 /bin/shと/bin/bashとプロセス置換の問題 shebangが/bin/shの問題点...
View ArticleMuninの間隔を1分間隔に変更する
Muninの更新間隔をデフォルトの5分から1分間隔に変更する方法を記載する。(Munin version 2.0) Muninはcron(/etc/cron.d/munin)から起動されているのでcronの変更を行う必要があるが、cronの時間を変えるだけではダメ。変更作業中にMuninが動いて欲しくないため、一番はじめの作業としてcronのコメントアウトだけしておく。 #*/5 * * * *...
View ArticleMuninで各サーバのeth0をまとめる
Munin(2.0系)で/etc/munin/munin-conf.d/に配置しているconfigに書いてある各サーバのeth0をまとめたグラフを出力する方法。 元々以下のように3台のサーバが定義されていたとする。 [product;server0001] address server0001 use_node_name yes [product;server0002] address...
View Article安易に使わないほうがいいMySQLClientコマンド"edit"
前回、安易に使わないほうがいいLinuxコマンド”fc”を書いた。コマンドライン上で編集するときはEmacsキーバインドになるが、ヒアドキュメントなど長いコマンドを書くときにfcを使うとVimで効率よく書ける。しかしコマンド実行をキャンセルしようとした時の挙動が直感と異なるので、安易に使わない方がいいという主張だ。 全く同じようなことがMySQLクライアントコマンドでも言える。...
View ArticleGitLabにpushするときコミットメッセージをチェックする
RedmineのチケットとGitのコミットを紐づけるために、コミットメッセージにrefs #チケット番号を入れることをルール化したい。 クライアントサイドフックであるpre-commit...
View ArticleON DUPLICATE KEY UPDATEをAUTO_INCREMENTのテーブルには発行しない方がいい
AUTO_INCREMENTはINSERTするたびにカウントアップして発番してくれるが、ON DUPLICATE KEY UPDATEを使用してINSERTではなく既存行のUPDATEになった場合もカウントアップされてしまう。実際にINSERTしている行数はたいしたことがないのに、ON DUPLICATE KEY...
View Articlewc -lでは文末に改行がないファイルの行数を正しく数えられない
最後に改行がある場合は以下の通り問題ない。 $ printf 'test\ntest\n' test test $ printf 'test\ntest\n' | wc -l 2 wc -lは改行の数を数えるため、最後に改行がないと本当の行数より1少ない数を返してしまう。 $ printf 'test\ntest' test test$ $ printf 'test\ntest' | wc -l 1...
View Article各OSでのデフォルトI/Oスケジューラの違い
CentOS6とCentOS7とAmazon LinuxではデフォルトのI/Oスケジューラに違いがあるため、ioniceコマンドを実行するときやパフォーマンスチューニングをするときに注意が必要だ。 各OSでのデフォルトI/Oスケジューラ...
View Article