Logo address

プロセス管理

2005/05/13 更新

プロセスの落とし方(ユーザ編)

ユーザが自分のプロセスを落とすには
kill プロセス名
を実行する。すると
echo kill >/proc/nnn/note
が表示される。これはプロセスの落とし方を表示しているのであって、この段階で落とされた訳ではない。ここに nnn はプロセス ID である。同名のプロセスが複数存在する場合には、その分だけ表示される。これらのうち必要なものだけ実行すればよい。(マウスをつかって容易に選択的に実行できる)

場合によってはこのやり方では落とせない場合がある。もっと強い指定の仕方は

echo kill >/proc/nnn/ctl
である。kill を実行して得られた表示の note の部分を ctl に書き換えればよい*。
なお、これは UNIX の
kill -KILL nnn
に相当する。

* 次に述べる方法を方法を使ってもよい。

プロセスの落とし方(管理者編)

管理者は他のユーザのプロセスを落とす必要に迫られる。その場合には
Kill  プロセス名
を実行すればよい。この後は kill と同様である。

注意: /proc/nnn/* への chmod を行う場合に、/adm/users で管理者はそのユーザのグループリーダになる必要はない。/adm/users はファイルシステムのアクセス関係を定めているのであって、カーネルデバイスのアクセス関係を定めてはいない。
ホストオーナーは常にカーネルデバイスの制御権を持っているのである。

プロセスのデバッグ(ユーザ編)

当然の事であるがユーザは自分のプロセスをデバッグできる。詳しくは acid のマユュアルを見るがよい。通常は実行中、あるはブロークンプロセスをディバッグする。acid の実行方法は
acid プロセスID
acid の中で筆者が最もよく使うコマンドは
lstk()
である。スタックの状態が(詳しく)表示され、それによってどこで問題が発生しているかが分かる。

プロセスのデバッグ(管理者編)

管理者は任意のプロセスをデバッグできる。但しその場合
chmod 660 /proc/nnn/mem
を実行しておく。

none のプロセス

最近のカーネル(2001年?月)では none のプロセスの権利が強く制限された。
これまでは none のプロセスは none のプロセスを落とすことができた。
さらに none のプロセスは none のプロセスをデバッグできた。none のプロセスはシステムエージェントである事を考えると、その場合には当然ながら潜在的なセキュリティへの脅威が存在する。
現在のカーネルでは none のプロセスは他の none のプロセスにはアクセスできない。

Plan 9 の現在の仕様ではユーザ(例えば alice)はホストオーナーでなくても none のプロセスを生成できる。しかし生成したプロセスがデモンプロセスの場合や暴走した場合に alice にはそれを止める手段はない。ホストオーナーにお願いするしかないのである。これは明らかにおかしな仕様である。

ポートへの使用制限

Plan 9 はシステムポートの概念を持っていない。ユーザに使って欲しくないポートに対して、制限を掛けるには hogports を使う:
ip/hogports 'tcp!*!5900–5950'
hogports は範囲を指定するのであるが、この際に1つのポートに1つづつファイル記述子を消費していくので、広い範囲を指定はできない*。

* Plan 9 は1つのプロセスで使用できるファイル記述子の制限は事実上存在しない。多数のファイル記述子を使うと単に警告を出す。そのために
term% ip/hogports 'tcp!*!0-4096'
term% hogports 281: warning: process exceeds 100 file descriptors
hogports 281: warning: process exceeds 200 file descriptors
hogports 281: warning: process exceeds 300 file descriptors
hogports 281: warning: process exceeds 400 file descriptors
hogports 281: warning: process exceeds 500 file descriptors
hogports 281: warning: process exceeds 600 file descriptors
...
となるが、使いすぎるのはもちろん良い事ではない。この問題に関しては将来改善されるかもしれない。