図1 新規ユーザーを追加する
図1 新規ユーザーを追加する
[画像のクリックで拡大表示]
図2 特定ユーザーが所有するファイルを探す
図2 特定ユーザーが所有するファイルを探す
[画像のクリックで拡大表示]
図3 実行中のプロセスを表示する<BR>psコマンドのオプションのauxはそれぞれ,自分以外のユーザーのプロセスも表示する(a),ユーザー名と開始時刻を表示する(u),制御端末のないプロセス(デーモン)の情報も表示する(x)ためのオプションである。表示項目で注目に値するのは,PID(プロセスID),%CPU(プロセスが使用しているCPU時間の割合),%MEM(プロセスが占めるメモリーの割合)である。VSZは仮想メモリー上の使用量,RSSは実メモリー上の使用量を表す。STATはプロセサの状態(STATE)を表示するもので,最初の1文字目が現在の状態を意味する。Rは実行可能状態,Sはスリープ状態,DはI/O待ち状態,Zはゾンビ状態であることを示す。
図3 実行中のプロセスを表示する<BR>psコマンドのオプションのauxはそれぞれ,自分以外のユーザーのプロセスも表示する(a),ユーザー名と開始時刻を表示する(u),制御端末のないプロセス(デーモン)の情報も表示する(x)ためのオプションである。表示項目で注目に値するのは,PID(プロセスID),%CPU(プロセスが使用しているCPU時間の割合),%MEM(プロセスが占めるメモリーの割合)である。VSZは仮想メモリー上の使用量,RSSは実メモリー上の使用量を表す。STATはプロセサの状態(STATE)を表示するもので,最初の1文字目が現在の状態を意味する。Rは実行可能状態,Sはスリープ状態,DはI/O待ち状態,Zはゾンビ状態であることを示す。
[画像のクリックで拡大表示]
図4 実行中のプロセスを終了する
図4 実行中のプロセスを終了する
[画像のクリックで拡大表示]
写真1 topコマンドを使ったプロセス状態の表示
写真1 topコマンドを使ったプロセス状態の表示
[画像のクリックで拡大表示]

 Linux搭載機を自分1人しか使っていないときは,システムがダウンしても他人に迷惑をかけないためシステム管理をなおざりにしがちだが,自分のシステムの面倒を自分できちんと見ることがシステム管理について学ぶ近道となる。

 Linux搭載機を自分だけで使っているときは,システムがダウンしても他人に迷惑をかけないためシステム管理をなおざりにしがちだ。しかし,ユーザーが自分1人であったとしても,アプリケーション導入時などには基本的なユーザー管理やリソース管理,パッケージ管理などの作業が必要になることが多く,こうした面倒を自分できちんと見ることがシステム管理について学ぶ近道となる。

 最近では,グラフィカルなインタフェースを備えた,X Window System上で動作するツールも各種登場している。ただし,ディストリビューションによってはそうしたツールが標準ではインストールされないし,サーバー用途ではXがインストールされないことも多い。一般的な知識を修得できるよう,ここではコマンドラインからの操作によりシステムを管理する方法を紹介する。

マルチユーザー環境
すべてはここから始まる

 マルチユーザーを前提にしたLinuxでは,ユーザー管理がシステム管理の第1歩になる。ユーザーが自分1人であったとしても,常時rootでログインして作業するのは危険だ。rootでログインすると,システムに対してあらゆる操作が可能になるため,ちょっとした不注意でシステムを壊してしまう。普段は一般ユーザーとしてログインし,必要なときだけスーパーユーザーになることを心がけよう。

 また,システムを使いこなしていくうちに,アプリケーション・ソフトのテストなどでテスト環境用の一般ユーザーを作成して,その環境で作業する場合が出てくる。テストが終了したときには,テスト用の一般ユーザーとその環境(/home/一般ユーザー名で作成されたユーザーのホーム・ディレクトリ)を消去しないと,ハード・ディスクに不要なデータが残ってしまい,無駄が生じる。

 新規ユーザーの追加を追加するには,useraddコマンドを使う。例えば,yamadaというユーザーを新たに追加する場合は,root権限でコマンドラインから図1[拡大表示]のように操作する。図1のpasswdコマンドを使うことにより,管理者はすべてのユーザーのパスワードを変更できる。一般ユーザーは自分のパスワードだけを変更可能だ。

 既存ユーザーを削除する場合には,

と入力すれば良いが,これだとそのユーザーのホーム・ディレクトリ(/home/yamada)は削除されない。ユーザーのホーム・ディレクトリも消去する場合には,-rオプションを付けて以下のようにuserdelコマンドを実行する。

ホーム・ディレクトリ以外に削除対象のユーザーが所有するファイルを探し出して消去する場合は,検索コマンドfindのオプション-userや-uidを使って,該当するユーザーのファイルを探し,それらのファイルを消去する(図2[拡大表示])。

プロセス管理
暴走ソフトに対処する

 Linuxを搭載したPCを使っていて,アプリケーション・ソフトの動作がおかしい,例えばシステム全体の処理速度が従来よりもかなり遅く感じたり,慢性的に処理能力が遅く感じられる場合には,まずプロセスの状態を確認してみよう。プロセスとは,実行中のプログラムに割り当てられたプロセッサの処理単位であり,それぞれ独立したメモリー空間を持っている。アプリケーションやシステム・ブート時に起動されて常時待機しているソフト(デーモン)は,1つまたは複数のプロセスに割り当てられ,適宜処理される。

 各プロセスの動作状態を見て,異常なプロセスがあれば終了する,あるいはプロセッサの占有率が高いプロセスを極力動かさないようにする,などの対処を施す。場合によっては,プロセッサをアップグレードするなど,より踏み込んだ措置が有効なこともあるだろう。

暴走したプロセスの見つけ方

 暴走しているプロセスがある場合には,それを強制終了しよう。暴走しているプロセスがプロセッサや主メモリーといったリソースを無駄使いすることが多いためだ。例えば,WebブラウザのNetscape Navigatorの動作が極端に遅くなるなど,暴走している可能性がある場合は,Netscape Navigatorのプロセスを調べて,それを終了する。

 動作中のプロセスを表示するには,実行中のプロセスを表示するpsコマンドを用いる(図3[拡大表示])。図3のps auxで表示される内容の"PID"が,各プロセスに付けられたプロセスのID番号(プロセスID)であり,プロセスを強制終了する場合にこのプロセスIDを指定する。

 図3の表示内容ではこのほか,%CPUと%MEMにも注意したい。プロセスが暴走すると,リソースを無駄使いすることが多いと前に述べたが,その場合には%CPUや%MEMの値が異様に大きくなる。このことを利用すると,プロセスが暴走しているのか否かの見当をつけられる。つまり,あるプロセスの%CPUと%MEMの値が正常時に比べて極端に大きければ,そのプロセスは暴走している可能性が高いと判断するのである。ただし,こうした判別を行うには,アプリケーションやデーモンを動かした際に生成される各プロセスの%CPUと%MEMの値が正常時にはどの程度の大きさなのかをあらかじめ把握しておく必要がある。

 なお,%CPUの値が他プロセスよりも大きいからといって,そのプロセスが一概に暴走しているとは言えないことに注意していただきたい。例えば,一般にバックグランドで動作する数値演算系のプログラムでは,大きな%CPUの値を示すことが多い。繰り返しになるが,プロセスが正常か,異常かを判断するには,安定して動作しているときの値を記録しておくことが不可欠である。

プロセスの状態に着目する

 プロセスの状態(STATE)も,暴走したプロセスを見つけ出す指針になる。プロセスの状態には,実行可能状態(psコマンドでの表示はR),SLEEP(S),I/O待ち(D),ゾンビ(Z)の4つがある。キーボードやマウス,ネットワークからの入力待ちのプロセスの状態はSであり,このときに%CPUの値が大きいようであれば,暴走している可能性が高い。

 I/O待ち状態のときはハード・ディスクにアクセス中であり,アクセスは短時間で処理されるためpsコマンドでI/O待ち状態が表示されることはほとんどない。あるプロセスが常時I/O待ち状態なら,何らかのトラブルが発生していると判断できる。

 ゾンビ状態とは,終了処理が正しく行われていないプロセスのことである。子プロセスの終了処理は親プロセス(子プロセスを生成したプロセス)が行うが,その親プロセスに問題があると子プロセスがゾンビ状態になることが多い。psコマンドにはプロセスの親子関係を表示するオプション(f)があるので,ps axfと入力してプロセスの関係を確認すると良い。親プロセスに問題があるようなら,親プロセスを終了しよう。親のいなくなったプロセスは,initプロセス(Linuxブート時に最初に起動されるプロセスで,すべてのプロセスの親プロセスになる)によって,終了処理が行われる。そのため,親プロセスが終了すると,ゾンビも終了する。

 プロセスを終了する場合は,killコマンドを用いる(図4[拡大表示])。暴走しているプロセスを強制終了する場合は,-KILLオプションを付けてkillコマンドを実行する。killコマンドでは,コマンド・オプションで対象プロセスに送るシグナルを指定する。-KILLオプションを付けると,プロセスを強制的に終らせるためのシグナルを該当プロセスに送る。

 プロセスの状態は,topコマンドを使っても把握できる(写真1[拡大表示])。procファイル・システムの内容を表示するpsコマンドよりも,topコマンドの方がより最新のプロセスの状態を表示できる。topコマンドは,1回実行されると継続的に最新の情報を表示し続けるためだ。