PR

太田 俊哉

 本日は,Linuxマシンそのものの管理について説明します。Linuxマシンを起動,停止する,ログやプロセス,ディスクやネットワークを管理するためのコマンドを見ていきましょう(表1)。

コマンド名用途
shutdownLinuxマシンを停止する
sudorootの権限の一部を委譲する
w現在そのマシンを使っているユーザの一覧を表示する
write相手の画面に直接メッセージを送り込む
psCPU使用率やメモリーの使用率を監視する
killプログラムをで強制的に終了させる
dfファイル・システムごとのディスクの容量を確認する
duディレクトリごとのディスクの容量を確認する
表1●今回登場するコマンド一覧

マシンの起動/停止

 通常,Linuxマシンの起動は電源を入れるだけで済みます。しかし,マシンの停止は簡単にはいきません。もともとLinuxをはじめとするUNIX系のマシン(特にサーバー・マシン)は,停止しないのが普通だからです。

 もちろんクライアント的な用途で使うマシンは,通常,作業終了後に停止させます。昨今は,節電や省エネルギー,地球温暖化,経費節約などが叫ばれていますから,不要なときは電源を入れないことも重要になってきています。

 Linuxマシンを停止する際には,shutdownコマンドを使います。

shutdown -h 時刻(または何分後か)

を実行すると,指定した時刻(または指定した時間の経過後)にLinuxマシンが停止します。

 さて,マシンの停止は通常,root権限をもつユーザーが行ないます。というより,マシンの停止のような,システム全体に影響する操作を一般ユーザーが行うことは危険です。

 だからといって,クライアント的用途で使うときにも,毎回rootでアクセスして作業しなければならないのは,一般ユーザーに不要な権限を与えてしまうことになり,管理上問題になる場合があります。従って,一般ユーザーでマシンを停止させるためには,sudoコマンドなどで,rootの権限の一部を委譲する方法が取られます。また,GUIでログインできる方法を取った場合,Windows NT/2000のように,GUIログイン画面からマシンを停止できる場合もあります。

 RedHat系で使われているGNOMEのログイン画面(gdm)では,一般ユーザーでマシンの停止をできるようになっています。

 さて,LinuxをはじめとするUNIX系OSでは,そのマシンを使っているのが自分だけではないことに注意する必要があります。サーバー用途で使う場合は当然ですが,クライアント的に使う場合も,他のユーザーがリモートで使っていることがあるからです。必ず確認することが必要です。

 現在そのマシンを使っているユーザの一覧は,wコマンドで確認できます。wコマンドを使うと,現在ログインしているユーザー名が表示されますので,その人に連絡して,ログアウトしてもらってからマシンを停止します。連絡は,部内のような狭い範囲であれば「XX時YY分にマシンを停止します」と予告するのも一つの手段でしょう。

 メールなどの電子的な手段では,相手が確実に連絡を認識したかが分からないのが欠点です。また,writeコマンドで相手の画面に直接メッセージを送り込む方法もありますが,相手が見ていなければ意味がありませんし,昨今のGUI指向の環境で使っている場合には,メッセージを受け取る画面が表示されていない場合があります。むしろ,ICQなど,相手にショート・メッセージを送信するツールなどを活用した方が確実でしょう。

ログの管理

 システムはさまざまなログを取っています。トラブルがなければログはさほど出ないので,クライアント的な用途であれば,あまり気にする必要はありません。

 しかし,サーバーに使う場合はログの管理が必要となってきます。アプリケーションの動作が頻繁な場合,ログが増加することがありますし,不正アクセス対策など,場合によっては長期間保存したい場合もあるからです。その場合はシステムの標準設定を変更しなければなりません。

 ログは,大部分がsyslogというツールを経由して採取されています。ログの採取や採取のファイルは,syslogの設定ファイルを変更することで行ないます。syslogの設定ファイルは,通常「/etc/syslog.conf」というファイルになっています。このファイルを見直し,ログの発生量をコントロールします。

 また,ログ・ファイルは,ログ切り換えツール(logrotateやnewsyslogなど)で,自動的に切り替えと削除が行なわれています。例えばRedHatの場合はlogrotateコマンドで切り換えますので,「/etc/logrotate.conf」で設定を行ないます。このファイルには,ログの切り換え間隔,ファイル名,ファイルの世代数などを定義しています。例えば,メールのログ・ファイルとcronのログファイルを5世代,日次で切り換える場合には,


----------------------------------
/var/log/maillog {

  rotate 5 } /var/log/cron {      ←切り換えるべきログ・ファイル

  rotate 5      ←ファイルの世代数 } -----------------------------------

という記述を追加します。

図1●「top」プログラムでCPU使用率やメモリーの使用率を監視する

プロセス管理

 LinuxをはじめとするUNIX系のマシンでは,通常,同時に動かせるプログラムの上限が設定されています。通常はそのまま使って問題になることはないのですが,非常にたくさんのプログラムを動作させる場合(たくさんのアクセスがあるWebサーバー,配信量の多いメール・サーバーなど)を動作させる場合には,同時に動くプログラムの数が増えて,上限をオーバーする場合があります。そのほかにも,プログラムの種類によっては,標準的なOSの設定を変更する必要があります。そのためには,プログラムの動作状況を把握している必要があります。

 また,なにか動作がおかしい,例えば反応が急に鈍るような場合には,特定のプログラムがコンピュータ内の資源を食い荒らしている場合があります。その場合には問題を引き起こしているプログラムに終了してもらわなければなりません。

図2●psコマンドでもCPU使用率やメモリーの使用率を監視できる
 各プログラムの動作状況は「top」というプログラムで監視すると便利です。CPU使用率やメモリーの使用率を動的に,かつ表の形で表示するからです(図1[拡大表示])。静的に,その時点での動作確認をしたいのであれば,psコマンドが使えます。topやpsでプログラムの状況を見て,CPU時間が異常に多かったり(図2[拡大表示]),本来終わっているはずのプログラムが終わっていない場合には,killコマンドで強制的に終了させるなどして対応します。特に,仮想記憶を使い果たしてしまうと,killプログラムが動けず,誤動作しているプログラムを止められなくなりますので注意する必要があります。

ディスクの管理

 ディスクの容量は,長く運用すればするほど減ってくるものです。ディスクの容量は,dfで確認できます。dfで表示されるのは,各ファイル・システムごとの容量ですが,duコマンドを使うと,ディレクトリごとに容量チェックすることができます。dfとduコマンドを使って,使いすぎているところを見いだし,不要なものがないかを確認するとよいでしょう。

 また,ユーザーごとに最大利用量を決めることができるquota機能を使うと,使用容量の制御を行うことができます。

 定期的にディスク容量をコマンドで確認し,残り容量が不足気味になったら,利用者に警告を出したり,不要ファイルを削除します。それでも足らない場合には,ディスクを増設したり,複数のパーティションをシンボリック・リンクで継ぎ足して,空いているところを割り当てる方法もあります。しかし,,シンボリック・リンクは,使いすぎると複雑な構成になってしまいますので,使いすぎに注意する必要があります。

ネットワークの管理

 ネットワークの管理は,インストール時にさまざまな設定を行なえば,ネットワークの構成が変化しない限りそう大きな作業はありません。むしろ,トラブル・シューティングの方が多くなります。ネットワークがつながらない,反応が遅いなどのトラブル時には,ネットワークの状況を調べるいくつかのコマンドを使って,ネットワークの状態を検査します。よく使うコマンドには以下のものがあります。

コマンド名用途
pingIPアドレスで指定された,他のマシンまで,IPパケットが到着するか調査
tracerouteIPアドレスで指定された他のマシンまでの,ネットワークの経路を表示
netstat現在のネットワーク関連の各種のステータスを表示
ifconfig現在のネットワーク・インタフェースの状態を表示
nsloockpDNSに対する名前の問い合わせ
表2●ネットワーク管理のコマンド一覧

 例えば,他のマシンにつなげなくなってしまった場合,まず,pingで相手を確認します。応答がなければtracerouteを使って,どこでおかしくなったかを調べます。ifconfigで自分のネットワークインタフェースが正常に起動していることを確認後,線が物理的につながっているかどうかなどを確認していきます。

 また,反応が遅いなど場合は,netstatコマンドを使って,パケットがエラーになっていないかを確認します。エラーが多い場合には,配線や,ハブのポート,あるいはNICの故障なども考えられますので,順番に調査していきます。