CLIマジック:システム情報を表示する
多くの場合、システム情報は特定のコマンドを実行することで得ることができる。これらのコマンドには、正にその情報を得ることを目的として書かれているものもあれば、システムを何らかの形で変更することが主な目的だがシステムの現在の状態を把握するためのパラメータをたまたま持っているというものもある。
また、ログや設定ファイルや/proc仮想ファイルシステム経由でシステム情報を得ることができる場合もある。そのようなファイルの多くはプレーンテキストで書かれているので、catやlessやmoreなど、ファイルの内容をコマンドラインに出力するための基本的なコマンドがあれば表示することができる。
システム情報を知るためのコマンド
システム情報を得るためのもっとも単純なコマンドの一つはarchで、Pentium系であればi586、Pentium IIかそれ以上であればi686、などとしてコンピュータのアーキテクチャを表示する。しかしもっと詳細なシステム情報を得たい場合には、「 uname -a
」を実行すれば、オペレーティングシステム、ローカルホスト、カーネルのリリース/ビルド情報、プロセッサのタイプが一行で表示される。また、「 fdisk -l
」を使ってパーティションのリストを表示したり、「 swapon -s
」を使ってすべてのスワップパーティションについての情報を表示したりすることができる。現在どのユーザがログオンしていてどのようなプロセスを実行しているのかやシステムの現在の使用状況などについての情報を知るには、「 w
」と入力するだけで良い。さらに、「 lsmod
」を実行してロードされているカーネルモジュールを知ることもできる。
メモリについての情報を知ることができるコマンドもいくつかある。RAMについての情報を得るための基本的なコマンドには「 free -m
」があり、システム上のRAMとスワップ空間の総容量や、それらの使用容量と空き容量などを知ることができる。一方ハードディスクの容量については df
コマンドを使えば、システムのすべてのファイルシステムの情報を表示したり、特定のファイルシステムの情報を表示したりすることができる。特に便利な使い方として「 df -hiT
」と実行すると、各ファイルシステムのiノード総数、その使用済み/空きの数、ファイルシステムの形式、マウントポイントなどを表示することができる。また特定のファイルやディレクトリの容量を知る必要がある場合には、「 du パス名
」または「 ls -s パス名
」を実行すれば良い。
インターネット接続に関する情報を知りたい場合には、「 nslookup ホストサーバ名
」を実行すれば、ドメイン名とアドレスが表示される。自分のマシンのドメイン名を知るためには「 dnsdomainname
」や「 hostname -d
」コマンドを実行する。一方、IPアドレスを知るためには「 hostname -i
」を実行する。
システム上のプロセスについての情報を知ることができるコマンドもいくつかある。プロセス関連のもっともよく使われるコマンドの一つは top
で、システム上でCPUをもっとも多く使用しているプロセスのリストを表示して、Ctrl-Cの入力で終了するまで継続的にリストを更新し続ける。一方、動作中の全プロセスのリストを表示するには「 ps auS
」を実行(パラメータの前にハイフンがないことに注意)すれば良い。実行中のプロセスの表示は pstree
でも可能で、プロセスの親子関係――つまり、どのプロセスがどのプロセスを起動したのか――を表示することができる。また fuser
を使用すれば、プロセスがファイルを使用しているかどうかを知ることができる。
さらに、ユーザについての情報と、ユーザが行なっていることについての情報を集めることができるコマンドもいくつかある。「 group ユーザ名
」コマンドを実行すれば、指定したユーザが属しているグループを知ることができる。また「 id ユーザ名
を実行しても同じ情報を得ることができて、さらにユーザIDとグループIDを知ることもできる。また「 finger ユーザ名
」を実行すれば、ユーザがシステムに最後にログオンした日時や、/var/mailに未読メールがあるかどうかなどの情報を確認することができる。さらに、例えばシステム用アカウントへのログイン/ログアウトを繰り返していた場合などで、自分が今誰なのか分からなくなってしまった場合には、whoamiコマンドを実行すれば自分自身を確認することができる。
その他の情報源
システム情報を得るためには、コマンド以外にもいくつかの方法がある。一つは/var/log内にある様々なログを見ることだ。ログにはシステム上で起こっていることについての最新情報が書かれている。例えば、その名からも分かるようにkern.logにはカーネルの活動が記録されている。またuser.logには、システムにログオンしたユーザ名と、ユーザが最近実行したことの内容が書かれている。トラブルシューティングの際には、「 tail -f ログファイル名
」を実行して、ログファイルを見ると良いだろう。
大抵のログはファイルを読むための普通のコマンドを使用して読むことができるが、ディストリビューションによっては特殊な形式で書かれているログもあり、それらを読むためには専用のコマンドを使用する必要がある。例えばDebianでは/var/logディレクトリの中に、ユーザが最後にログインを試みた日時を記録するfaillogというファイルや、ユーザ名とユーザが最後にログインした日時を記録するlastlogというファイルなどがあるが、どちらも内容を読むためには各ファイルと同名のコマンドを使用する。
またもう一つの主要な情報源に/procディレクトリがある。/procディレクトリは、ハードウェアやカーネルからシステム上で現在実行されているプロセスに至るまで、あらゆることについての現在の情報を持つ仮想ファイルシステムだ。中には1つか2つ下のレベルのディレクトリに保存されている情報もあって、例えば/proc/asound/cardsディレクトリの中にサウンドカードのリストがあり、/proc/scsi/device_infoディレクトリの中にSCSIデバイスのリストがある。ただし/procディレクトリの内容は読むだけにしておこう。ファイルの削除や移動や編集を行なうと、システムがクラッシュすることがある。
最後に、利用可能なファイルシステムのリストである/etc/fstabのような設定ファイルも有益な情報源だ。実際/etcディレクトリにあるファイルのほとんどは、特定のプログラムのトラブルに対処する際などには特に、様々な状況を把握するために役立つ。
/procや/etcの情報源の利点は、必要な情報を得るために特定のコマンドを覚えておく必要なしに、情報を表示することができるということだ。特定のコマンドから得ることのできる情報は、すべてではないにしてもほとんどの場合はこれらの情報源からも得ることができる。例えば「swapon -s
」というコマンドから得られる情報は、「cat /proc/swaps
」から得られる情報と同じだ。
どの情報源を利用するかには関わらず、GNU/Linuxは自らのシステム情報を余すところなく提供していて、すべてコマンドラインから利用することが可能になっている。ユーザに求められるのは、探求心だけだ。
Bruce Byfieldは、Linux.comとIT Manager’s Journalに定期的に寄稿するコンピュータジャーナリスト。