指定 - みる会図書館


検索対象: UNIX MAGAZINE 1992年10月号
91件見つかりました。

1. UNIX MAGAZINE 1992年10月号

表 2 xbench の結果 machi ne IPX(X11R5) p COm Ⅱ 1 8 Ether fill 232 , 178 45 , 554 186 , 140 43 , 301 blt 54 , 958 60 , 326 則、 text arc N Ⅵ -3870 ( XI 1R5 ) 8 Ether 369 , 187 7 , 509 , 917 230 , 312 4 , 917 , 169 cmplx 76 , 862 110 , 261 NOTICE XStones 98 , 867 95 , 432 付属するフリーソフトウェアのなかで、とくに便利に 感したのは gdb です。しつは我々は、日常的に RISC NEWS を利用しているのですが、 gdb をうまくインス トールできすに困っていました。さすがにソニーから提 供されているものだけあって、正常に動作する gdb とな っています。 付属のフリーソフトウェアのバイナリの一部には、イ ンストールするディレクトリを変更すると、動作しない ものがあることに注意してください。フリーソフトウェ アのなかには、バイナリ作成時に、インストールするデ ィレクトリを指定するものがあります。このようにして 作られたバイナリを、想定されたものと違うディレクト リにインストールすると、うまく動かない場合がありま す。指定されたディレクトリ以外にインストールしたい 場合には、さきにソースのみをインストールしておいて、 あとでコンパイルしたはうがよいでしよう。 なお、インストールしたソースを正しくコンパイルで きない場合もあります。 これは gcc をコンパイルするときに経験したことで すが、 MakefiIe のなかで bison コマンドの位置とし て /usr/unsupported/bin/bison を指定していたため、 make に失敗しました。これは、デフォルトのインストー ルで bison が置かれる位置です。このときは Makefile 中の bison を指している位置を変更することで、無事に コンパイルできました。 また、ソースのみをインストールした場合には自力で コンパイルする必要があるのですが、その方法について の記述がマニュアルにありません。通常は make コマン ドを用いることにより、ソースのコンパイルが可能なよ うになっていますが、ソフトウェアによっては複雑な処 理 ( make だけではすまない処理 ) が必要になる場合も あります。 4.2 のフリーソフトウェアの一部 (bison 、 gawk 、 gcc 、 gdb 、 libg 十十など ) には、このような場合にも簡 単にインストールできるように、特別なファイルが準備 されています。ソフトウェアを取り出したディレクトリ (/xxx/usr/src/unsupported/yyy-zzzo xxx はイン ストールしたディレクトリ、 yyy はソフトウェアの名 UNIX MAGAZINE 1992.10 zzz はソフトウェアのバージョン ) に移動して、 :mk と入力してください。 : mk ファイルは、そのディレクト リでプログラムを作成するためのスクリプトです。この シェル・スクリプトを実行すれは、正しくオプジェクト が作成されるはずです ( ソースに付いている、 README 、 INSTALL などのファイルを見て、必要な 変更はすませておいてください ) 。 MUSBUS の結果などは次回に紹介することにして、 今回はます X 関係の評価結果を掲載します。 4.2 で採用 されているのは X11R5 ですが、これを NWS ー 3870 で テストした結果を示します。 ・ xbench の結果 xbench の結果を表 2 に示します。表の項目は、左から マシン名、プレーン数、通信方式、直線および塗り潰さ ない四角形の描画、反転やコピー操作、文字列の描画、 円と円弧の描画、複合テスト、最後が総合点 (xstones) です。結果の数値は、 Sun3/50 上で動く X11R3 伺属の モノクロのサンフ。ルサーバーの速度を 10 , 000 とした相 対値です。ということで、前回の SPARCstation IPX 上の X11R5 との比較をしてみましよう。全体に抜きつ 抜かれっという感しですが、 xstones 値ではわずかに IPX におよは・ないようです。 NWS -3870 にグラフィッ クス・アクセラレータが搭載されていないことを考える と、かなりよい成績といえるでしよう。 ・ xllperf の結果 サーバーのスピードを測る xllperf の結果も、 IPX と比較してみるとやはり xbench と同様に、項目によっ て勝るものと劣るものがあるようです。各項目ごとに見 ると IPX と比較して 0.1 ~ 10 倍くらいの成績になって いますが、全体的に見ると IPX に若干劣るようです。と はいえ、すべての項目で圧倒的な差がついているという わけでもないようです。こうなるとどちらが速いかとい う決断を下すことは難しく、アプリケーションごとにパ 客観的性能評価 ( その 1 ) 29

2. UNIX MAGAZINE 1992年10月号

ミング 24 リスト 3 ru Ⅱサプコマンドの実行 % rm —f core % dbx a. out Reading symbolic information. Read 40 symbols (dbx) run 1 10 Running: a ・ out 1 10 signal SEGV ()o mapping at the fault address) atoi + Oxc : ldsb C%i0] , %i5 LJN Ⅸ流プロクラ in atoi at 0Xf7742794 (dbx) where atoi ( ) at 0Xf7742794 main (argc 3 , argv (dbx) quit 0xf7fffa50) , line 8 in のは難しいのですが、このワーニングを消すことはでき ます。プログラムをコンパイルするとき、静的にリンク をおこなう、つまり -Bstat ic オフションを付けるので す ( リスト 2 ) 。 今度は、ワーニングは表示されていません。コアファ イルに対するワーニングのために正しくデバッグでき ないのであれば、このように静的にリンクしてプログ ラムを作成してください。この例の場合は、ライプラ リのなかのデバッグはできなかったのでワーニングを 消す以外にあまり意味はありませんが、自分で作成した ライプラリがあるときはこの方法力、有です。プログラ ムのデバッグ中はライプラリを共有ライプラリにせす、 普通のライプラリとして静的にリンクすれば、ちゃんと プログラムをデバッグすることができます。 デバッカから実行する さきほどは、コアファイルを作成し、その内容を利用 してプログラムが停止した箇所を調べました。しかし、 dbx ではわざわざコアファイルを作成しなくても、そ の場で実行してみてどこがおかしいのか調べることも できます。リスト 3 を見てください。 この例では、いったんコアファイルを削除し、コア ファイルがない状態で dbx を起動しています。デバッ グ対象のプログラムを実行するには、 dbx のサプコマン ド run を指定します。 run では、コマンド行からプロ UNIX MAGAZINE 1992 ユ 0 グラムを実行するときと同様に引数の指定が可能です。 また、引数としてファイルのリダイレクトも指定できま す。この例では、引数として 1 と 10 を指定してプログ ラムを実行してみました。 dbx からの出力は、セグメ ント違反のシグナルによって、ファイル a. c の 8 行目 で関数 main から呼ばれた関数 atoi のなかでプログラ ムがエラーとなったことが分かります。 今回は、 UNIX て利用できるデバッガ dbx を紹介し ました。また、デバッガを使う場合に有効なコアファイ ルの作成方法についてもお話ししました。さらに、、工 ラーの発生箇所をみつける " ために利用する dbx の 3 つのサプコマンド、 dbx の終了 quit where スタックの内容の出力 run プログラムの実行 も紹介しました。これで、エラーの発生箇所をみつける ことはできるようになりましたが、原因についてはまだ 分かりません。 次回は、これらのエラーの原因を調べるために、変数 の値を検査する方法についてお話しする予定です。 ( いまいすみ・たかし東京工業大学 ) 131

3. UNIX MAGAZINE 1992年10月号

図 2 /dev を覗いてみると monkey% ls /dev MAKEDEV audio audioctl bwoneO bwtvoO CCV cgeightO ttyr6 ttyr7 ttyr8 ttyr9 ttyra t tyrb ttyrc sd15 sdla sdlb sdlc sdld sdle sdlf rsd6f rsd6g rsd6h rsd7a r s d7b rsd7c rsd7d ptyr9 ptyra pt yrb pt yrc pt yrd pt yre pt yrf monkey% 当求先をオプションの値として指定 f (file) などがあります。 引数の最後の、、ファイル " には、まとめたいファイル ( あるいは取り出したいファイル ) を指定します。このと き、複数のファイルを指定するとそれらをすべてまとめま すし、ディレクトリを指定すると、そのディレクトリ以下 のファイルをすべて ( f オプションで指定したファイルに ) まとめます。 以前紹介したときは、複数のファイルを 1 つのファイ monkey% ルにまとめていました 8 。 f オプションの記録先として、テ ーフ。装置などに対応するデバイスファイルを指定すること v オプションを付けているので、途中経過がすらっと表 で、ファイルではなくテープに書き込むことかできます。 示されています。 これは余談ですが、 f オプションを付けすに実行すると、 この例では、わざわざホームディレクトリに移ってか デフォルトでは 1 / 2 インチ・オープンリール磁気テープが ら、カレントディレクトリ (. ) を指定しています。絶対 出力先に指定されます 9 。これが tar (Tape ARchiver) パス (/home/saru など ) でも指定できますが、その場 の名前のゆえんです。カートリッジ・テープか存在しな 合は、テープから読み出すときにつねに同しパスでしか読 かった日罸に、テープといえはオープンリール・テープだっ み出せません。つまり、 . cshrc というファイルはいつも たんですれオープンリール・テープというのは、テレビ / me / saru の下に作られることになり、すでにあるファ 番組にコンピュータカ咄てきたとき、かならすといってよ イルが上書きされるなどの不都合が生します。 いほど背後でくるくる回っているあのテープのことです。 これに対し、前例のように、、カレントディレクトリか 現在でも利用されています。 ら下を言求してくれ " という指定をしておくと、読み出す さて、話をもとに戻しましよう。たとえば、テープ装置 ときもカレントディレクトリの下に作られます。つまり、 に対応するテンヾイスファイルが / dev / て stO " であったと 記録したテープを読み出すとき、カレントディレクトリ して、ホームディレクトリのバックアップをとると、次 が "/tmp ' であれば . cshrc は /tmp の下に作られるの のようになります。 で、事故か起こる可能生は少なくなります。 うまく言求できましたか ? デバイスファイルを正しく monkey% cd 、 I/O error " などとエラーメッセー 指定しているのに monkey% tar cvf /dev/rstO a . / . Xdefau1ts/4 10 blocks ジが表示されて書き込めないときは、テープか書込み禁止 8 これを、、、オンライン・バックアップ " といいます。 になっていないかチェックしてみましよう。 9 Sun の場合は /dev/rmt8 、 DECstation は /devrmtOh でした。 1 三ロ a . /bin/jdvips—stdout 1 blocks a . /bin/jdvips—oki 1 blocks a . /bin/jdvips—stdout—400 1 blocks a . /bin/saruterm symbolic link t0 \ /usr/bin/X11/kterm . /bin/jdvips-ntx 2 blocks a . / . aliases 7 blocks a . / . ccdef 28 blocks a . / . cshrc 13 blocks a ・ / ・ eggrc 3 blocks a . / . emacs 22 blocks 42 UNIX MAGAZINE 1992.10

4. UNIX MAGAZINE 1992年10月号

これで、コアファイルの大きさに制限はなくなりま こまで、プログラムが異常終了したときにコアファ イルを作成する方法についてお話ししてきましたが、コ アファイルは積極的に作ることもできます。その場合、 コントロールキーと同時に \ ( バックスラッシュ ) キー を押すか、 gcore というプログラムを使います。 コントロールキーを押しながら \ キーを押すと、プロ グラムは強制的に停止され、その段階のコアファイルが 得られます。一方、 gcore では、コアファイルを作成し たいプロセスのプロセス ID を引数として指定し、実行 中のプログラムに対して強制的にコアファイルを作成 します。このプログラムを実行すると、コアファイル を作成したあとも実行を続けることができます。 gcore は、とく ( ンヾックグラウンドで動作しているプログラム に対して有効でしよう。このはかにも、 ki Ⅱコマンドを 使って適当なシグナルを送り、プロセスにコアファイル を作成させることもできます。 dbx を使う場合は無理にコアファイルを作成する必 要はありませんが、無限ループに入ってしまったとき などは、どこで入ったのかが分かりづらいものです。そ こで、無限ループに入った状態のコアファイルを作成し ておき、どこを実行しているかを検査すれば簡単に検出 できることもあります。 コアファイルは、有効に使えば dbx の強力な味方に なります。必要に応して、上手に使ってください。 dbx の起動と終了 dbx か誕生してから、すでに長い時間か経っていま す。そのあいだに、 UNIX ワークステーションを開発 した各社ではさまざまなかたちで dbx の改良が進めら れてきました。その結果、現在では本来の機能はよく似 ているものの、操作性が異なる多数の dbx コマンドが 存在しています。 なかでも、 SunOS に付属の dbx は機能がかなり拡 張されており、もっとも使いやすいテンヾッガの 1 つだと 思います。私自身、各種の OS の dbx を利用した経験 がありますが、一番よく使うのがこの dbx なので、 こではこれをもとに解説することにします。できるかぎ り、ほかの OS の dbx でも対応できるように説明する 128 つもりですが、 SunOS の dbx でなければ実行できな い場合は、その旨を記すことにします。また、すべての OS の dbx を知っているわけではないので、見落しが あるかもしれません。以降で説明する機能が自分の使っ ているマシンの dbx で利用できるかどうかは、マニュ アルなどで調べてみてください。 前置きがすこし長くなってしまいましたが、さっそ く dbx の使い方をみてみましよう。次のように起動し ます 3 。 dbx [ プログラム [ コアファイルまたはプロセス ID ] ] プログラムにはデバッグしたいプログラム名を、コ アファイルには作成したコアファイル名を指定します。 プログラム名もコアファイル名も省略すると、プログラ ムか指定されない状態で dbx が起動されます。その場 合は、 dbx の debug サプコマンド 4 でプログラムを指 定してください。引数を指定せずに dbx を起動すると、 ファイル名の入力を求めたり、デフォルトのファイル として a. 。 ut のデバッグを開始する dbx もあります。 そのため、通常は dbx の起重加にデバッグしたいプロ グラムを指定します。 プログラム名と同時にコアファイル名を指定すると、 コアファイルがそのプログラムから生成されたとみな し、コアファイルに保存された状態のデバッグを開始 します。指定しなかった場合も、 dbx コマンドを起動 したディレクトリに core という名前のファイルがあ れば、それをコアファイルとして処理します。 プロセス ID を指定すると、すでに動作しているプ ログラムをデバッグすることができます。この場合も プログラム名の指定が必要で、プロセス ID で指定され たプロセスは、 dbx の引数に指定されたプログラムの ものでなければなりません。このようなデバッグ方法 は、ライププロセス・デパッグと呼はれます。 この機能を使うと、無限ループに入ったプロセスの プロセス ID を調べ、デバッガで無限ループとなってい る箇所を調べることもできます。また、ある端末から 起動したプログラムを別の端末で動くデバッガを使っ てデバッグできるので、画面出力を用いてインタラク テイプに動作するプログラムでも画面カ話 L れません。プ 3 プロセス ID カ甘旨定できるのは、 SunOS のものだけだと思います。 4 サプコマンドについては彳あします。 UNIX MAGAZINE 1992.10

5. UNIX MAGAZINE 1992年10月号

ワークステーションのおと一① 前ページから続く ル ! 120 720 ← B 5 6 2 25 36 625 1296 これでおしまい これは、次のようにして作りました。 \hline \tablehead{ \hline} \hline \tablefirsthead{ \begin{center} \mu1tic01umn{4}{ はけ \hline {\small\bf 前ページから続く } \ \ \mu1tic01umn{4}{ け \ li 取 e \tablelasttail{ \hline} {\small\bf 次べージに続く } \ \ \mu1tic01umn{4}{ はけ \hline \tabletail{ \hline} \begin{supertabular}{ ははははけ \topcaption{2 ページにまたがった表」 } \hl ine } {\small\bf これでおしまいハ \ はだいたい満たせそうです。ただ、すこしだけ制限があっ て、 tabular 環境で指定できるオプション引数はありま せん。 \begin{tabular} os ] { co な } ・・・・・・の 20S のこ とです。 はは 1 司しことが 1 。 ngtable. sty でもできます。さき はどの例と同じものを、 longtable 環境に書き換えたも のを示します。 \begin{longtable}{ ははははけ \caption{2 ページにまたがった表」 } \ \ \hline \hI ine \endfirsthead % \tablefirsthead \ 1 ine \mu1tic01umn{4}{ はけ {\small\bf 前ページから続く } \ \ \hline \hline \endhead % \tablehead \hl ine \muItic01umn{4}{ はけ {\small\bf 次ページに続く } \ \ \ 五 11 Ⅱ e \endfoot % \tabletail \endlastfoot % \tablelasttail \hline {\small\bf これでおしまい } \ \ \muItic01umn{4}{ はけ \hl ine 1 2 3 4 5 6 4 9 16 25 36 16 81 256 625 1296 1 24 120 720 2 3 4 5 6 4 9 16 25 36 16 81 256 625 1296 1 24 120 720 \end{supertabular} \end{center} \tablef irsthead \tablehead \tabletail \tablelasttail \topcaption それぞれのマクロは、次のような未です。 E の部分を指定します。 D の部分を指定します。 C の部分を指定します。 B と B' の部分を指定します。 出力例の A の部分を指定します。 UNIX MAGAZINE 1992.10 境ですね。 supertabular 環境を使えは、さきほどの要求 table と Tabu1ar をひとまとめにしたような感しの環 \end{longtable} 今回紹介した Tabu1ar. sty と supertabular. sty 、 いえるでしよう。 考えあわせると、 supertabular. sty のほうがお薦めと えないという大きな欠点があります。指定が簡単なことも ところが longtable 工竟は、 1 カラムの場合以外は使 に入れることができます。 longtable. sty は、本誌の配布サービス、 VEnet で手 83 ( さかした・しゅう ASTEC)

6. UNIX MAGAZINE 1992年10月号

An lntroduction t0 X Window System TCP ポート番号 ] 連載 フォントサーバーの起動方法 になるでしよう。もっとも、システムの設定に組み入れら 1 。 cal などを利用してシステムの起重加に実行されるよう フォントサーバーの定常的な運用が始まると、 /etc/rc. ー port オプションでは、フォントサーピスに利用する と、 2 つのオプション指定が可能です。 % fs [-config 設定ファイル名 ] ト po て t その場合、 ーを実行することはできます。 れていなくても、 fs コマンドを使えは一般ューザーでもサ UNIX MAGAZINE 1992.10 設定ファイルには、項目 = 値〃の組が列記されていま 設定ファイルの書き方 で、これをもとに変更するとよいでしよう。 バーのソースプログラムとあわせて提供されていますの ァイルが必要です。設定ファイルの雛型は、フォントサー いすれにせよ、フォントサーバーを利用するには設定フ ロ、ここに設定ファイルを用意しておくと便利でしよう。 れます。管理者は定常的にフォントサーバーを利用する場 は /usr/lib/X11/fs/config が設定ファイルとして利用さ する設定ファイルを指定するものです。省略すると、通常 -config オフションは、フォントサーバーの動作を規定 TCP ポート番号は 7000 に設定されます。 されていればその値が、設定ファイルに指定がなければ なお、一 p 。 rt の指定がない場合、設定ファイル内に指定 使われるようです。 に割り当てて使うことになるのですが、通常は 7000 十が て決められたポート番号はありません。許容範囲内で適当 います。ただし、現時点では X のフォントサービスに対し ビスには、あらかしめ特定のポート番号が割り当てられて 行することも可能です。 TELNET 、 FTP、 X などのサー は、 1 つのホスト ( マシン ) で複数のフォントサーバーを実 ビスを識別します。ですから、ポート番号さえ変えておけ る側は、ホスト名とこのホート番号で 1 つのフォントサー 定のフォントサービスを識別するためのものです。利用す TCP のプロトコルを使ういくつかのサービスのうち、特 TCP のポート番号が設定されます。この場合、ポートは す。 sh と同様、行の先頭に # があれば、その行はコメント として無視されます。また、機能の利用 / 非利用は、以降の 例では on/off で示しますが、 yes/no や true/false 、 1 / 0 でも指定できます。では、各項目ごとに説明しましよう。 catalogue = サービスするフォントバスのリスト そのフォントサーバーでサーピスするフォントパスのリ ストです。本来、このカタログには、フォントの集まりの 単位としてのカタログ名とその実体となるフォントパスが 登録され、そのカタログ名がクライアントからのリスト要 求によって返されるはすなのですが、現在のインプリメン トでは、サービスするフォントパスの指定の意味にしかな っていません。一方のクライアントからのリスト要求につ いては、、、 a 懼と答えるだけになっています。これは fsinfo コマンド ( 後述 ) を実行してみると分かります。 alternate-servers = 代替サーバー候や甫のリスト そのサーバーが対応できるクライアント数を超えて、こ れ以上のサーピスは不可能と判断したとき、代替となるフ を指定します。この数を超えると、 clone-self = on の場 そのサーバープロセスが対応する最大クライアント数 最大クライアント数 オントサーバーを知らせるための候補リストです。 client-limit かったときに適用される値を設定します。 10 倍されている クライアントからの要求で、ポイントサイズの指定がな default-point- size 田倍したポイント数 負荷が集中するのを避けることはできます。 グルスレッドで実装されている関係上 1 つのプロセスに り、全体としての負荷か減るわけではありませんが、シン 開店させるかどうかの指定です。マルチ CPU でないかぎ て分離し、これまでのフォントサーバー・プロセスを新装 ent-limit に達したとき、それまでの接続を子プロセスとし フォントサービスを受けるために接続される接続が cli - clone- self Con または 0 出 20 に設定されています。 代替サーバヨ嚇甫をクライアントに知らせます。省略値は 合は接続を拒絶し、 alternate-servers に登録されている 合はプロセスを新たに生成して対応します。また、。Ⅱの場 137

7. UNIX MAGAZINE 1992年10月号

リスト 1 where サプコマンドの実行 % dbx a. out Reading symbolic information. Read 40 symbols core file read error : address not in program terminated by signal SEGV ( Ⅱ 0 mapping at the fault address) (dbx) where core file read error : address not in atOi ( ) at 0Xf7742794 main (argc 3 , argv = Oxf7fff7c8) , line 8 in (dbx) quit リスト 2 -Bstatic オプションを付けて実行 % cc —g —Bstatic ー 0 b. out a. c % b . out 1 10 Segmentation fault ( core dumped) % dbx b . out Reading symbolic information. Read 319 symbols program terminated by signal SEGV ( Ⅱ 0 mapping at the fault address) (dbx) where atoi ( ) at Ox23ac main (argc 3 , argv (dbx) quit Oxf7fffa50) , line 8 in data space data space a. C ー 力するためのコマンドです。このとき、引数として渡 された値も表示されます。リスト 1 の出力の関数 ma ⅲ に関する行では、最初の引数 argc には 3 が、 2 つ目 の引数 argv には Oxf7fff7c8 という値か格納されて いることが分かります ( いきなり Oxf7fff7c8 などと いわれても、なんのことか分からないかもしれません つねにインクリメントしてしまうため、正しく動作しま せん。 さて、プログラムがエラーで止まってしまった場合 は、コアファイルも指定して dbx を起動します。 dbx を起動した段階で where サプコマンドを実行すると、 プログラム中のどこでエラーとなって終了したのかが 分かります ( リスト 1 ) 。 dbx の出力を見ると、ファイル a. c の 8 行目、関数 main のなかから関数 atoi が呼び出されたところでプ ログラムが停止しているようです。これは、 f 。 r 文の条 件判断とインクリメントを処理している部分ですから、 dbx はエラーが起こった部分を適切に指していること になります。 where サプコマンドは、関数呼出しのトレースを出 130 これについては、いすれ詳しく説明する予定 です ) 。 UNIX MAGAZINE 1992.10 が困難なので、ライプラリ中て起こったエラーを調べる く検査できないのです。もともとソースファイルの入手 プラリのなかで起こったことについては、 dbx ではうま ク・リンクを採用しているために起きたものです。ライ グが表示されている点です。これは、 OS がダイナミッ すこし気になるのは、コアファイルに関するワーニン

8. UNIX MAGAZINE 1992年10月号

連載 An lntroduction to X Window System ー⑩ かな操作をすることもなく、転送内容もフォントデータで すから、ほかのディレクトリに入り込めるような設定をし ないかぎり、セキュリティに神経質にならなくてもよいで しよう。 というわけで、 TFTP はかなり以前から X 端末などでフ オントデータのサーピスを受ける手段として利用されてい ます。 フォントをサービスする側の設定 TFTP を利用するには、あらかしめ tftpd()n tftpd) という TFTP のサーバーを立ち上げておく必要がありま す。当初は、 /etc/ ・・・ rc (init 中 ) で直接 tftpd を起動してい ましたが、 4.3BSD 以降は inetd というデーモンにまとめ られ、 inetd. conf ファイルの内容に従って個々のサービス のデーモンか起動されるようになっています。 tftpd はホームディレクトリを引数として起動されます が、標準的な設定では川 tpb 。。 t がこれにあてられていま す。また、オプション -s によって、セキュリティを高める 工夫がなされています。この一 s カ咐けられていると、引数 として与えられたホームディレクトリをあたかもルートデ ィレクトリであるかのようにみなし、 TFTP を用いてほか のファイルに入り込めないような設定ができます。たとえ ば、一 s オプションに続けてホームディレクトリとして /tftpboot を指定すると、 TFTP の利用者には /tftpboot からさきのディレクトリしか見えなくなります。 どちらかといえば、このオプションを付けずに利用する ほうが特別だと考えてよいでしよう。 - s オプションを省略 すると、誰に対してもファイルの扉を開け放しておくこと になってしまいます。もちろん、ユーザー ID やグループ ID を一般のものに替えるなど、多少の制限はありますが、 これではシステムに穴をあけかねません。 したがって、ワークステーションで一般的な lib / X11 / f 。 nts などのディレクトリを直接対象として TFTP を利 用することはできません。 X 端末とワークステーションの X のフォント利用の形式が同しで、 1 つにまとめたいとき には、ワークステーション側の X サーバーのフォント・サ ーチパスを TFTP に用意したディレクトリに変更するか、 フォントファイルの実体を TFTP のサービスがおこなえ るディレクトリ上に配置し、 lib / X11 汽 onts からシンポリ ック・リンクを張るなどの工夫が必要です。 134 フォントのサービスを受ける側の設定 これは個々の X 端末ごとに異なるので、細部については マニュアルをご覧ください。ただし、サーバー側の一 s オフ ションの有無によってディレクトリの見え方が異なる点に 注意しましよう。 たとえは、 X 端末側で /usr/lib/X11/fonts と指定した場 合、 -s オプションがないと、 /usr/Iib/X11/fonts そのもの を指しますが、一 s オプションがあって、 tftpd のホームデ ィレクトリが /tftpboot であった場合は、 /tftpboot/usr/ Iib/X11/fonts を指すことになります。 NFS を用いたフォントサービス ワークステーションの世界で、分散ファイルシステムと して有名なのは NFS (Network FiIe System) でしよう。 この NFS を使って、フォント・ディレクトリを共有する方 法があります。これは、各種のワークステーションで利用 できますし、 X 端末の一部には NFS のクライアントの機 能を組み込んで使えるようにした製品もあります。 NFS は UNIX の mount コマンドを拡張したもので、 ネットワーク上の別のマシンのファイル構造の一部を、あ たかも自分のファイルシステムの一部のようにマウント できるものです。 当然のことながら、ファイルを共有するためには、それ ぞれの X サーバーの利用するフォント形式が同しか、互換 性のあるものでなくてはなりません。 NFS の設定は機種 やバージョンにより異なりますから、こでは要点だけを まとめておきましよう。 フォントをサービスする側の設定 NFS のサーバーの設定では、 /etc/exports ファイルに ・どのディレクトリからさきのファイルシステム ( パス 名 ) を公開するか ・どのホストに対して、どのように Read/Write などを 制限して公開するか を記述します。多くの場合、この /etc/exports ファイルを 変更するだけでは駄目で、 /etc/exportfs を実行する必要 があります。 UNIX MAGAZINE 1992.10

9. UNIX MAGAZINE 1992年10月号

表現の最後の部分に注目してほしい。アイドル時間があ れば、、 : 35 〃のように表示され、なければ何も表示されな いのは \ d \ d の部分なので、それを ( ) で括って、 というパターンを使用する。 い。このため、 列を指定することもできる。しかし、プログラムから欲し いかを指定する ? は、直前に ( ) を使って 1 文字以上の文字 1 つだけあるか、それともな というパターンを使っている。このように ( ) の組はネスト することもできるのである。この際、どのような順番でア クセスするかというと、出現した、、 ( 〃 ( 開き括弧 ) の順番に よってその ( ) の組の順序か訣まる。つまり、こ刎列でいえ はアイドル時間は $ 8 によってアクセスされる。当然 $ 7 に は、 $ 8 の前に : が付いたものが入る。 ちなみに、このパターンは限られたデータだけで作った ので、ひょっとするとマッチしないデータの例もあるかも しれない。 ( 2 ) ( 3 ) バターンの再利用 # 連続する 2 単語を捜す # 2 回出現する単語を捜す # 連続する 2 文字を捜す ( ) で囲んで指定した領域は、パターンのなかでも参照で きる。この場合は、 $ 1 、 $ 広 ... ではなく \ 1 、 \ 2 、 ... を使用 する。 ( 1 ) は、同し文字が 3 文字続く部分をみつけて、その部分 を [ ] で括って表示するプログラムの例である。最初の . は どんな文字にもマッチし、次の \ 1 \ 1 でそれと同し文字が 2 文字続くことを表す。 ( 2 ) は、同し単語が 2 つ続いている場所をみつけるパタ ーンである。最初と最後の \ b で、単語の区切り目であるこ とを指定している。 ( 3 ) は、 1 行のなかに 2 回出てくる単語を発見して、それ を [ ] で括って表示するプログラムである。 いままでのプログラムを実行してみれば分かるが、パタ ーンマッチングはもっとも長い文字列に対しておこなわ れる。つまり、 "electroencephalography' という文字列に対して、 148 というパターンマッチングをおこなったとすると、 ele [ctroence] phalography の部分がマッチするのである。 c で始まり e で終る文字列 を捜すが、最初に出てくる c から、最後に出てくる e まで の部分がマッチする。 ( 2 ) の例では、同し単語が 3 回出現し たとすれば、最初の単語と最後の単語がマッチする。ちな みにこの例で使った単語は、 /usr/dict/words のなかにあ ったもっとも長いものを選んだだけなので、意味は何かと 訊かれても困る。 UNIX MAGAZINE 1992.10

10. UNIX MAGAZINE 1992年10月号

連載 /An lntroduction to X Window System 度立ち上げるのも不便です。 そのようなときに便利なのが、起動後のフォントサー 方法です。この場合は、作業に先立ってフォントサー ーに対してシグナルを送り、ファイルを再度読み込ませる のプロセス ID を調べます。 % ps -e ー grep fs System V 系では、 1414 pl S 1363 pl IW % ps -ax ー grep fs BSD 系では、 0 : 00 grep fs 0 : 07 fs —config config—file 0 : 07 f s 1363 ttypl 再度設定ファイルの内容を読み直させるには、 ・プロセスに USRI シグナルを送ることによって、 たとえは、さきほどの ps コマンドで知ったフォントサ も読み直させる。再起動したのと同し効果がある。 に接続されているサービスを断ち、設定ファイルの内容 ・ HUP : フォントサーバーをリセットする。サー れを反映させたい場合に使う。 やりなおさせる。起動後にフォントデータを変更し、 たフォントデータをもっている場合、これを捨てさせて ・ USR2 : フォントサーバーがメモリ上にキャッシュし これを反映させたい場合に使う。 再度読み直させる。起動後に設定ファイルを書き直し、 ・ USRI : フォントサーバーに、設定ファイルの内容を ・ TERM . フォントサーバーを正常終了させる。 す。 フォントサーバーて利用できるシグナルは、次の 4 つで でシグナルを送りつければよいのです。 オントサーバーのプロセス ID です。あとは、 ki Ⅱコマンド とします。表示される左端の数値にの例では 1363 ) がフ % kill -USRI 1363 を実行します。 はかに同しフォントサー いなけれは、フォントサー ーを利用しているユーサーが ーを再起動してもかまいませ んが、本格的に使い始めると設定ファイルやフォントの追 UNIX MAGAZINE 1992.10 加後に利用することもあるでしよう。 X サーパーでのフォントサービスの利用 通常、 X11R5 以降の X サーバーにはフォントサーピス を利用できる仕組みが組み込まれています。利用のための 登録は、フォントパスの拡張となっています。 前回も説明したとおり、一般に xset を用いてフォント パスを追加、変更する場合、フォントデータの置かれたデ ィレクトリ名を指定します。フォントサー ノヾーのフォント を使うときは、このディレクトリ名に代えて、 tcp/ から始 まり、サーバーのホスト名、 : 、ポート番号、その後ろに必 要に応して / に続けてカタログリストを指定します。複数 139 X のサーバーのフォント・サーチパスの設定とは無関係に れていないということです。ですから、さきほど説明した との関係はありませんし、表示についても X の機能は使わ ドは直接フォントサー ーと対話するもので、 X サーバー ます注意していただきたいのは、以降で説明するコマン フォントサービスを直接イ吏うコマンド グを知るには、 fsinfo ( 後述 ) コマンドを使います。 となります。特定のフォントサーバーで使用可能なカタロ % xset fp + tcp/fssrv:7000/a11 るのは all だけでしよう。さきほどの例にこれを加えると、 はきちんとサポートされていないので、現時点て利用でき 現在提供されているサンフ。ルサーバーではカタログ指定 すると、ほかの設定内容とともに表示されます ( 図 4 ) 。 を知るには、 q オプションを付けて xset コマンドを実行 しよう。なお、現在設定されているフォント・サーチパス ーチパスの最初にフォントサーバーを指定することは稀で は速いはすですから、さまざまな利用方法を考えると、サ とします。ローカルに所有しているフォントのはうが応答 % xset fp + tcp/fssrv:7000 きは、 トサーバーを、フォント・サーチパスの最後に追加すると たとえば、ホスト名が fssrv 、ポート番号 7000 のフォン 指定します。 のカタログを指定する場合は、カタログ名を十でつないで