怠惰な Linux: 管理者に必須の 10 の秘訣

より生産的な Linux システム管理者になるために

この記事で紹介する 10 の秘訣を学ぶと、宇宙で最も強力な Linux® 管理者になることができます・・・。いや、それほど大げさではないかもしれませんが、大規模な環境で作業する場合には、こうした秘訣が必要なのです。SSH トンネルや VNC、パスワードの復元、コンソール出力を盗み見る方法などについて学びましょう。それぞれの秘訣には例を挙げてあるため、皆さんが自分のシステムでそうした秘訣を試してみることができます。

最高のシステム管理者は効率のよさが際立っています。そして、普通の人ならば 2 時間かけて完了する作業を効率のよい作業ができるシステム管理者が 10 分で行えるとすると、そのシステム管理者には見返りがある (給料が上がる) はずです。なぜなら会社は時間を節約することができ、そして時は金なりだからです。

見返りを得るための秘訣は、皆さんの効率の高さを監督者に対してどう証明するかです。その秘訣をこの記事で説明しようとは思いませんが、怠惰な管理者の秘訣の詰まった袋から、怠惰な管理者には欠かせない珠玉の 10 の秘訣を示すことにします。これらの秘訣を実践すると時間の節約につながり、もし皆さんが効率の高い作業を行うようになったにもかかわらず給料が上がらなかったとしても、少なくとももっと長い時間 Halo (訳注: PC や Xbox 上で動作するシューティング・ゲームで、北米を中心に世界規模で販売され Xbox のゲームとしては最もヒットしたゲームタイトル) で遊べるようになります。

秘訣 1. 応答しない DVD ドライブをアンマウントする

新米のユーザーが言うには、Redmond ベースのオペレーティング・システム (訳注: Redmond は Microsoft のことを指しています。Redmond は Microsoft の本社の所在地です。) を実行しているサーバーの DVD ドライブのイジェクト・ボタンを押すと、即座に DVD がイジェクトされます。続けて彼は、大部分のエンタープライズ Linux サーバーでは、あるプロセスがそのディレクトリーで実行されているとディスクを取り出せない、と不満を言います。Linux 管理者としての経験があまりにも長い私であれば、何が実行されているのか、なぜ DVD ドライブが解放されないのかがわからなければ、そのマシンをリブートしてディスクを取り出すでしょう。しかしそれは効果的な方法ではありません。

DVD ドライブを占有しているプロセスを発見し、気のすむようにそのディスクを取り出したい場合には、次のようにします。まず、この状態をシミュレートします。ディスクを DVD ドライブに入れて端末を立ち上げ、以下のようにその DVD ドライブをマウントします。

# mount /media/cdrom
# cd /media/cdrom
# while [ 1 ]; do echo "All your drives are belong to us!"; sleep 30; done

今度は 2 番目の端末を立ち上げ、次のようにその DVD ドライブのイジェクトを試みます。

# eject

すると、次のようなメッセージが表示されます。

umount: /media/cdrom: device is busy

この DVD ドライブを解放する前に、誰がこのドライブを使っているのかを調べましょう。

# fuser /media/cdrom

すると、このプロセスが実行中だったことがわかります。そしてもちろん、ディスクを取り出せないのは私達の落ち度なのです。

さて、もし皆さんが root であれば、神のような力をもってプロセスを殺すことができます。

# fuser -k /media/cdrom

ブーンという音がして、ご覧のとおり、自由になりました。そこで、厳かにドライブをアンマウントします。

# eject

fuser は便利です。


秘訣 2: ホスト動作の場合に画面を正常に戻す

次のコマンドを試してみてください。

# cat /bin/cat

ご覧ください。端末がガラクタになってしまったみたいです。何を入力しても、まるで映画のマトリックスを見ているかのようになります。一体どうしたのでしょう。

そこで reset を入力します。しかしちょっと待ってください。reset を入力するということは、rebootshutdown を入力することと、ほとんど同じです。特に本番環境のマシンでこれを行おうとする場合には、皆さんの手には汗がにじみ出てきます。

しかし安心してください。どのマシンもリブートされないという自信を持って reset を行うことができます。遠慮せずに reset を入力してください。

# reset

すると、画面は正常に戻ります。この方法はウィンドウを閉じてから再度ログインする方法よりも、(特に、SSH でこのマシンに接続するまでに 5 台のマシンを既に試したような場合には) はるかに適切な方法です。


秘訣 3: 画面を共有した共同作業

頻繁に助けを求めてくる、製品技術部門所属のユーザー David が、次のような電話をかけてきます。「あなたが用意してくれた新しいマシンで supercode.c をコンパイルできない理由を理解できなので助けてください。」

皆さんは「わかりました」と答えます。「David、あなたはどのマシンを使っていますか。」

David は「posh です」と答えます。(そうです。この架空の会社では 5 台の本番サーバーにスパイス・ガールズのメンバーの愛称を付けています。) 皆さんは「わかりました」と答えます。皆さんは神のような root の力を発揮し、そして別のマシンで David になります。

# su - david

そして今度は posh に接続します。

# ssh posh

posh に接続したら、次のコマンドを実行します。

# screen -S foo

そして皆さんは David に大声で言います。

「David、あなたの端末で # screen -x foo というコマンドを実行しなさい。」

これによって、皆さんのセッションと David のセッションが神聖な Linux シェルの中で結合されます。皆さんが入力することも、彼が入力することもできますが、2 人とも、相手が何をしているかを見ることができます。こうすることによって相手のフロアまで歩いて行く必要がなくなり、また 2 人とも同じ制御を行うことができます。メリットとして、David はトラブルシューティングに関する皆さんのスキルを見ることができ、また皆さんが具体的にどのように問題を解決するのかを知ることができます。

そしてついに 2 人は何が問題なのかを発見します。David のコンパイル・スクリプトには、この新しいサーバーには存在しない古いディレクトリーがハードコーディングされていたのです。皆さんはそのスクリプトをマウントし、再コンパイルし、その問題を解決し、そして David は仕事に戻ります。そして皆さんは、先ほどまで行っていた怠惰な作業に戻ります。

この秘訣で 1 つ注意しなければならない点は、2 人とも同じユーザーとしてログインする必要があることです。screen コマンドには他にも便利な機能があり、ウィンドウを複数使ったり画面を分割したりすることができます。これらの詳細に関しては man ページを読んでください。

screen セッションにいる間に役立つ秘訣を最後に 1 つ授けましょう。screen セッションから切り離し、このセッションを開いたままにするためには、Ctrl-A D と入力します。(つまり Ctrl キーを押しながら A キーを押し、次に D キーを押すという意味です。)

再度このセッションに接続するためには、再度 screen -x foo コマンドを実行します。


秘訣 4. root パスワードを取り戻す

皆さんは root パスワードを忘れてしまいました。結構なことです。でもそうすると、マシン全体を再インストールしなければなりません。大変残念なことに、私は実際にそうする羽目になった人を数人以上見てきました。しかし、そのマシンにアクセスしてパスワードを変更することは驚くほど簡単なのです。この方法はすべてのケースに有効なわけではありません (例えば GRUB パスワードを作成した後、それも忘れてしまったような場合には使えません) が、通常のケースでの方法を Cent OS Linux の例を使って説明しましょう。

まず、システムをリブートします。そうすると、図 1 のような GRUB の画面が表示されます。矢印キーを動かし、通常のブートには進まず、この画面にとどまるように操作します。

図 1. リブート後の GRUB の画面
リブート後の GRUB の画面

次に、矢印キーでブートするカーネルを選択し、E を入力してそのカーネル行を編集します。すると図 2 のようなものが表示されるはずです。

図 2. カーネル行を編集する準備が整ったところ
カーネル行を編集する準備が整ったところ

再度矢印キーを使って kernel で始まる行を選択し、E を入力してカーネルのパラメーターを編集します。図 3 のような画面が表示されたら、図 3 に示すように単純に数字 1 を引数に付加します。

図 3. 引数に数字 1 を付加する
引数に数字 1 を付加する

次に EnterB を押すと、カーネルはシングル・ユーザー・モードでブートします。ブートしたら、以下のように passwd コマンドを実行し、ユーザー root に対するパスワードを変更します。

sh-3.00# passwd
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully

これでリブートすると、新しいパスワードでマシンをブートすることができます。


秘訣 5: SSH のバックドア

会社のファイアーウォールによってブロックされている社外の人からのリモート・サポートを必要とすることがよくあります。ファイアーウォールから外の世界に出られると比較的容易にファイアーウォールに穴をあけることができ、外の世界からファイアーウォールの内部へアクセスできる、ということを知っている人は、あまりいないようです。

最も直接的な表現として、これは「ファイアーウォールをつついて穴をあける方法 (poking a hole in the firewall)」と呼ばれます。私は SSH のバックドアと呼ぶことにします。この方法を使うためには、仲介として使用できる、インターネットに接続されたマシンが必要です。

ここでは例として、この仲介用のマシンを blackbox.example.com と呼ぶことにします。会社のファイアーウォールの背後にあるマシンは ginger と呼ばれ、技術サポートが使用しているマシンは tech と呼ばれます。図 4 はこのセットアップの様子を示しています。

図 4. ファイアーウォールをつついて穴をあける
ファイアーウォールをつついて穴をあける

作業は次のような手順で行います。

  1. これから行おうとすることが許可されているかどうか確認する必要がありますが、適切な人にその質問をするように注意します。皆さんがファイアーウォールに穴をあけると聞くと、大抵の人はぎょっとするでしょうが、それはその穴を介した通信が完全に暗号化されていることを知らないからです。さらに、誰かが社外にあるマシンを改造してから社内に入り込む必要があります。あるいは、「許可されなくても、見逃してもらう」人達の仲間に入る方法もあります。いずれにせよ、皆さん自身の判断で適切な方法を選び、それがうまくいかないからと言って私を責めないでください。
  2. ginger から blackbox.example.com に -R フラグを使って SSH で接続します。ここでは皆さんが ginger の root ユーザーであること、また tech は皆さんを助けるためにその root ユーザーの ID が必要である、と仮定しています。-R フラグによって、blackbox のポート 2222 の命令が ginger のポート 22 に転送されます。これが SSH トンネルの設定方法です。SSH トラフィックのみが ginger に到達できることに注意してください。ginger を裸のままインターネットにさらすわけではありません。

    これを行うためには次の構文を使います。

    ~# ssh -R 2222:localhost:22 thedude@blackbox.example.com

    blackbox の中に入ったら、ログインした状態のままに保てばよいだけです。通常はマシンをビジーな状態に保つために、次のようなコマンドを入力します。

    thedude@blackbox:~$ while [ 1 ]; do date; sleep 300; done

    そしてウィンドウを最小化します。

  3. 今度は tech に対して、特別な SSH フラグを何も使わずに thedude として blackbox に SSH で接続するように指示します。tech に皆さんのパスワードを渡す必要があります。

    root@tech:~# ssh thedude@blackbox.example.com.

  4. tech が blackbox に接続できると、tech は次のコマンドを使って SSH で ginger に接続することができます。

    thedude@blackbox:~$: ssh -p 2222 root@localhost

  5. すると tech はパスワードを入力するように促されます。tech は ginger の root パスワードを入力する必要があります。
  6. これで、皆さんと tech のサポートは一緒に作業しながら問題を解決することができます。さらには画面を共有することさえできます (「秘訣 4」 を参照)。

秘訣 6: SSH トンネルによるリモート VNC セッション

VNC、つまり virtual network computing は長年使われています。私が VNC を使いたいと思う典型的な状況としては、リモート・サーバーに何らかのタイプのグラフィカル・プログラムがあり、そのプログラムを利用できるのがそのサーバーでのみである場合です。

例えば「秘訣 5」で、ginger がストレージ・サーバーだとします。多くのストレージ・デバイスには、ストレージ・コントローラーを管理するための GUI プログラムが付属しています。こうした GUI 管理ツールは多くの場合、ネットワークを介してストレージに直接接続する必要がありますが、場合によるとこのネットワークがプライベートなサブネットである場合があります。従って、この GUI にアクセスするためには ginger からアクセスするしかありません。

-X オプションを使って ginger に SSH で接続し、GUI を起動する方法もありますが、多くの場合は必要な帯域幅が大きすぎ、イライラしながら待つ羽目になります。VNC の方がずっとネットワーク向きのツールであり、また VNC はほとんどすべてのオペレーティング・システムで利用することができます。

セットアップは秘訣 5 と同じであると仮定し、ただし tech が SSH ではなくVNC でアクセスできるようにしたいとしましょう。この場合も秘訣 5 と似た作業を行いますが、今度は VNC ポートを転送するという点が異なります。必要な作業は次のとおりです。

  1. ginger で VNC サーバー・セッションを起動します。そのためには次のようなコマンドを実行します。

    root@ginger:~# vncserver -geometry 1024x768 -depth 24 :99

    これらのオプションは VNC サーバーに対して、解像度を 1024 x 768、ピクセル深さを 24 ビット/ピクセルで起動するように命令しています。非常に遅い接続設定を使用している場合には 8 の方が適切かもしれません。:99 を使うことで、どのポートから VNC サーバーにアクセスできるかを指定します。VNC プロトコルは 5900 から開始するため、:99 を指定すると、ポート 5999 からサーバーにアクセスできることになります。

    このセッションを起動すると、パスワードを指定するように要求されます。ユーザー ID は、VNC サーバーを起動したユーザーと同じです。 (この場合は root です)。

  2. ginger から blackbox.example.com に SSH で接続し、blackbox のポート 5999 を ginger に転送します。これを ginger から行うためには、次のコマンドを実行します。

    root@ginger:~# ssh -R 5999:localhost:5999 thedude@blackbox.example.com

    いったんこのコマンドを実行したら、5999 番ポートが常に ginger に転送されるように、この SSH セッションを開いたままにしておく必要があります。この時点で、もし皆さんが blackbox 上にいるとすると、次のコマンドを実行するだけで ginger の VNC セッションにアクセスできるはずです。

    thedude@blackbox:~$ vncviewer localhost:99

    これでポートが SSH によって ginger に転送されます。しかしここでは、tech が VNC によって ginger にアクセスできるようにする必要があります。それを実現するためには別のトンネルが必要です。

  3. tech から SSH によってトンネルを開き、tech のポート 5999 を blackbox のポート 5999 に転送します。そのためには次のコマンドを実行します。

    root@tech:~# ssh -L 5999:localhost:5999 thedude@blackbox.example.com

    この場合は -L という SSH フラグを使用しています。このフラグによって、5999 を blackbox にプッシュするのではなく blackbox から 5999 をプルしています。blackbox に入ったら、このセッションを開いたままにする必要があります。これで tech から VNC で接続する準備ができました。

  4. tech から VNC で ginger に接続するために、次のコマンドを実行します。

    root@tech:~# vncviewer localhost:99.

    これで、tech は ginger と VNC セッションで直接接続されていることになります。

ここで説明したセットアップの方法は少し大がかりに思えるかもしれませんが、ストレージ・アレイを修理するために飛行機で国を横断して出張するよりも優れた方法です。またこの方法を数回実践してみると、この作業は非常に容易に行えるようになるものです。

この秘訣に、さらに 1 つ秘訣を追加しておきましょう。もし tech が Windows® オペレーティング・システムを実行しており、コマンドラインによる SSH クライアントを持っていない場合には、tech は Putty を実行することができます。SSH ポートを転送するように Putty を設定するためには、Putty のオプション設定を調べます。もしポートが先ほどの例の 5999 ではなく 5902 だった場合には、図 5 のように設定します。

図 5. Putty によって SSH ポートを転送し、トンネリングを行うことができます
Putty によって SSH ポートを転送し、トンネリングを行うことができます

もしこのように設定されているとすると、tech はまるで Linux オペレーティング・システムを実行しているかのように VNC で localhost:2 に接続することができます。


秘訣 7: 帯域幅をチェックする

次のような状況を想像してみてください。会社 A が ginger という名前のストレージ・サーバーを持っており、そのサーバーは beckham という名前のクライアント・ノードによって NFS マウントされています。会社 A は ginger の共有ファイルシステムを多数のノードに NFS マウントしたいため、ginger との間の帯域幅を実際にもっと広げる必要があると判断しました。

これを実現するための最も一般的な、そして安価な方法は、2 つのギガビット・イーサネット対応の NIC (Network Interface Card: ネットワーク・インターフェース・カード) を束ねて使用する方法です。なぜこの方法が安価かというと、通常はオンボード NIC が余っており、またネットワーク・スイッチのどこかにはポートが余っているからです。

そこで会社 A はこれを行いました。しかし今度は、「実際にどれほどの帯域幅があるのか」という問題が出てきます。

ギガビット・イーサネットの理論的な限界は 128MBps (メガバイト毎秒) です。この数字はどこから来たのでしょう。いや実は単純なのです。

1Gb = 1024Mb;1024Mb/8 = 128MB; "b" = "bits," "B" = "bytes"

しかし実際に得られる値はどうなのでしょう。そしてそれを測定するためにはどんな方法が適切なのでしょう。私が提案する 1 つのツールが iperf です。iperf を入手するためには次のように入力します。

# wget http://dast.nlanr.net/Projects/Iperf2.0/iperf-2.0.2.tar.gz

ginger と beckham の両方から見える共有ファイルシステムに iperf をインストールする必要があります。あるいは両方のノードにコンパイルしてインストールします。ここでは、両方のノードから見える bob というユーザーのホーム・ディレクトリーにコンパイルします。

tar zxvf iperf*gz
cd iperf-2.0.2
./configure -prefix=/home/bob/perf
make
make install

ginger で次のコマンドを実行します。

# /home/bob/perf/bin/iperf -s -f M

このマシンはサーバーとして動作し、そしてスピードの値を MBps で出力します。

beckham ノードで次のコマンドを実行します。

# /home/bob/perf/bin/iperf -c ginger -P 4 -f M -w 256k -t 60

両方の画面の出力から、スピードがどのくらいかを読み取ることができます。ギガビット・イーサネット・アダプターを持つ通常のサーバーでは、値はおそらく約 112MBps のはずです。この値は正常です。なぜなら TCP スタックと物理的なケーブルによって帯域幅が失われるからです。それぞれが 2 つのイーサネット・カードを束ねた 2 台のサーバーを直結することによって、私は約 220MBps を得ることができました。

現実には、ネットワークを束ねた NFS で得られる帯域幅は約 150 から 160MBps です。それでも、こうした数字から、ほぼ期待どおりの帯域幅が得られることがわかります。もし得られた帯域幅がずっと少なかったらば、何か問題がないかどうかをチェックする必要があります。

私は最近、異なるドライバーを使用していた 2 つの NIC を束ねるために、結合したドライバーが使われていた事例を経験しました。しかしそのパフォーマンスは非常に低く、約 20MBps の帯域幅しか得られず、2 つのカードを束ねなかった場合の値よりも低かったのです。


秘訣 8: コマンドラインのスクリプトとユーティリティー

Linux システム管理者は権限を持ってコマンドラインのスクリプトを使えるようになると、もっと効率的に作業を行うことができるようになります。そうしたスクリプトによる作業には、awkgrepsed のようなユーティリティーを使ってループを作成したり、データの解析方法を理解したりすることなどが含まれます。多くの場合、スクリプトを使用することによってキー入力を減らすことができ、またユーザー・エラーの可能性を低くすることができます。

例えば、インストールしようとしている Linux クラスター用に新しい /etc/hosts ファイルを生成する必要があるとしましょう。長く時間のかかる方法としては、vi など、お気に入りのテキスト・エディターを使って IP アドレスを追加する方法があります。しかしコマンドラインで下記のコマンドを実行すると、このコマンドの内容を既存の /etc/hosts ファイルに追加することができます。

# P=1; for i in $(seq -w 200); do echo "192.168.99.$P n$i"; P=$(expr $P + 1);
done >>/etc/hosts

こうすることによって、192.168.99.1 から 192.168.99.200 までの IP アドレスを持つ、n001 から n200 までの 200 種類のホスト名が作成されます。このような内容を手動でファイルに追加しようとすると、重複した IP アドレスやホスト名を誤って作成する危険性が高くなります。つまりここで紹介した方法は、組み込みのコマンドラインを利用することでユーザー・エラーを防げるという好例なのです。この方法が大部分の Linux ディストリビューションでデフォルトの bash シェルで使えることに注目してください。

もう 1 つの例として、この Linux クラスターの各計算ノードのメモリー・サイズが同じかどうかをチェックしたいとしましょう。こうした場合、ほとんどの場合は分散シェルや並列シェルを使うことがベスト・プラクティスなのですが、ここでは説明のために SSH を使って行うことにします。

パスワードなしで認証できるように SSH がセットアップされているとしましょう。そして次のコマンドを実行します。

# for num in $(seq -w 200); do ssh n$num free -tm | grep Mem | awk '{print $2}';
done | sort | uniq

このようなコマンドラインはかなり複雑そうに見えます。(この中に正規表現を入れたりすると、もっとひどくなります。) ではこれを分解し、秘密を探ってみましょう。

まず、001 から 200 までループで繰り返しをしています。この、前に 0 を付加する動作は、seq コマンドの -w オプションによって行われています。次に num 変数を置き換え、SSH で接続する対象となるホストを作成しています。ターゲット・ホストに接続できたら、そのホストにコマンドを与えます。この場合のコマンドは次のとおりです。

free -m | grep Mem | awk '{print $2}'

このコマンドは次のような内容になっています。

  • free コマンドを使ってメモリー・サイズをメガバイト単位で取得する。
  • free コマンドの出力を取得し、中に Mem というストリングがある行を grep を使って取得する。
  • awk を使って、その行の 2 番目のフィールド (そのノードの合計メモリー) を出力する。

この操作をすべてのノードに対して行います。

このコマンドをすべてのノードに対して実行すると、200 ノードすべてのすべての出力が sort コマンドにパイプ (|) されるため、すべてのメモリー値がソートされます。

最後に、重複しているものを uniq コマンドによって削除します。このコマンドの結果は、次のうちのどれか 1 つになります。

  • すべてのノード (n001-n200) のメモリー・サイズが同じ場合には、1 つの数字のみが表示されます。それぞれのオペレーティング・システムには、このメモリー・サイズが見えます。
  • ノードのメモリー・サイズが異なる場合には、いくつかの値がメモリー・サイズとして表示されます。
  • 最後に、あるノードに対して SSH での接続が失敗した場合には、何らかのエラー・メッセージが表示されるかもしれません。

このコマンドは完璧ではありません。あるメモリー値が想定した値と異なることに気付いたとしても、それがどのノードなのか、またいくつノードがあったのかなどを知ることはできません。そうした場合には別のコマンドを発行する必要があるかもしれません。

しかしこの秘訣を使うことで、何かを素早く調べることができ、どこか悪いところがないかどうかを即座に知ることができます。この秘訣の真価は、少し雑ではあっても手軽に素早くチェックできることなのです。


秘訣 9: コンソール出力を盗み見る

一部のソフトウェアはエラー・メッセージをコンソールに出力し、そうしたメッセージが必ずしも SSH セッションに表示されない場合があります。vcs デバイスを使用すると、こうしたメッセージを検証することができます。それには SSH セッションの中で、リモート・サーバーに対してコマンド # cat /dev/vcs1 を実行します。このコマンドによって、第 1 のコンソールに出力されているものが表示されます。また、2、3 などを使って他の仮想端末を表示することもできます。あるユーザーがリモート・システムに対して入力を行っている場合には、その人が入力している内容を表示することができます。

大部分のデータ・ファームの場合、この情報を見るためには、リモート・ターミナル・サーバーや KVM、さらには Serial Over LAN を使う方法がベストです。これらを使うことによって、帯域外データを表示できるという追加の利点もあります。vcs デバイスを使用すると帯域内データを高速に表示できるため、マシン・ルームまで行ってコンソールを見るという時間を節約することができます。


秘訣 10: ランダムなシステム情報の収集

秘訣 8」では、コマンドラインを使ってシステム中の合計メモリーに関する情報を収集する例を説明しました。この秘訣 10 では、検証やトラブルシューティング、あるいはリモート・サポートのために必要な重要な情報をシステムから収集するための他の方法をいくつか説明します。

まず、プロセッサーに関する情報を収集しましょう。これは次のコマンドによって容易に行うことができます。

# cat /proc/cpuinfo.

このコマンドによって、プロセッサーの速度と個数、そしてモデルの情報を得ることができます。多くの場合、grep を使うことで、求める値を得ることができます。

私が頻繁に行うチェックとして、システム上のプロセッサー数の確認があります。例えばデュアル・プロセッサーでクワッドコアのサーバーを購入した場合には、次のコマンドを実行します。

# cat /proc/cpuinfo | grep processor | wc -l.

この場合は 8 という値が得られることを期待します。もし 8 という値が得られない場合には、私はベンダーに電話をかけ、別のプロセッサーを送れと言うでしょう。

私が必要とする、もう 1 つの情報がディスク情報です。この情報は df コマンドで得ることができます。私は通常 -h フラグを追加し、出力をギガバイトまたはメガバイトで見られるようにします。また # df -h を使うと、ディスクがどのようにパーティション分けされているかを表示することができます。

そしてこうしたコマンドのリストの最後として、システムのファームウェアを調べる方法 (BIOS レベルと、NIC のファームウェアに関する情報を得る方法) を説明しましょう。

BIOS のバージョンをチェックするためには dmidecode コマンドを実行します。残念ながら grep では BIOS の情報を簡単に得られないため、パイプを使う方法はあまり効率的ではありません。私の Lenovo T61 ラップトップでは、この出力は次のようになります。

#dmidecode | less
...
BIOS Information
Vendor: LENOVO
Version: 7LET52WW (1.22 )
Release Date: 08/27/2007
...

この方法はマシンをリブートして POST 画面の出力を調べるよりもずっと効率的です。

イーサネット・アダプターのドライバーとファームウェアのバージョンを調べるためには、ethtool を実行します。

# ethtool -i eth0
driver: e1000
version: 7.3.20-k2-NAPI
firmware-version: 0.3-0


まとめ

コマンドラインのエキスパートからは何千もの秘訣を学ぶことができます。そうした秘訣を学ぶために最善の方法は次のとおりです。

  • 他の人と作業を行う。画面セッションを共有し、他の人が作業する様子を観察することによって、作業を行うための新しい手法を学ぶことができます。プライドを捨て、他の人にリードさせる必要があるかもしれませんが、そこから多くのことを学べる場合が多いものです。
  • man ページを読む。真剣な話として、(たとえ皆さんが知りつくしているコマンドに関しても) man ページを読むことによって、驚くほど多くのことを知ることができます。例えば、awk を使ってネットワーク・プログラミングを行えることをご存じでしょうか。
  • 問題を解決する。皆さんが起こした問題であれ、あるいは他の人が起こした問題であれ、皆さんはシステム管理者として常に問題を解決しています。これは経験と呼ばれ、そして経験によって皆さんは、より優れた効率的な作業ができる管理者になることができます。

ここで紹介した秘訣のうち、少なくとも 1 つから、新たなことを学べたのではないかと思います。こういった管理者に必須の秘訣は皆さんの作業効率の向上や経験の積み重ねに役立ちます。しかしもっと重要なことは、こうした秘訣を活用することで自由な時間が増え、もっと面白いこと (例えばビデオ・ゲームで遊ぶなど) に多くの時間をかけられるようになることです。そして最高の管理者は怠惰なものです。なぜなら彼らは働くことを好まないからです。彼らはある課題を最も速く行うための方法を見つけ、そしてその作業を即座に完了できるため、怠惰な時間を過ごし続けることができるのです。

参考文献

学ぶために

製品や技術を入手するために

  • developerWorks から直接ダウンロードできる IBM trial software を利用して、皆さんの次期 Linux プロジェクトを構築してください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=329677
ArticleTitle=怠惰な Linux: 管理者に必須の 10 の秘訣
publish-date=07202008