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
コマンドは確かにサーバのプロセスを表示している。ちなみに、
tcp17010
は cpu
コマンドによるログインを処理するプロセスである。
通信方式
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版では問題は無かったのに…