プロセス管理
プロセスの落とし方(ユーザ編)
ユーザが自分のプロセスを落とすには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
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'
* 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 ...となるが、使いすぎるのはもちろん良い事ではない。この問題に関しては将来改善されるかもしれない。