2002/08/28
cpu
コマンドcpu
コマンドは UNIX の rlogin
に相当する。rlogin
するために con
が準備されており、また逆に UNIX から Plan9 への rlogin
の要求を処理できるようにもなっている。(Plan9 への rlogin
は送りての IP アドレスの信頼性に基づくものではなく、ちゃんとした認証が要求される。)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
コマンドは確かにサーバのプロセスを表示している。tcp17010
は cpu
コマンドによるログインを処理するプロセスである。
cpu
コマンドは、特に指定しない限り ssh
同様、暗号で通信を行う。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
を使わないのである。ホスト側の全てのツールがマウントされた端末側のファイルに対して等しく働くのである。
cpu
コマンドでログインしているユーザは、相互に各自の端末のファイルシステムを見せあう事になろう。セキュリティの面からとても許容できるものではない。
リモートログインの問題は分散環境の中で発生するシステム要求をコンパクトに示している。UNIX の開発者たちは恐らくバークレイの場当たり主義的なアプローチを苦々しい思いで見ていたであろう。rlogin
的なシステムデザインはUNIX の開発者たちが許容する所ではない。彼らはいつも「どうあるべきか」、そのためには「どうすべきか」と考えるのである。
cpu
コマンドはホストがマウスを使用していると
term% cpu -h al rio: can't find mouse: device or object already in useのメッセージを出して、先に進まない。