質問

2009年06月03日 08時50分
  • Linuxのスペック確認ツールについて

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

こんにちは。

現在社内でLinuxが10台程度稼動しております。
このLinuxについて資産管理、稼働状況を確認したいのですが、
前任者が情報を残してくれていない状況で、
機器スペックなどの書類を探し出すのに難儀しております。

こんなとき、WindowsだとPCViweを使用してリソース情報を得たりできる
のですが、ですが、LinuxではPCViewのようなツール、
またはリソース情報を得れるようなコマンドがあるものでしょうか?

知りたい情報としては
機種名
ホスト名
シリアル番号
CPU
搭載メモリ
ディスク容量
OSバージョン
アプリケーション
稼動サービス
などです。

※OSはRedHatがほとんど、CentOSが若干存在している模様

全部をとまでもいかずともこのようなコマンドである程度知れる、
でもかまいません。
ツールやコマンドラインなどございましたらご教示下さい。
よろしくお願いします。

2件の回答があります

回答

質問内容を拝見する限りでは、これまで Windows の運用管理経験はあるものの、Linux についてはほとんど初めて触るに等しい…という印象を受けました。ですので、それを前提として説明させていただきます。もし「そんなことはとっくに承知だ!」と不快に感じることがありましたら、ご容赦ください。

「知りたい情報」としてリストアップされている例のほとんどについて(…つまり、OS から「見える」情報であるならば、ということです)は、Linux システムを管理する者であれば MUST で知っていなければならないはずの基本的なコマンドで見ることができますね(以下、コマンドの例として挙げているものについて、$ から始まるものは一般ユーザ権限でも実行できるもの、# から始まっているのは root 権限で実行する必要があるコマンドです)。

機種名
OS から見ると、チップセットや CPU などは重要な要素となりますが、それが IBM のマシンに積まれているのか、HP なのか、DELL なのか、といったことはどうでもいいことなので、マシンが遠隔地にあるとか、容易に視認できない場合を除き、実際に目で見て確認するのが一番早いと思います。メーカーに問い合わせてみれば、あるいはこの情報を収集できるツールを供給していたりするかもしませんが…。

ホスト名
$ hostname --fqdn

シリアル番号
メーカーが付けたシリアル番号のことを指しているのであれば、機種名同様視認するのが手っ取り早いのではないかと。

CPU
$ cat /proc/cpuinfo

搭載メモリ
$ cat /proc/meminfo もしくは $ free -m など

ディスク容量
$ df -h (ただし、マウントされていないパーティション、未割り当て領域がある場合は表示されません)

OSバージョン
$ cat /etc/redhat-release など(Red Hat 系でない場合は、ファイル名が異なります)

アプリケーション
「アプリケーション」というのが、いわゆる Windows のコントロールセンターの「プログラムの追加と削除」から見えるようなものをイメージしているのだとしたら、Linux (UNIX 系 OS)ではちょっと事情が異なる、ということをまずは理解してください。Linux の多くのディストリビューションでは「パッケージ」という概念を持っていて、ある「アプリケーション」が一つの「パッケージ」からなっていることもありますが、複数の「パッケージ」から構成されるということも珍しくはありません。なので、通常 Linux では「どのようなパッケージがインストールされているか」という見方をすることが多いです。

Red Hat 系であるならば…
$ rpm -qa
でインストールされている全ての「RPM」パッケージを見ることができます(「RPM」と断ったのは、もし何らかのプログラムを自前でソースからコンパイルするなどしてインストールしていた場合、それらは見えてこないため)が、おそらくたくさんインストールされているでしょうから
$ rpm -qa | less
などと、パイプラインでページャーに渡すとか
$ rpm -qa > installed_rpmlist.txt
などとリダイレクトしてテキストファイルに書き出し、後からそのテキストファイルを開いて見る方がいいと思います。

稼動サービス

chkconfig --list

…で稼働しているはずのサービスを確認できます(そのサーバがどの runlevel で稼働しているかについては、# runlevel で見てください)。また、

netstat -tuanp

…で、現在待ち受け中のサーバプロセスを見ることができます。

ちょっとシェルスクリプトがいじれるなら、これらのコマンドを全部実行し、出力される情報を一まとめにしてファイルに書き出すというスクリプトを作るのは簡単なことだと思います。問題は、これらのコマンドで得られる情報が何を意味しているのか理解できるか、にかかってくるとは思うのですが、その点については「頑張って勉強してください」としか言いようがありません。

上記個別のコマンドとは別に、ハードウェア全体の情報を一括で集めたい場合は、hwinfo というコマンドが使えます(ただし、hwinfo というパッケージがインストールされている or インストールできることが条件)。また、可能であるならば Webmin というツールを仕込んでしまえば、Web UI 経由でいりいろな情報を視覚的に見ることができるようにもなります。
参照: http://jp.webmin.com/

更に、今回試しにちょっと調べてみたところ、System Configuration Collector (SCC) という「使えそうな」ツールがあることを知りました。
http://scc.qnh-infrastructure.nl/index.html
デモサイトを見る限り、
http://scc.qnh-infrastructure.nl/examples/index.html
お知りになりたい情報のほとんどはこれで集められるのではないかという気がしますし、この先管理を続けていくうえでは、こういう集中管理ができるツールはかなり役に立ってくれるのではないかと思います。(自分自身で試したわけではないので、あくまで参考ということでご紹介しておきます)

2009年06月03日 11時10分

回答

hal パッケージの lshal というコマンドがあります。
同様なものに lshw というソフトもあります。
http://ezix.org/project/wiki/HardwareLiSter

どちらも慣れないと、出力結果から必要な情報を抽出する
のが難しいかもしれません。

あなたもコメントしましょう!