Glide Note

glidenote's blog

ターミナルからPinboardのお気に入りを検索できるpblというツールを作った

お気に入りの登録先としてPinboardを絶賛フル活用しているんですが、 ターミナル上で作業していて、自分のブックマークを探すときに

  1. ブラウザでPinboardを開く
  2. 検索窓の検索キーワードを入れる
  3. 目的のページを探してクリックして開く

という流れが、地味に集中力を削ぐのでターミナル上からPinboardのブックマークが検索出来る pblというツールを作った。

導入方法

gem一発で入ります。

1
gem install pbl

使い方

たとえばfluentdとタグ付けされた自分ブックマークを探すときは下記のような感じ。 pitを利用しているので、 初回起動時はPinboardのアカウント情報を登録のためエディタが起動するかと思います。

1
pbl fluentd

こんな感じで表示される。

ターミナルの設定で、URLをクリックしてブラウザが開くようにしておけば、 わざわざブラウザでPinboard開いて検索する作業の手間が省ける。

pinboard-fuの作者の @banyanさんがテストを書いてくれたおかげで、Githubにpushするたびに Travis-ciでビルドが走ってくれていろいろと捗る。

@banyan++

ext3でリザーブ領域のサイズを変更

運用しているlog用サーバで、容量アラートが発生。 今すぐにリプレイスが出来ないのと、それほど緊急度も高くないので ext3のリザーブ領域を割り当てて対応。

300GBのHDDを搭載していて、ディスクの5%(15GB)がリザーブ領域に 割り当てられている状態だったので、リザーブ領域を10GBに縮小して、 ユーザーが利用出来る領域を5GBほど増やす。

指定するときはブロックサイズかパーセントで指定。 今回は10GB残すので、オプションは-rでブロックサイズ2621440を指定。 オンラインのまま変更可能です。

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@log2 ~]# df -ah /dev/sda3
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda3             292G  271G  5.8G  98% /

[root@log2 ~]# df -ah /dev/sda3
/dev/sda3             292G  271G  5.8G  98% /

[root@log2 ~]# tune2fs -r 2621440 /dev/sda3
tune2fs 1.35 (28-Feb-2004)
Setting reserved blocks count to 2621440

[root@log2 ~]# df -ah /dev/sda3
/dev/sda3             292G  271G   11G  97% /

もしパーセント(%)で指定する場合は-mで指定。

1
tune2fs -m 3 /dev/sda3

5GBほどユーザーが書き込める領域が増えた。 1週間で500MBくらいのディスク消費だったので、10週間くらいの延命出来たはず。

複数のサーバから一斉にファイルを収集するのにpslurpが便利

以前、ブログに書いて以来、活用しているpsshpscpなんですが、 付属コマンドのpslurpについてはすっかり忘れて全く利用していなかったんですが、 同僚の刺身さんが結構活用しているというのを聞いて、改めて使ってみると大変便利!

環境はSL6.1です。

pslurpの使いどころ

  • 複数のサーバからaccess.logなどのログ、my.cnfといった設定ファイルなどの同名ファイルを持ってくる場合
  • DNSラウンドロビンや、ロードバランサを利用していてアクセスログが分散している場合

通常何も考えずscpとかで持ってくるとファイルが上書きされてしまうので、 ホスト毎にファイルを分けて管理したい場合にpslurpが活躍します。

pipを利用してpsshの導入

2012年なんでeasy_installではなく、pipを利用して導入。

1
sudo pip install pssh

接続先のサーバリストの作成

db_server.txtとかで下記のようなファイルを用意。 各ホストには鍵が通っている必要があります。

1
2
3
4
5
6
7
8
9
10
mysql0.glidenote.lan
mysql1.glidenote.lan
mysql2.glidenote.lan
mysql3.glidenote.lan
mysql4.glidenote.lan
mysql5.glidenote.lan
mysql6.glidenote.lan
mysql7.glidenote.lan
mysql8.glidenote.lan
mysql9.glidenote.lan

ファイルの一斉取得

下記のようなコマンドでファイルを一斉に取得

1
2
sudo pslurp -h db_server.txt /etc/my.cnf .
sudo pslurp -h db_server.txt /var/log/secure .

下記のようにホスト毎にディレクトリが作られて、ファイルが収納される。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[akira@manage] $ tree
.
|-- db_server.txt
|-- mysql0.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql1.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql2.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql3.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql4.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql5.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql6.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql7.glidenote.lan
|   |-- my.cnf
|   `-- secure
|-- mysql8.glidenote.lan
|   |-- my.cnf
|   `-- secure
`-- mysql9.glidenote.lan
    |-- my.cnf
    `-- secure

同じようなことをシェルスクリプトでやろうとするとディレクトリ作ったりとか 下記のような感じで面倒くさい。

特定の日時のログを一括で確認したい場合や、サーバ全台の設定ファイルの比較とかに活用出来ます。

ファイルのデプロイに関してはpuppetやwebistranoなどで管理が出来ていますが、 ファイルの一斉収集についてはpslurpが良い感じですね。

VundleでBundleInstall時に新規バッファが生成されるようになっていた

新規サーバや新規開発環境で利用しているvimの初期セットアップ用の スクリプトがこけていて、調べたら

1
vim +BundleInstall! +q

というコマンドの+qでvimが終了しない状態だったので、 下記のようなつぶやきをしたら

@mattn_jpさんから

との助言を頂き、早速下記にコマンドを修正。

1
vim +BundleInstall! +qall

ちゃんと初期セットアップのスクリプトが走るようになった。 vundleがいつのバージョンからか BundleInstall時に新規Bufferを作るようになったのが原因だった模様。

@mattn_jpさん、いつもありがとうございます!!

同じ問題を最近チェックし始めたspf13/spf13-vimの インストールスクリプトでも見つけたので、下記のようなPull Requestを送ってmergeされた。

Pull Request #117: after bundle install, close all buffers. by glidenote · spf13/spf13-vim

vundle利用している人は、同じようなスクリプトを利用していると思うので要修正ですね。