klogdの動作を待たずとも、リングバッファから任意にカーネルメッセージを取り出すこともできる。dmesgコマンドがそのユーティリティである。
$ dmesg
ただし、dmesgだけではコンソールへの出力しか行えず、さらにデフォルトではリングバッファから最大16Kバイト分のメッセージしか読み取らないため、オプションなしの実行ではすべてのカーネルメッセージを読み取ることはできない。起動時のデバイス情報が格納されることで知られる/var/log/dmesgファイルも、起動スクリプト中*で以下のようにdmesgを実行し、出力結果を/var/log/dmesgファイルにリダイレクトされているにすぎない。
dmesg -s 131072 > /var/log/dmesg
リングバッファ全体のカーネルメッセージを読み取るには、「-s」オプションでサイズを指定して実行すればいい。例えば、256Kバイト分のメッセージをリングバッファから読み取るには以下のようにする。
# dmesg -s 262144 > /var/log/dmesg
なお、dmesgコマンドでもコンソールログレベルを設定できる。
# dmesg -n <コンソールログレベル>
syslogdは、klogdから受け取ったカーネルメッセージを実際にログに書き出す役割を負っている。書き出されるログは一般的に/var/log以下に保存され、その制御は/etc/syslog.confで行う。
基本的なsyslog.confの書式は、次のようになっている。
<facility>.<priority> <ログの配送先>
ここで、facilityはログの目的別分類、priorityはログを書き込む際の優先順位を制御するもので、それぞれリスト3、リスト4のように、/usr/include/sys/syslog.hで定義されている。例えば、次のようにするとpriorityがLOG_INFO、facilityがLOG_MAILのメッセージが/var/log/messeageに保存される。
mail.info /var/log/messages
また、syslogdでは、klogdからだけでなく、ユーザープロセスやシェルスクリプトから送られたメッセージについてもログファイルに書き出すことができる。ユーザープロセスからsyslogにメッセージを送るにはopenlog()、syslog()、closelog()関数を、シェルスクリプトではloggerコマンドを利用する。
Linuxでは、通常/procディレクトリ以下にprocファイルシステムと呼ばれる仮想ファイルシステムがマウントされており、/proc以下に存在する仮想ファイルに対して読み書きを行うことで、カーネル情報の取得やパラメータの表示/変更を行うことができる。表4、5は/procディレクトリ以下に存在する主な仮想ファイルである。例えば、マシンに搭載されているCPU情報を取得するには、以下のようにすればいい。
$ cat /proc/cpuinfo
設定ファイルからの情報収集 |
PDを行う上で、システムの設定ファイルを確認することも重要である。表6は、一般的なシステムや各種デーモンの設定ファイルである。
ハードウェアによっては、ベンダーがハードウェア構成情報を取得するツールを提供している場合がある。例えば、IBM eServer xSeriesでは、DSA(Dynamic System Analysis)と呼ばれるツールが下記サイトから入手できる。
IBM Dynamic System Analysis (DSA) Installable Edition
IBM Dynamic System Analysis (DSA) Portable Edition
DSAでは、/procやログ、設定ファイルから必要と思われる情報を一括して取得できるほか、BIOSやハードウェア関連の情報も取得できる。また、取得対象のシステムに直接インストールして起動するインストールタイプと、リムーバブルメディアから起動できるポータブルタイプの2種類が提供されており、使用環境に応じて使い分けることが可能である。どちらのタイプでも取得できる情報は同じで、取得した情報はXMLファイルとして保存される。そのほか、使用には前提条件があるため、readmeファイルを参照いただきたい。
Red Hat系ディストリビューションでは/etc/rcd/rcsysinit中、Debian GNU/Linuxでは/etc/rcSd/S55botmiscsh中に記述されている。
Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.