2008年1月13日日曜日

色々なプロセス構成

linux上で動くプログラムを書くことがお仕事だとして、screenやmutt、w3m、telnet、fdなどをcygwin上かlinux上か、どこで動ごかすと使い勝手は良いのだろうか?という疑問。
状況を整理してみますうぅ。

構成①として、
cygwin上で、bash→screen/mutt/w3m/telnet→linux上で、fd

また、私が推奨する構成②は、
windows上で、telnet→linux上で、screen/mutt/w3m/fd

構成①では、まず、Cygwinのターミナル(rxvtとかcygwin bashとか)を起動し、その上でscreenを起動します。screenからmuttやw3m、そしてtelnetでlinuxへ接続しfdを起動します。つまりメールやウェブはWindows上で動作させます。

対して、構成②は、まずPuTTYなどのWindowsのtelnetソフトでlinuxへ接続します。接続先のlinux上で、muttやw3mやfdを起動します。つまりtelnet以外は全てlinux上で動作させます。

構成①でも②でもあまり使い勝手に違いは無いのでしょうか?

screenはCtrl-Dでサスペンド、screen -rで復帰することができます。当たり前ですが、サスペンドしたscreenプロセスがdaemon化するなどの状態で生きていないと画面の復帰が出来ません(screenはdaemonとして行き続ける事で、対話動作のサブプロセスなどを制御しています)。例えば、cygwin bashから、rxvtを立ち上げてscreenを起動し、お仕事をして、中断のためCtrl-Dでサスペンド。もしその後でrxvtやcygwin bashを終了してしまうと、Ctrl-Dで中断しておいたはずのお仕事の続き画面がscreen -rで復帰できなくなります。cygwin bashを常に起動しておけばscreen -rで復帰できます。
linux上では、Ctrl-Dで中断したscreenプロセスがdaemon化してlinux上で生き続けている状態にありますので、telnetを切断しても、後程再接続すればscreen -rで続き画面を復帰できます。

linuxであろうがWindowsであろうが、システムの電源が落ちてしまえば、プロセステーブルは消えて無くなるので復帰できなくなることは同じなのですが、最近のlinuxサーバなど常時稼動が普通ですから、screenプロセスを生かしておくにはlinuxサーバ上が便利です。

一方、Cygwin上でmuttが走っていれば、ftpを経由した添付ファイルの転送など不要ですから便利です。

結局は、Windows用のプログラムを書くのか、linux用のプログラムを書くのか?ターゲット側でscreenを使用するのがよいようですねぇ

0 件のコメント: