Home

技術系のメモと日々の雑感

rsyslog でバッファのフラッシュを抑制するには

複数のサーバのログをまとめるために rsyslog の設定をしているときちょっとハマった。
syslog では action フィールドのファイル名の先頭にハイフンを付けるとバッファのフラッシュを抑制してくれるけど、これを rsyslog でテンプレートと組み合わせて設定する方法がよく分からなくて。
試しにログを受け取る側で

$template LogMaillog,"-/var/log/maillog_%HOSTNAME%"
mail.*     ?LogMaillog

などと指定してみたが、これではログファイルすら作ってくれない。
で、オリジナルサイトのドキュメントを眺めてようやく発見。
何のことはない

$template LogMaillog,"/var/log/maillog_%HOSTNAME%"
mail.*     -?LogMaillog

こっちだった。
あぁ〜、これだけで1時間以上悩んでしまった。
ところが、その後オリジナルサイトのドキュメントの Global Directives に $ActionFileEnableSync というのがあって、デフォルトで Off になっていることを知って愕然。
個別に設定する必要はなかったのか・・・。
syslog ではバッファをフラッシュするのがデフォルトだったはずなので、これは覚えておいた方がよさそうだね。

rc スクリプトの中の謎の変数

Apache とかの rc スクリプトの中に

httpd=${HTTPD-/usr/sbin/httpd}

といった変数の定義があるね。
見たところ、この httpd には /usr/sbin/httpd がセットされるようだけど、何でこんな書き方をしているのか、気になりだすと夜も眠れない。
で、家にあるオライリーの「入門 bash」を見たらあっさり解決した。
上の例でいくと、変数 HTTPD が定義されているときはこの変数の値が使用されて、定義されてないときは /usr/sbin/httpd が使用されるそうだ。
なるほど。
/usr/sbin/httpd はデフォルト値ってことだね。
まぁ、大体想像していた通りだった。
ちなみに、上の書き方は ${HTTPD:-/usr/sbin/httpd} の省略形らしい。
といってもただの省略形じゃなくて、コロン「:」が付いているときは、変数が定義されていて、かつ NULL でないこともチェックするんだそうだ。
あぁ、これでぐっすり眠れるよ。

yum のリポジトリをローカルに作る

yum のリポジトリをローカルに作るために色々と情報を漁ってみたけど、必要な手順だけの最短コースをまとめたものが見つけられなかったので、ざっと書いておくことにする。
環境は CentOS 5.2。
ローカルのリポジトリだけで yum update できる環境がゴールだ。
トライ&エラーで手順をまとめただけだから、勘違いや間違いがあるかもしれないので、これを見て試す人はご注意を。

続きを読む

ls のデフォルト配色設定の変更

いつも Teraterm の背景を黒に設定しているんだけど、これだと ls のディレクトリの色が見にくいのはよく知られた話。
でも、ずっと設定を変えずに使っていた。
アカウントごとに設定を変える方法はすぐに見つかるけど、システム全体のデフォルト設定を変える方法がよく分からなかったからだ。
で、こないだふと手持ち無沙汰になることがあったので、暇つぶしに調べてみることにした。
環境は CentOS 5.2 で、Teraterm のバージョンは 4.61。
/etc/DIR_COLORS を変更してもコンソールの設定が変わるだけで Teraterm の表示に変化がないのは過去の経験で知っていた。
そこで、試しに /etc/DIR_COLORS をリネームしてみると、Teraterm 側は変わらず、コンソール側は環境変数 LS_COLORS が設定されなくなって、色付けされてない状態(すべて白)になった。
ということは、それぞれ別々に設定を持っているわけか。
そして、ここで set の出力を眺めているうちに謎が解けた。
COLORS という環境変数に /etc/DIR_COLORS.xterm という値がセットされていて、これで参照する設定ファイルを決めているらしい。
Teraterm の場合はこっちを変更しないといけないんだね。
今までこのファイルの存在に気づかなかったのは何でだろ。
念のためコンソールでログインしたら、予想通り COLORS に /etc/DIR_COLORS がセットされていた。
ここまで分かればあとは簡単。
/etc/DIR_COLORS.xterm の

DIR 00;34    # directory

の行を

DIR 01;34    # directory

といった設定に変更すればいい。
で、ここでひとつひらめいた。
/etc/DIR_COLORS.xterm は、名前の通り xterm とかの白背景に合わせて設定されていて、逆に /etc/DIR_COLORS は黒背景のコンソールで見やすいように設定されているわけだから、Teraterm も黒背景で使っているなら /etc/DIR_COLORS の設定をそのまま流用してしまえばいいじゃないかと・・・。
つまり

cp /etc/DIR_COLORS.xterm /etc/DIR_COLORS.xterm.default
cp -f /etc/DIR_COLORS /etc/DIR_COLORS.xterm

という風に設定をコピーしてしまうわけだ。(1行目はバックアップ)
しっかし、我ながらものぐさモード全開だな〜。
さらにもうひとつおまけ&備忘用のメモ。
上の設定は自分が管理するサーバでしかできないけど、そうじゃない場合に手っ取り早く配色を変更したいときは

export LS_COLORS='di=01;34'

これだけでいける。(未指定のファイルタイプにはデフォルトの値がセットされる)
アカウントごとの設定を真面目にやろうとすると、~/.dir_colors を作って

eval `dircolors ~/.dir_colors -b`

を叩かないといけないから、LS_COLORS を直接変更する方が簡単だ。

keepalived(VRRP) 検証中

keepalived で VRRP の設定をしていたときに疑問に思ったのが state と priority の関係。
普通に考えたら priority だけでいいんじゃないのかなって思って調べてみたら、ソースに含まれる keepalived.conf.SYNOPSIS の state のコメントに「Start-up default state」と書いてあった。
そっか。
state って keepalived を起動したときの状態を決めるパラメータなんだね。
某有名サイトで、マスタとバックアップの両方の state を BACKUP に設定しているのを見かけたけど、これで納得。
マスタが切り替わった後、新たにバックアップ側を立ち上げ直すときにも priority だけ調整すれば済むからだね、きっと。
真似させてもらおう。
あと、garp_master_delay についての説明がぜんぜん見つからなかったけど、同じように keepalived.conf.SYNOPSIS を見たら「delay for gratuitous ARP after MASTER state transition」とのこと。
garp って gratuitous ARP のことだったのか。
スッキリした。