連載 ,/UNIX Communication N0tes¯⑩ doexplode は newsrun か起動するので、とくに管理 の手間は変わりませんし追加設定も不要です。 このバージョンの newsrun と doexplode のキ冓造では、 explode が実行中は relaynews は動きません。 explode と relaynews が並行して動作できるようにすれば、さら に処理効率が一ヒがるでしよう。 コントロール・メッセージ ~ 里 sendsys と version コントロール・メッセージは、到着 した時点では処理されません。システム管理者にメールで 通知したうえで、到着したことを NEWSCTL/delayed に記録します。実際の処理は、あとで NEWSBIN/relay /dodelayed がおこないます。通常、 1 日に 1 回実行さ れるはすの NEWSBIN/maint/newsdaily から dode- layed か呼び出されているので、前述のように到着から処 理まて最大 24 時間遅れるわけです。 この遅れを小さくしたければ、 cron からもっと頻繁に dodelayed を起動すればよいでしよう。逆に自動的に反 応してはしくなけれは、 newsdaily から dodelayed を起 動する部分を取り除き、手動で dodelayed を起動するこ ともできます。 ihave/sendme コントロール・メッセージも処理に手 間がかかるものの 1 つです。これもやはり、 relaynews は到着を言求だけして、内容の解釈 / 処理は sendbatches からおこなうようになりました。 インストールの注意 以則のバージョンの cnews のコマンド類は 1 度消し て、再度フルインストールしたはうが安全です。 NEWSARTS/out. master の mkdir などの作業も あるので、ひととおり、 build 、 doit. root 、 doit. bin 、 doit. news 、 again. root を実行しなくてはいけないの と、たんにインストールするだけでは、 NEWSBIN/ctl /senduuname など今回のバージョンでなくなったファ イルが残ってしまうからです。 NEWSBIN の下のファイルで改造したものがある場合 は、改造の内容を記録しておいて、インストールされた新 しいコマンドに、同様の改造を施します。追加したコマン ドは週壁しておき、 Cnews をインストールしたあと、も との場所に戻せばいいでしよう。 UNIX MAGAZINE 1992.8 コントロール・メッセージの実装 Cnews ではコントロール・メッセージは cancel 、 ihave 、 sendme を relaynews 自身が処理し、それ以外 は NEWSBIN/ctI に置かれたプログラムが処理するよ うになっています。そして、コマンド名はコントロール・ メッセージの名前と同一です。 relaynews は、コントロール・メッセージの有蛎生を判 断しません。ですから、新しく制定されたコントロール・メ ッセージに対応するためには、同名のコマンドを NEWS- BIN/ctl に置くだけでいいのです。 コントロール・メッセージ ある記事がコントロール・メッセージなのか判断する基 準は、 cnews では以下のいすれかです。 ・ Control: ヘッダをもつ。 ・ Newsgroups: の内容が 1 つだけであり、 終っている。 ・ Supersedes: ヘッダをもつ。 ・ Also-Control: ヘッダをもつ。 かっ . ctl " で Also-ControI は Bnews にはなかったものです。通 常のコントロール・メッセージは、属するニュースグル ープにかかわらす NEWSARTS/control に置かれます。 AIso-Control は通常の記事がコントロール・メッセージ も兼ねるもので、 Newsgroups: の内容に対応したディレ クトリに置かれます。 Cnews では、 Supersedes: は Also-Control: cancel に読み換えて処理されています。たとえば、 Supersedes : く 827569 取 adia. cs . naniwa¯u. ac ・ jp> は、 A1so—Contr01 : cancel く 82756@Ⅱ adia. cs . naniwa¯u. a にしましよう。 おこなうコマンドを、コントロール・コマンドと呼ぶこと こでは、コントロール・メッセージに対応する重川を コントローノレ・コマンド として処理されます。 c ・ jp> 57
連載 ZU NIX Communcation N0tes NE 、 VSCTL/sys の 2 行 リスト 1 . vehave/wazuka: ニュースグループリスト , ! t0 / a11 , ! 10Ca1 : 工 wazuka : tO . wazuka/all : f wazuka リスト 2 batchparms 40000 20 wazuka . wehave 40000 20 wazuka . S endme wa7uka . ihave 40000 20 20 wazuka 40000 batchih nocomp vxamews bat chra nocomp VIanowhere bat chsm nocomp VIaIneWS bat cher compcun VIauux batchih と同しく、 muncher に nocomp 舸もしな これで、次に sendbatches カ力いたときに、請求され い ) を、 sender に viainews を指定することで sendme た記事が wazuka に送られます。 コントロール・メッセージを投稿します。 まとめ sendme コントロール・メッセージの送イ wazuka と nadia が相互に ihave/sendme をおこ ihave コントロール・メッセージのときと考え方は同 なうには、 NEWSCTL/sys に 2 行、 batchparms に じで、 to. nadia というニュースグループに投稿された 4 行の設定が必要です。つまり、 nadia 側の設定では、 コントロール・メッセージが nadia に送られるように NEWSCTL/sys には、 Message-ID を溜めるために 1 NEWSCTL/sys と NEWSCTL/batchparms を設定 行、記事 ( コントロール・メッセージも ) を送るために 1 します。 行が必要です ( リスト 1 ) 。 batchparms には、 ihave の生成、受信した sendme sendme コントロール・メッセージの言 の処理、受信した ihave の処理、実際の記事の送信のため こからは、再び nadia 側での設定です。これも ihave に各 1 行が必要です ( リスト 2 ) 。ただし、最後の行の設 と同しく、 NEWSCTL/sys の ME の行に to を書い 定は /defaults/ の設定と同じなら省略できます。 ておくことと、ディレクトリ NEWSARTS/out. going それから、 NEWSARTS/out. going の下に 4 つの /wazuka. sendme を作っておくだけで OK です。 ディレクトリ、 wazuka5 、 wazuka. wehave 、 wazuka. i- sendme コントロール・メッセージを受け取ると、 re- have 、 wazuka. sendme を作る必要があります。 laynews は、コントロール・メッセージのファイル名を NEWSARTS/out. going/wazuka. sendme/togo に書 ihave/sendme の応用設定 き込みます。 ニュースグループなどによって、 ihave/sendme の適 sendme コントロール・メッセージの里 用を切り替えることもできます。 これもまた sendbatches でおこないます。そのために たとえは、 naniwa て始まるニュースグルーフ第羊だけは NEWSCTL/batchparms には、 nadia → wazuka が主イ合源であり、 ihave を送る必要 がないとしましよう。そのためには、 NEWSCTL/sys に nadia. sendme 40000 20 batchra nocomp vianowhere 次のように設定します。 と設定します。 wazuka: naniwa, tO. wazuka/all , ! 10Ca1 : f batchra はコントロール・メッセージのファイル名 wazuka. wehave/wazuka : a11 , ! 10Ca1 , ! naniwa を標準入力から受け取り、その本文の Message-ID リ ! to / a11 , !local:l ストを history と照らし合わせて記事のファイル名 (NEWSARTS からの相対パス ) に変換します。そして あるいは、次のようにしてもかまいません。 それを、 NEWSARTS/out. going/wazuka/togo に書 き込みます。 5 これは ihave/sendme をおこなわなくても必喫です。 61 UNIX MAGAZINE 1992.8
連載 / IJ NIX Communication N0tes—⑩ 2. (nadia) Message-ID リストを本文としてもつ ihave コントロール・メッセージを才齬哥する。 3. (nadia) sendbatches などで記事を wazuka に送る。 4. (wazuka) ihave コントロール・メッセージのなかの Message-ID と自分の history を照らし合わせ、もっ ていない記事の Message-ID リストを作る。それを本 文としてもつ sendme コントロール・メッセージを投 稿する。 5. (wazuka) sendbatches などで記事を nadia に送る。 6. (nadia) sendme コントロール・メッセージの本文 をなす Message-ID リストと自分の history とを照 らし合わせ、 wazuka 向けの記事のファイル名リスト (NEWSARTS/out. going/wazuka/togo) を作成す る。 7. (nadia) sendbatches などで、請求された記事を wazuka に送る。 ihave/sendme を双方向におこなう場合、 wazuka と nadia を入れ替えた同し手順が並行しておこなわれます。 ihave/sendme コントロール・メッセージはどちらも、 メッセージを発信したニュースシステム名を引数にもちま す。上の例だと、 nadia が発信する ihave コントロール・ メッセージのヘッダの Control: と Newsgroups: フィ ルドは、 Cont て 01 : ihave nadia Newsgroups : tO. vazuka となり、 wazuka が発信する sendme コントロール セージでは、 Contr01 : sendme . wazuka Newsgroups : tO. nadia となります。 ・メノ ihave/sendme プロトコルには大きく分けて 2 つの用 途があります。 1 つは、文字どおり相手がもっていない記 事だけを送付することで、無駄な伝送を減らすためです。 もう 1 つは、相手に送った記事に関する ihave をある程 度の時間をおいて送り、なんらかの事故で相手か取りこば した記事を自送するものです。こちらは冗長 ihave な どと呼ばれます。 UNIX MAGAZINE 1992.8 ihave/sendme の基本設定 以降、前述の手順に従って、普通の ihave/sendme に 必要な設定を説明します。冗長 ihave などはそのあとで説 明します。 前回までに説明したことですが、 NE 、 VSARTS/ out ・ going の下のディレクトリは手動で作成する必腰か あります。これを忘れると、 NEWSCTL/errlog に relaynews : can ) t open ( out ・ going/wazuka. wehave/ togo' ()O such file or directory) というエラーが残りますが、うつかりしていると翌日の newsdaily からのメールを読むまで気づきません。注意 しましよう。 Message-ID の蓄積 前々回 ( 1992 年 6 月号 ) に説明したように、第 3 フ ィールドを I としたエントリを NEWSCTL/sys に作り ます。 wazuka. wehave/wazuka:all , ! 10Ca1 , ! to / a11 , ! 10Ca1 : I 工ントリの名前が wazuka. wehave である必要はあ りません。 wazuka と wazuka. ihave は使えませんが、 wazuka に . ( ピリオド ) と何かを連結した名前ならなん でもかまいません。ただし、ピリオドを 2 回使っては いけません。つまり、 wazuka. i-have はいいのですが、 wazuka. i. have は駄目です。ここでは、 Cnews のドキュ メントの例のとおり、、 . wehave" を使います。 、、 /wazuka" とあるのは、 wazuka からきた記事に関す る ihave を wazuka に送るのは無駄だからです。これ で、記事の Message-ID が NEWSARTS/out. going/ wazuka. wehave/togo に蓄積されていきます。 第 2 フィールドで重要なのは、 !to です。これがな いと、 wazuka 以外のシステムに宛てた ihave コント ロール・メッセージが wazuka に送られてしまいます。 to. wazuka に投稿された記事は wazuka に送ってもいい ようなものですが、 ihave コントロール・メッセージ自身 に関する ihave を送ることになり、二重再送の危険が生し るので !to,to . wazuka とはしません。 同しことがほかのシステムに対しても起こります。この バージョンの Cnews で ihave/sendme を運用する則に 59
連載 /UNIX Communication Notes—O sys のすべてのエントリの第 2 フィールドを調べ、 a11 が 使われていたら !to,to. system か、 !to を付け加えなけ ればなりません。 ihave コントロール・メッセージの発生 sendbatches を通しておこないます。すでに説明した ように、溜まった Message-ID リストを適当な大きさに 分割して投稿するのですが、そのためには NEWSCTL/ batchparms4 に以下のように書きます。 wazuka. wehave 40000 20 batchih nocomp viamews 40000 と 20 は適当に変えてかまいません。 send- batches は Message-ID リストを指定されたサイズに 分割し、 builder ( この場合は batchih) に渡します。 batchih は、与えられる Message-ID リストの先頭に必 Subject : ihave nadia Newsgroups : t0 . wazuka. ctl Contr01 : ihave nadia 要なヘッダと空行、 これで sendbatches を起動すれば、 ihave コントロー ど ) が to. wazuka に投稿されるはすがないからです。 wazuka に送る意、がない記事 (Distribution: local な と記述します。 Distribution が all になっているのは wazuka : tO . wazuka/all : f : は、 wazuka に送ればよいのですから、 NEWSCTL/sys に to. wazuka に投稿されるコントロール・メッセージを ihave コントロール・メッセージの送イ言 われます。 るだけで、処理は次に newsrun カ可川する時点でおこな 才高した記事は NEWSARTRS/in. coming に置かれ ainews を指定します。 muncher に nocomp ( 何もしない ) を、 sender に vi- を入れます。あとはこれを inews に渡すだけですから、 60 なさい。 4 前回までに、イ可箇戸励、で誤って batchparams としています。ごめん ル・メッセージが wazuka に送られます。 NNTP など sendbatches 以外の手段で記事を送って いる場合には、 sys の第 3 フィールドを f ではなく F と する必要があるかもしれません。 ihave コントロール・メッセージの言 こからは wazuka 側の設定です。 ます to. wazuka 宛の記事を受け取るのですから NEWSCTL/sys の ME ( あるいは wazuka) に関する 工ントリの第 2 フィールドに to か all か書かれていなけ ればなりません。 NEWSCTL/active に to. wazuka がなくても大丈夫 ですが、 sys に登録がないと、 Jun 17 22 : 09 : 53.667 nadia ーく 168@nadia . cs . naniwa —u. ac. JP> Ⅱ 0 subscribed groups 1n 'tO. wazuka. ct1' UNIX MAGAZINE 1992.8 ない記事の Message-ID リストを出力します。 ジの内容を取り出して history と照らし合わせ、もってい 力します。引き続いて、各 ihave コントロール・メッセー という sendme コントロール・メッセージのヘッダを出 Subj ect : sendme wazuka Newsgroups : to. nadia. ctl CO tr01 : sendme wazuka batchsm に与えます。 batchsm はまず、 イル名リストが入っていることにはまったく関知せす、 sendbatches は、 out. going/nadia. ihave/togo にファ と書きます。 40000 と 20 は適当に変えてかまいません。 nadia. ihave 40000 20 batchsm nocomp vialnews NEWSCTL/batchparms に sendbatches を介しておこないます。 sendme コントロール・メッセージの発生 せん。 のディレクトリをあらかじめ作成しておかなければなりま out. going/nadia. ihave に書き込みます。そのため、 セージを受け取ると、そのファイル名を NEWSARTS/ relaynews は nadia からの ihave コントロール・メッ られます。 というエラーが NE 、 VSCTL/log に残り、記事は捨て
連載 ZUN Ⅸ Communication Notes—⑩ Cnews は、 Control: フィールドの内容をそのままコマ ンドとして実行します。コントロール・コマンドは、たん に引数を評価すればいいわけです。 記事の内容が未をもっコントロール・メッセージもあ るので、コマンドの標準入力に記事か渡されます。 たとえは、 Contr01 : newgroup nanxwa. foods というコントロール・メッセージが /usr/spool/news/ C0ntr0V1234 にオ褓内されたとすると、 安じ、してください。 relaynews は、 Control: フィール でしようか ? などというコントロール・メッセージか届いたらどうなる Contr01 : づいたと思います。実際、 毎気な読者は、セキュリティ・ホールとなる可能性に気 か実行されます。 /usr/sp001/news/contr01/1234 /usr/lib/newsbin/ctl/newgroup naniwa. foods く \ ドの内容にく、 > 、 \ などのシェ ルのメタキャラクタが含まれている場合、コントロール・ コマンドは実行しないで、 relaynews : control * ' 100kS unsafe tO execute というようなエラーメッセージを NEWSCTL/errlog に 残します。副作用として、 cancel などの Message-ID を 引数としてもつコントロール・メッセージか夫行できない (Message-ID は、くて始まり > で終る ) という欠点が生し ています。 将来は、ライプラリ関数 system を利用せずに、直接コ ントロール・コマンドを f 。 rk / exec するように変更され るかもしれませんね。 すでに説明したように、 NEWSBIN/ctI/sendsys と version は日時と記事の Message-ID を NEWSCTL/ delayed に書き込むだけのシェル・スクリプトです。実 際に処理をおこなうプログラムは、 NEWSBIN/relay/ に置かれており delsendsys と delversion という名前に 58 なっています。 Cnews では、 Message-ID をキーに NEWSCTL/ history を検索するプログラムなどが完備されています。 これらを組み合わせることで、シェル・スクリプトから容 易にニュースシステムを操作できます。 コントロール・コマンドが、もし 0 でない終了ステータ スを返せば、 relaynews はシステム管理者に以下のような 報告のメールを送ります。 From news Wed Jun 17 10 : 59 : 49 1992 Received: by nadia. cs . naniwa-u. ac ・ jp ( 4.1 / 6 .4J . 6 ) id AA28227 ; Wed, 17 Jun 92 10 : 59 : 48 JST Date: Wed, 17 Jun 92 10 : 59 : 48 JST From : Message—Id: く 9206170159. AA28227 @nadia. cs . naniwa -u ・ ac ・ JP> Re1aynews : control message 'PATH=/usr/1ib/news/ bin:/usr/lib/newsbin/ctl ; rm xx く control / 419 ' e xited with status 0400 Apparent1y—T0 : usenet ihave/sendme 則回は、 ihave/sendme コントロール・メッセージ についての一般論しか説明できませんでしたが、新しい Cnews が入手できたので Cnews での ihave/sendme の 設定 / 運営方法を解説します。 簡単に ihave/sendme プロトコルの手順の復習をしま しよう。 nadia と wazuka のあいだで ihave/sendme を おこなうものとします。 1. (nadia) Message-ID のリストを作る。 コントロール・コマンドを改造、あるいは自作するとき に忘れてならないのは、 relaynews によって一 ーユースシス テムがロックされている状態て呼び出されることです。そ のなかでニュースシステムをロックすると、いつまで経っ てもロックできないのでニュースシステムがハングアッフ してしまいます。 それから、コントロール・コマンドが実行されると き、標準出力は NEWSCTL/Iog に、標準ェラー出力は NEWSCTL/errlog にリダイレクトされています。そし て、カレントディレクトリは NEWSARTS になってい ます。 UNIX MAGAZINE 1992.8
気楽に LJN Ⅸ、かっこよく X 図 8 tgif 十の画面 M g をⅣ加イ 0 ル 図 10 メインメニ コ . ode 11 e dit extSty1e extSize ont ontDPI ayout ange 111 ineSty1e 010 で S ecial Choice Ⅳイ 0 Ⅳ Tqif ー 2 . 2.1 If Ve 【 S10 れ 2 . 2 . 1 CO ェ 1 ht C) 1990 - / 、屈 NON W つ一→ 991 31111am T な W 加 do Ⅳ Ca な材Ⅳ加 do Ⅳ 図 11 -edit サプメニ コ . ode 11e Re raW Dup1 icate De1ete Se1ectA11 Undo DeletePoint AddPoint COPY Paste InvertXB1 tma raW Dup1icate De1ete Se1ectA11 Und0 De1etePoint AddPoint Copy Paste InvertXBitma S e c 1 a 1 Scro 〃わ 2 「 ・目盛り (RuIer) 目盛り現在のグリッド間隔を表示。 これだけで描けますが、さらにマウスでメインメニュー を表示できます。マウスの右ボタンを押すと、キャンバ ス・ウインドウにメインメニューのウインドウが表示さ れます ( 図 10 ) 。それぞれのメニューの詳しい説明はこ こでは省きます。使い方は、目的のメニューまでマウスの ボタンを押したままカーソルを移動させ、そこでボタンを 垂直方向のフォント線の端点形状 破線 離すとカーソルか鍵型になりますから、メニューを出した アライン いところでもう 1 度マウスポタンを押します。すると、メ 画面にこのようなメッセージが出力されたあと、 tgif 十 インメニューから選んだサプメニューのウインドウカ鯛き のウインドウカかれます ( 図 8 ) 。それぞれのサプウィ ます ( 図 11 ) 。これらのメニューを使って図を描いてい ンドウには、次のような彳齬リがあります。 きます。 実際に描いてみよう ・メッセージ・ウインドウ (Message Window) 実際に例を用意して、その絵を描くことにしましよう。 tgif 十からのメッセージか表示される。メッセージはマ これから描く絵のサンプルが ( 図 12 ) です。 ウスの右ボタンでスクロールダウン、左ボタンでスクロ ールアッフする。 1. 丸を描く 選択ウインドウ (Choice Window) 最初に丸を描いてみます。マウスの真ん中のボタンを押 現在の描画モードと描画属性 ( 線の幅、 フォント、 すと、描画モードを指定するウインドウか帽きます。 塗りつぶしパターン、ペンパターン、破線バターンな のなかから丸を尺します。カーソルが白くなって、丸 ど ) を表示する ( 図 9 ) 。 カけるようになるはすです。実際に描くには、右ボタ ・キャンノヾス・ウインドウ (Canvas Window) ンを押しながら、適当な大きさになるまでマウスを移動 描画をおこなう。 させます。 スクローノレヾー (Scrollbar) 2. 塗る キャンバス・ウインドウをスクロールさせる。 このままでは、円は透明のままです。図 12 ではスクリ 図 9 tgif 十 ~ ウインドウ 水平方向の アライン文字列の揃え回転 線の幅スプライン化 描画モード プリント アウト先 塗りつぶし ノヾターン つ - ー→ WIDTH ロ SH 色 ペン / ヾターン 39 UNIX MAGAZINE 1992.8
さて、今回の内容は次のようになっています。 ・ネットワーク・ ュース ・お糸苗きツールと漢字入力 ・ I を用いた文書の作り方 ますは、、ネットワーク・ニュース " ですが、ネットワー ク・サーピスの基本として、電子メールと双璧をなすもの です。同し興未をもった人たちの、、言侖の場 " であるだけ でなく、 PDS などの情報もニュースに投稿されますから、 この機会に使い方をぜひマスターしておきましよう。 次の、、お系苗きツールと漢字入力 " では、 UNIX ワーク ステーション上できれいな絵や図を作成するためのツール や、そのなかで漢字を使うためのツールなどについて、例 を交えながら紹介します。 そして最後を飾るのは、 UNIX ワークステーション上 の文書作成の、、定番 " ともいえる、 I*TEX です。ここでは 自体の説明ではなく、 ・文謝乍成に必要なコマンド ・プリントアウトや画面への表示 ・ Emacs 工デイタのい TEX モード ・お系苗きツールで錨いた絵を貼り込むガ去 などを紹介します。 PC のワープロや専用マシンとは、ち ょっと勝手が違うので戸惑うかもしれませんが、一度置れ ると手放せなくなるでしよう。 今回も新たなツールやコマンドが大挙して押し寄せます から、じっくり読んでくださいれ UN Ⅸの新聞 世の中の情勢を知るには、テレビやラジオでニュースを 聞くか、あるいは新聞を読みます。 UNIX ネットワーク の世界でも、ユーサーの意見や情報を交換する電子ニ スシステム (NetNews と呼ばれることもある ) が用意さ れています。電子ニュースシステム ( 以下、たんにニュー スシステムと略記します ) は、電話回線や専用回線を介し て接続されたワークステーションを通じて、メッセージを やりとりするものです。メールシステムと違うのは、通信 が 1 対 1 ではなく、 1 対多であることです 1 。すなわち、 1 もっと違いはあるのですが、ここでは詳しく説明しません。 UNIX MAGAZINE 1992.8 気楽に IJN Ⅸ、かっこよく X ロ メールでイ云わるメッセージは送イ目手だけですが、ニュー スシステムにメッセージを送る ( 冴高する " といいます ) と、ニュースシステムを利用しているユーサー全員に伝わ ります。ニュースシステムには、組織内で豸虫自に運用され ているもの、日本全国規模て漣用されているもの、あるい は米国の USENET で運用されているものなど、さまざ まな形態があります。またニュースシステムのあいだで、 記事の柤反乗入れもおこなわれています。 ニュースシステ ムに投稿される記事には、ユーザー各自にとって有意義な ものから、関心のないものまで各種のものカ哈まれていま す。ときには、これまで分からなかったことがニュースを 通じて角夬することもあります。 このように便利なシステムですが、残念ながらすべての ワークステーションて利用できるわけではありません。組 織によって、ニュースを購読していたり、していなかっ たりするためです。ですから一度管理者さんに、「うちは ニュースか第売めるんですか」と訊ねてみてください。もし 「読めない」という答が返ってきた場合は、残念ですがこ の部分はさっと読み飛ばしてください。 ニュースの不 新聞には、斉・国際・政治・社会・テレピ番組などさ まざまな欄があります。 UNIX のニュースも、記事の内 容によって各項目の欄 ( ニュースグループといいます ) が あります。ニュースグループの名前は、 ( ピリオド ) で 区切られたいくっかの単語の列で表されており、階層構造 になっています。主要なニュースグループと、扱われてい るおもな話題を挙げておきます。 ・ COIIIP. コンピュータに関する話 ・ rec. 娯楽に関する話題。 ・ SCI. 窄学に関する話題。 ・ SOC. 社会に関する話題。 ・ alt. * これまでの comp 、 rec を合わせたようなグループ。 33
連載 UNIX Communication Notes make TROFF=ditroff ファイルができますが、内容は groff と違って ditroff とします。 guide. ps 、 index. ps 、 toc. ps という 3 つの 構成がすっきりとしました。 従来はさまざまな項目か混在していたのですが、これで ・ SRC/man/news. 5 が分割された とします 3 。 lpr ーⅡー P れ te toc. ps lpr —n ー Pp ロれ ter ・ index. ps lpr ーⅡー P 〃ロれ、 guide . ps 形式の出力です。プリントアウトするには、 56 3 もちろん、 ditroff の出力のための printcap の言定が必要です。 なっています。 ますが、 newsrun の起動頻度が 1 時間に 4 回と多く ・ cron の設定のサンプルが SRC/conf/cron に生成され りました。 ・ newswatch が、ディスク容量の不足も見張るようにな BIN/ctl/senduuname を消す必要があります。 くなりました。ただし、以前のバージョンの NEWS- ・ senduuname コントロール・メッセージに応答しな またシステム管理者への報告も充実しました。 処理する前に expire されてしまう危険性があります。 メッセージの expire を急速におこなうシステムでは、 24 時間遅れておこなわれます。このためコントロール・ ・急を要しないコントロール・メッセージの処理が最大で これで通常のシステム稼重加にも使えるようになりまし 長時間ロックするので使えるのは非常時だけでしたが、 するように改良されました。従来はニュースシステムを ・ addmissing が必要最小限ニュースシステムをロック BIN/expire/expireflow か提供されています。 てきた時点で expire をおこなうための NEWS- ・毎日の定時ではなく、スプールの残量が少なくなっ muncher 名です。 わりました。 12bit compress は comp12 という ・ノヾッチの圧系宿のデフォルトが 16bit compress に変 ・ ihave/sendme の設定が簡単になり、処理が高速化さ relaynews の変更 さきに書いたように relaynews は大規模システムで のスルーブット向上を目引長に変更か加えられています。簡 単にいうと、、、・代替できないものだけを relaynews がお こなう。そうでない機能は外に出す " という方針にもとづ いたものです。すなわち、 relaynews と周辺のプログラム 群の彳齬 IJ 分担が見なおされ、変史されています。 マスター・′ヾッチファイノレ 従来の relaynews は、 NEWSARTS/out. going/ sysname/togo に、記事のファイル名や Message-ID な どを書き込んでいきます。記事を交換しているシステム数 か、その 2 倍 (ihave/sendme をおこなう場合 ) の個数 のファイルへの書込みがおこなわれなければなりません。 従来の relaynews は、高速化のため複数の togo フ ァイルを open したままにしていました。この手法は、 1 プロセスあたりのオープンファイル数の制限のために 大規模サイトでは十分に効果を発揮しません。そこで、 relaynews は各 NEWSARTS/out. going/sysname/ togo へ書き込む情報を NEWSARTS/out. master/ の 下にファイルを 1 つだけ作ってここにまとめて書き込みま す。これを、、 master batch files" と呼んでいます。マス ター・バッチファイルを処理するのが NEWSBIN / relay /explode です。通常、 explode は doexplode を通して 起動さオ L 、 out. master/togo の内容を各 togo ファイル に振り分けます。 たとえば、以下の内容を explode にケえたとします。 く 827569uunet . uu. net> news/admin/12435 2097 F out . going/sitel/togo f /usr/spool/news/out ・ going/site2/togo n out . nntp/site3 I out ・ going/site4. wehave/togo すると、 explode は下線の行を追加します。 ・ NEWSARTS/out. going/sitel/togo に、 news/admin/12435 /usr/spool/news/out. going/site2/togo に news/admin/12435 2097 ・ NEWSARTS/out. nntp/site3 に news/admin/12435 く 82756@uunet . uu. net> ・ NEWSARTS/out. going/site4. wehave/togo に く 827569uu れ et . uu . net> UNIX MAGAZINE 1992.8
連載 /UNIX Communication Notes リスト 4 newsrun の改造 * * * 161 , 163 * * * * 161 , 167 /usr/lib/newsbin/input/newsrun Thu Jun 18 17 : 26 : 53 1992 * * * newsrun Sun May 3 09 : 07 : 10 1992 done done sleep 45 f i if ls else f i ー egrep sleep 45 break ; ー S # give somebody else a shOt at the IOCk *$pat " > /dev/null ; then # give somebody else a sh0t at the IOCk システム名と UUCP ノード名 対策としては、 kyouk03 の管理者に依頼して、 クトリがないのでエラーとなります。 NEWSCTL/out. going/kyouko. sendme というディレ となってしまいます。これを nadia で受け取ると、 ControI : Sendme kyouko ではなく、 Contr01 : Sendme kyouk03 ントロール・メッセージを送る場合には、 SystemV R2 の kyouk03 というシステムが sendme コ られることがあります。たとえは、 Bnews カ力いている このとき、ホスト名が 6 文字ないし 7 文字に切り詰め 用します。 はシステムの uucp ノード名 (uuname ー 1 の出力 ) を使 名を使用しますが Bnews の sendbatch はデフォルトで ihave/sendme のときに、 Cnews はニュースシステム sendbatch ではなく、 sendbatch ー 1 nadia —ikyouk03 nadia を使ってもらいます。 64 あるいは、 NEWSCTL/out. going/kyouko. sendme というディレクトリを nadia 側で用意し、 NEWSCTL/ sys の設定で、 kyouk03 : , tO . kyouko , t0 . kyouk03 : f としてもいいでしよう。 もう 1 つ方法があります。 Cnews 付属の batchra は、環境変数 NEWSS 工 TE の内容 kyouko. sendme を 処理して、 kyouko という名前を得るようになっていま す。これを NEWSSITE を見ないで kyouk03 とするよう に変更して、 kyouko. sendme/batchra として置いてお きます。そうすると、 kyouko. sendme に関しては ky- ouko/sendme/batchra か優先して使われるので、記事 ファイル名リストは kyouk03/togo に正しく格納され ます。 ホスト名の切詰めによるトラブルは、 ihave コントロー ル・メッセージに関しても起こります。これは sendme の場合と同じアイデアて埆夬できます。 ロックアップ 今度の newsrun は、 NEWSARTS/in. coming に溜 まった入力を処理し終えたあと、 45 秒停止するようになっ ています (sIeep45 となっている ) 。これを知らないと、 rnews や nntpd がロックしたと早してしまいます。 UNIX MAGAZINE 1992.8
図 3 連載 /NET WORTH—① TCP / 旧階層上部におけるプロトコル依存関係 CMOT ASN. 1 SMTP FTP TELNET ユーサー Application Programs DNS SNMP rlogin & rsh TC P ARP CMOT UDP TFTP ASN. 1 BOOTP N FS XDR RPC lP(plus ICMP and IGMP) RARP ードウェア Hardware link level and access p 「 0t0C0 のソケット・ライプラリコールをエミュレートしている。 ソケット・インターフェイスはいかなるプロトコルにも属 さないが、 UNIX のネットワークにおけるプログラミング では業界標準となっている。 BSDUNIX におけるネットワーク I / O の基本は、ソ ケットによる抽象化である。ソケットは、 UNIX のファイ ル・アクセス手順を一般化したものである。ファイルと同 様に、プログラムは、必要なときにオペレーティング・シ ステムに対して ( ファイルをオープンするように ) ソケッ 基本的なソケット・ライプラリ関数のプロトタイプ ソケット s での接続を受け入れる accept (int ns , s , struct sockaddr *addr , int *addrlen) ; ・アドレスを、バインドされていないソケットにバインドする bind (int s , struct sockaddr *addr, int addrlen) ; ソケット s での接続の初期化 connect (int s , struct sockaddr *addr, int addrlen) ; ソケット s への接続を待つ listen (int s, int backlog) ; ソケット s からのメッセージを受け取る recv (int s , char *buf , int len, int flags) ; recvfrom (int s , char *buf , int len, int flags , 1nt int int int int int struct sockaddr *to , int *tolen) , int sendto (int s , char *msg , int 1en , int flags , int send(int s , char *msg , int len, int flags) , ソケット s にメッセージを送る struct sockaddr *from, int *fromlen) , 130 トの生成を要求する。次に、ソケットに対して読み書きを おこない、最後にそれを閉しる。オプジェクト指向の言葉 でいうなら、あたかもファイル I / O 呼出しである open 、 read 、 write 、そして close のそれぞれをネットワーク呼出 しにオーバーライドしたかのようである。ソケットはファ イルハンドルと同しように、小さな整数として表現され る。 UNIX MAGAZINE 1992.8 的なソケット・ライプラリコールをとりあげてみよう。 実例として、このインターフェイスからいくっかの基本