Logo address

cpu コマンド

目次

2002/08/28

リモートログインと cpu コマンド

Plan9 の cpu コマンドは UNIX の rlogin に相当する。
Plan9 には UNIX に rlogin するために con が準備されており、また逆に UNIX から Plan9 への rlogin の要求を処理できるようにもなっている。(Plan9 への rlogin は送りての IP アドレスの信頼性に基づくものではなく、ちゃんとした認証が要求される。)
しかしながら、Plan9 端末から Plan9 の CPU サーバにリモートログインする場合には cpu コマンドが推奨される。実際の様子を示しながら解説しよう。
	term% cpu
	cpu% ps
	bootes            1    0:00   0:00      88K Await    init
	bootes            2    0:46   0:00       0K Wakeme   genrandom
	bootes            3    0:00   0:00       0K Wakeme   alarm
	bootes            5    1:31   0:00       0K Wakeme   etherread
	bootes            6    0:00   0:00       0K Wakeme   recvarpproc
	...
	arisawa       28550    0:00   0:00     120K Await    tcp17010
	arisawa       28551    0:00   0:00     240K Await    rc
	arisawa       28552    0:00   0:00     120K Pread    tcp17010
	arisawa       28568    0:00   0:00     184K Pread    ps
	cpu%
ホストの指定なしで cpu コマンドを発行した場合には環境変数 cpu の値 ($cpu) で指定されたホストにログインする。ログインに成功した事はプロンプトが cpu% に変化した事によってわかる。ps コマンドは確かにサーバのプロセスを表示している。
ちなみに、tcp17010cpu コマンドによるログインを処理するプロセスである。

通信方式

Plan9 第4版では cpu コマンドは、特に指定しない限り ssh 同様、暗号で通信を行う。
従って Plan9 システムを相手にしている限り ssh は不要なのだ。

リモートコピー

cpu コマンドは UNIX の rlogin と異なり、ログインしたホストが端末のファイルシステムをマウントする。
	cpu% ls /mnt/term
	/mnt/term/29000
	/mnt/term/386
	/mnt/term/68000
	...
	/mnt/term/srv
	/mnt/term/sys
	/mnt/term/tmp
	/mnt/term/usr
	cpu%
/mnt/term 以下に見えているのは端末のファイルシステムである。
	cpu% ls /mnt/term/usr
	/mnt/term/usr/alice
	/mnt/term/usr/arisawa
	/mnt/term/usr/bootes
	/mnt/term/usr/glenda
	/mnt/term/usr/local
	/mnt/term/usr/none
	/mnt/term/usr/pegasus
	/mnt/term/usr/web
	cpu% ls /mnt/term/usr/arisawa
	/mnt/term/usr/arisawa/acme.dump
	/mnt/term/usr/arisawa/bin
	/mnt/term/usr/arisawa/cert
	/mnt/term/usr/arisawa/doc
	/mnt/term/usr/arisawa/ftp
	/mnt/term/usr/arisawa/http
	/mnt/term/usr/arisawa/lib
	/mnt/term/usr/arisawa/netlib
	/mnt/term/usr/arisawa/private
	/mnt/term/usr/arisawa/src
	/mnt/term/usr/arisawa/tmp
	/mnt/term/usr/arisawa/www
	cpu%
端末のファイルはホスト側のファイルと同等に扱われる。従って cp コマンドでホスト側にコピーできる。その逆も成立する。rcp を使わないのである。ホスト側の全てのツールがマウントされた端末側のファイルに対して等しく働くのである。

おわりに

このような方法が採用できるのは、Plan9 の名前空間が私的なものだからである事に注意しなければならない。UNIX のように、全てのプロセスにとって共通の名前空間しか存在しないシステムであれば、cpu コマンドでログインしているユーザは、相互に各自の端末のファイルシステムを見せあう事になろう。セキュリティの面からとても許容できるものではない。

リモートログインの問題は分散環境の中で発生するシステム要求をコンパクトに示している。UNIX の開発者たちは恐らくバークレイの場当たり主義的なアプローチを苦々しい思いで見ていたであろう。rlogin 的なシステムデザインはUNIX の開発者たちが許容する所ではない。彼らはいつも「どうあるべきか」、そのためには「どうすべきか」と考えるのである。

cpu コマンドはホストがマウスを使用していると

	term% cpu -h al
	rio: can't find mouse: device or object already in use
のメッセージを出して、先に進まない。
第2版では問題は無かったのに…