いますぐ実践! Linuxシステム管理

いますぐ実践! Linux システム管理 / Vol.239 / 読者数:2361名

こんばんは、うすだです。

IPAのサイトはとてもためになるので、ときどきチェックしているのですが、 以下の資料が公開されていることに気がつきました。

「2013年版 10大脅威 身近に忍び寄る脅威」を公開
http://www.ipa.go.jp/security/vuln/10threats2013.html

いずれも、まったく新規の脅威、というわけではありません。
ですが、普段何気なしに使っていると、意識しないまま、 うっかり被害者に…ということもありえない話ではないように思います。

3/20に韓国で起きた、大規模なサイバー攻撃のようなことが、 身近に発生しないとも限りません。備えあれば憂いはそんなになし、ですよね。

というわけで、最新の動向をある程度はおさえるべきだと思いますので、 気になる貴兄は、ご覧になってくださいませ。(無料ですし。)

…ところで、なんで「サイバー」なんでしょうね。

意外なところで素朴な疑問を感じつつ、今回もはりきってまいりますわ。

今回のお題 - ハードウェアの情報を収集する

仮想化が一般的になったとはいっても、 なんでもかんでもすべて仮想環境へ持っていけるわけではありません。よね。

また、仮想環境だとしても、その環境を自前で用意していたら、 ホストはどうしても物理的なマシンにせざるを得ません。よね。

結局、仮想環境でも物理環境でも、サーバのハードウェア構成やスペックは、 システム管理屋さんであれば把握しておく必要がございます。

まあ、きちんとしたところから、 きちんとしたサーバやサービスを買っているのであれば、 きちんとしたスペックが出てくるのかもしれません。

ですが、経緯があやふやだったり古いマシンだったりすると、 意外と詳細がわからなかったりすることがある、かもしれません。

じゃあ、自力で情報をかき集めればいいじゃない、ということで、 今回はハードウェアの情報を、各種コマンドを駆使してかき集めてみましょう。

まずは CPU から

CPU の情報は、おそらくみなさんご存じのとおり、 「/proc/cpuinfo」を参照すれば、想像以上のことがわかります。

  $ cat /proc/cpuinfo
  processor     : 0
  vendor_id     : GenuineIntel
  cpu family    : 6
  model         : 23
  model name    : Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz
  stepping      : 10
  microcode     : 0xa07
  cpu MHz       : 800.000
  ...中略...
  flags         : fpu vme de pse tsc msr pae mce cx8 apic ...
  bogomips      : 4522.01
  ...後略...

コアの数だけ、ほぼ同じ情報が繰り返し出てきます。
基本的には、モデル名(model name)がわかれば十分だと思いますが、 他の項目も興味深いものがいろいろあります。

たとえば、機能フラグ(flags)をみると、 その CPU が対応している機能を確認できます。 lm(long mode)があったら64bitに対応しているなどです。

また、bogomips で、大雑把なMIPS(1秒で実行できる命令数、100万単位)がわかります。 空のループの実行から割り出しているため、理想的な値になってしまいますが。 (ビジーウェイトで使うためのものですので…。)

お次は、メモリとかディスクとか

メモリは、同様に「/proc/meminfo」を参照すると、詳細がわかります。

  $ cat /proc/meminfo
  MemTotal:        8070128 kB
  MemFree:          482724 kB
  Buffers:          156916 kB
  Cached:          3551632 kB
  SwapCached:        15484 kB
  ...後略...

ただ、詳細すぎてわかりづらいため、「free」コマンドで十分ではないかと思います。

  $ free
             total      used      free   shared   buffers   cached
  Mem:     8070128   7591132    478996        0    156932  3556380
  -/+ buffers/cache: 3877820   4192308
  Swap:    8278012    181684   8096328

ディスクに関しては、「fdisk」コマンドでパーティションの情報が確認できます。 root権限が必要なため、「sudo」コマンド経由で実行します。また、 「-l」オプションをつけて、参照だけにとどめます。

  $ sudo fdisk -l /dev/sda
  [sudo] password for usu: (自分のパスワードを入力)
  ...中略...

     Device Boot     Start        End     Blocks  Id  System
  /dev/sda1   *       2048    3071999    1534976   7  HPFS/NTFS/exFAT
  ...中略...
  /dev/sda5      208293888 1916483583  854094848  83  Linux
  ...後略...

もう少し物理的な情報は、「hdparm」や「smartctl」といったコマンドで確認できます。 (IDE/SATA や S.M.A.R.T に対応していれば…ですが。)

  $ sudo hdparm -i /dev/sda
  [sudo] password for usu: (自分のパスワードを入力)

  /dev/sda:

   Model=TOSHIBA MQ01ABD100, FwRev=AX001U, SerialNo=XXXXXXXXX
   Config={ Fixed }
   RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
   BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=16
   CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
   IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
  ...中略...

  $ sudo smartctl -i /dev/sda
  ...中略...
  === START OF INFORMATION SECTION ===
  Device Model:     TOSHIBA MQ01ABD100
  Serial Number:    XXXXXXXXX
  LU WWN Device Id: 5 000039 452505b4e
  Firmware Version: AX001U
  User Capacity:    1,000,204,886,016 bytes [1.00 TB]
  Sector Sizes:     512 bytes logical, 4096 bytes physical
  ...後略...

ディスクに関しては、わりと近い過去にご紹介しております。
もう少しだけ詳しく知りたいかたは、以下をご覧ください。

Vol.231 - ディスク の様々な情報を参照する
http://www.usupi.org/sysad/231.html

BIOS なども確認できます

次は、BIOS です。

Linuxには「dmidecode」というコマンドがあり、 BIOSのバージョンや設定を確認することができます。
ただし、SMBIOS という規格に対応している必要があります。

SMBIOS - Wikipedia
http://ja.wikipedia.org/wiki/SMBIOS

root権限で実行すると、以下のような感じで、情報が得られます。

  $ sudo dmidecode
  [sudo] password for usu: (自分のパスワードを入力)
  # dmidecode 2.11
  SMBIOS 2.4 present.
  62 structures occupying 2258 bytes.
  Table at 0x000E0010.

  Handle 0x0000, DMI type 0, 24 bytes
  BIOS Information
          Vendor: LENOVO
          Version: 6DET40WW (2.04 )
          Release Date: 02/13/2009
          Address: 0xE0000
          Runtime Size: 128 kB
          ROM Size: 8192 kB
  ...中略...

  Handle 0x0001, DMI type 1, 27 bytes
  System Information
          Manufacturer: LENOVO
          Product Name: 7454CTO
          Version: ThinkPad X200
          Serial Number: LVXXXXX
          UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
          Wake-up Type: Power Switch
  ...後略...

SMBIOS だけでなく、DMI という規格に基づいて、CPUやメモリなどの情報も、 かなり細かく得ることができます。
(そもそも dmidecode というくらいですからね…。)

「-s」オプションとキーワード、「-t」オプションとタイプを指定して、 個別に確認することもできます。以下に例を示します。
(詳細は、オンラインマニュアル(man dmidecode)をご覧ください。)

  $ sudo dmidecode -s bios-version
  [sudo] password for usu: (自分のパスワードを入力)
  6DET40WW (2.04 )
  $ sudo dmidecode -t chassis
  ...中略...
  Handle 0x0003, DMI type 3, 13 bytes
  Chassis Information
          Manufacturer: LENOVO
          Type: Notebook
          Lock: Not Present
          Version: Not Available
  ...後略...

周辺機器も確認しておきましょう

PCI バスに接続されている機器の情報を得るには、「lspci」コマンドを実行します。

  $ lspci
  00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset \
  Memory Controller Hub (rev 07)
  00:02.0 VGA compatible controller: Intel Corporation Mobile 4 \
  Series Chipset Integrated Graphics Controller (rev 07)
  00:02.1 Display controller: Intel Corporation Mobile 4 Series \
  Chipset Integrated Graphics Controller (rev 07)
  00:03.0 Communication controller: Intel Corporation Mobile 4 \
  Series Chipset MEI Controller (rev 07)
  ...後略...

「-v」オプションや「-vv」オプションなどを指定すると、 詳細の情報を出力してくれます。EthernetやUSBなどのコントローラが確認できます。

  $ lspci -v
  00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset \
  Memory Controller Hub (rev 07)
          Subsystem: Lenovo Device 20e0
          Flags: bus master, fast devsel, latency 0
          Capabilities: 
          Kernel driver in use: agpgart-intel

  00:02.0 VGA compatible controller: Intel Corporation Mobile 4 \
  Series Chipset Integrated Graphics Controller (rev 07) \
  (prog-if 00 [VGA controller])
          Subsystem: Lenovo Device 20e4
          Flags: bus master, fast devsel, latency 0, IRQ 44
          Memory at f2000000 (64-bit, non-prefetchable) [size=4M]
  ...後略...

USB に関しては、「lsusb」コマンドで確認できます。
刺さっているUSBデバイスのIDや名前がわかります。

  $ lsusb
  Bus 002 Device 005: ID 0693:0013 Hagiwara Sys-Com Co., Ltd
  Bus 004 Device 002: ID 08ff:2810 AuthenTec, Inc. AES2810
  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  ...後略...

lsusb も、「-v」オプションで詳細がわかります。

  $ lsusb -v
  Bus 002 Device 005: ID 0693:0013 Hagiwara Sys-Com Co., Ltd 
  Device Descriptor:
    bLength                18
    bDescriptorType         1
    bcdUSB               2.00
    bDeviceClass            0 (Defined at Interface level)
    bDeviceSubClass         0 
    bDeviceProtocol         0 
    bMaxPacketSize0        64
    idVendor           0x0693 Hagiwara Sys-Com Co., Ltd
    idProduct          0x0013 
    bcdDevice            1.00
  ...後略...

…まあ、詳細というか、USBディスクリプタそのまんま、ですね。
(開発者にはありがたい情報ですが、管理者さんにはどうでしょうか…。)


PCIはとかUSBはとか個別じゃなく、もっとまとめて知りたい、という貴兄には、 「lshw」コマンドがよろしいかと思います。

  $ sudo lshw
  [sudo] password for usu: (自分のパスワードを入力)
  ホスト名
      description: Notebook
      product: 7454CTO ()
      vendor: LENOVO
      version: ThinkPad X200
      serial: LV02D84
      width: 64 bits
      capabilities: smbios-2.4 dmi-2.4 vsyscall32
  ...後略...

…ものすごく大量に出力されます。
というのも、CPUやメモリから、ネットワーク、PCI、USBなどほとんどの情報が、 これ1つで得られるためです。

…じゃあ、lshw コマンドの紹介だけでよかったですね…。

ちなみに、「-html」「-json」「-xml」などのオプションで、 それぞれのフォーマットの出力が得られます。

また、「-X」オプションを指定すると、GUI で情報を確認できます。
実際には、「lshw-gtk」コマンドが実行されますので、ないと使えませんが、 グラフィカルに操作できて、非常にわかりやすいです。
各種フォーマットに保存することもできます。

おわりに

以上、様々なコマンドを実行して、ハードウェアに関する情報を取得する方法を、 ご紹介しました。

まあ、lshw コマンドだけで十分という話もありますが、 環境によってはなかったりすることもありますし、 それぞれの情報元を知っておいたほうがよいということもあり、 ずらずらと書き並べさせていただきました。

宿題の答え

前回の宿題は、

  oom_score_adj の値が子プロセスに継承されるか、調べましょう。

でした。

というわけで、いつもの如く、安直なシェルスクリプトで確認しました。

#!/bin/sh
OOM_SCORE=/proc/self/oom_score_adj
for adj in 99 0; do
    echo $adj > $OOM_SCORE
    echo "self:  `cat $OOM_SCORE`"
    /bin/sleep 3 &
    CHILD_PID=$!
    echo "child: `cat /proc/$CHILD_PID/oom_score_adj`"
    wait
done

oom_score_adj を 99 に設定した後、sleep コマンドをバックグラウンドで実行し、 oom_score_adj を確認しています。
そして、念のため、0 に戻してもっかい同じことをしています。

これを、check_adj.sh とかいうファイル名で保存して、 実行できるようにして実行すると、おそらく以下のようになります。

  $ chmod +x check_adj.sh
  $ ./check_adj.sh
  self:  99
  child: 99
  self:  0
  child: 0

self: が自分、child: が sleep コマンドの oom_score_adj の値です。
おおかたの予想通り、継承されていることがわかります。

念のため、子どもだけでなく、孫やその下の世代にも継承されるか、 確認してみました。

#!/bin/sh
OOM_SCORE=/proc/self/oom_score_adj
ANCESTOR_NR=4
SCORE_NR=55
if [ $# -eq 0 ]; then
    generation=$ANCESTOR_NR
    [ $SCORE_NR -ne 0 ] && echo $SCORE_NR > $OOM_SCORE
else
    generation="$1"
fi
echo "$generation: `cat $OOM_SCORE`"
case "$generation" in
  $ANCESTOR_NR)
    $0 $(($generation - 1));;
  0)
    ;;
  *)
    $0 $(($generation - 1));;
esac

実行すると、こうなります。

  $ chmod +x check_adj2.sh
  $ ./check_adj2.sh
  4: 55
  3: 55
  2: 55
  1: 55
  0: 55

最初の世代で 55 を設定し、その後4つの世代に渡って継承されているのが確認できます。

ま、それだけです。ついかっとなってやりました。後悔はしていません。

今回の宿題

今回の宿題は、

  lshw コマンドの情報源を調べてみましょう。

です。

所詮はユーザ権限(非rootという意味ではなく、カーネルじゃないという意味です) で動作するコマンドですから、どこかを介して、 カーネルなどの情報を引っ張ってきているはずです。

なんとかして、その情報源(?)を探ってみてください。

余力があれば、dmidecode コマンドの情報源もわかるとよいですね。

あとがき

うちのトイレのウォシュレットは、強弱の設定と実際の水の強さが、 一致しません。しかも、押すたびに、同じ設定でも強さが変わります。
(世間一般的には、壊れている、という状態ではないかと思います。)

最弱の設定なのに最強で放出されたりすることがあるため、 常に緊張感を強いられます。(ポジティブに言えば、意外性があっておもしろいです。)

ただ、家族全員がそのことを知っていますので、 心構えをしてからボタンを押せばよく、家族一同、さほど不満には思っていません。

さて、ドラッカーのマネジメントには、 コミュニケーションを成立させるものは受け手だ、と書かれています。

そのため、受け手の経験に基づいた言葉で、 受け手が期待しているものが何か想定した上で行う必要がある、と思います。

我が家のウォシュレットの場合、家族全員が、 実際の水の出方と設定とが違うことを知っているので、 ウォシュレットとコミュニケーションできている、 と言えなくもないのではないか、と思われます。

ですので、ある表現が、一般的だからとか会社の規則に従っているからといって、 それが相手に正しく伝わっているとは限らないのかもしれない、 ということに、最近気づきました。

たとえば、「はい」か「いいえ」を問うダイアログの場合、 Windows では「はい」が右で「いいえ」が左に統一されていると思います。
ですが、Linux(というかGNOMEというかGTK?)では、 Windows とは配置が逆になっていることがあります。
たとえば zenity では、以下を実行すると確認できます。

  $ zenity --question --text=逆ですか?

ボタンにはちゃんと文字が書いてあるから、読めばわかるはずだ、 という主張もできますが、読まずに押しちゃう貴兄が、 少なからずいらっしゃるのではないかということが、容易に想像できます。
(わたしは何度か痛い目にあい、ボタンの文字を見るようになりました。 LinuxとWindowsを行き来している人は、そうなんじゃないでしょうか。)

というわけで、明確に記してあっても、 いままでの経験から読まずに判断されてしまうことがある、 ということを考慮すべきだと思いました。

 

…といったことを、トイレの中で、じわじわと考えていました。

最近、iPod touchをトイレに持ち込んで、某SNSやブログなどを閲覧しています。 あるとき、何となく電源を切って、ぼんやりしていたら、 上記のようなことを思いつくに至りました。

スマホとかあると、作業が効率的になったり時間を潰せたりして便利かもしれません。 ですが、それによってさらに考えなくなるのは、あまりよいことではないですよね。 なにごとも意識して使うべきだなぁと思います。

…まあ、その結果思いついたことがこんな程度でしかありませんが…。

 

さて、次回は、予定では 4月21日ですが、ご存じのかたはご存じの通り、 情報処理技術者試験の試験当日でもあります。

わたくし、もう何度目のチャレンジかわからないのですが、 今回もお金を払ってしまいました。よって、悪あがきたいと考えております。

そのため、次回はお休みをいただき、 多少なりとも試験勉強らしきことをしたいと思います。申し訳ございませんが、 ご了承ください。

 

そろそろまぐれで受かってもいいんじゃないか、という期待を込めて…。

 

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、5月6日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- 好不調の波が激しいですが…それでも毎日描いています。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)
http://twitter.com/kuriking/ (栗つぶやき)
http://facebook.com/kuriking3 (栗顔本)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本