動作 - みる会図書館


検索対象: UNIX MAGAZINE 2004年5月号
75件見つかりました。

1. UNIX MAGAZINE 2004年5月号

連載 / Pe 日活用のヒント Web サイトの内容を管理しているサーバー 図 4 sync-n-putjs. pl びメ吏用例 END JavaScript insersion by sync_n_nputj s ・ pl く /noscript> く img border="O" width="l" hight="l" src="http://usage-tracking ・ jp/t . gif?js=no"> く noscript> く script 1anguage="JavaScript" src="/usage—tracking. js"> く /script> BEGIN JavaScript insersion by sync-n-nputjs ・ pl 図 3 sync-n-putjs. pl が HTML ファイルに埋め込む内容 内容制作のための 領域。アクセス統計 の仕組みは含まれて いない sync—n—putjs ・可 く img border="0" width="l" hight= く noscript> sync—n-putJs . pl [-verbose] 図 5 sync-n-putjs. pl の く /noscript> src="http://usage-tracking ・ jp/t ・ gif?js=no"> 本サーバーへ 本番の環境で使われる ファイルの領域。アクセ ス統計のための加工を おこなっている SRCDIR DSTDIR というわけで、 sync-n-putjs. pl が HTML ファイルの 末尾に埋め込む内容は図 3 のようになる。 いくつかの企業が、上記の仕組みで Web サイトのアク セス統言 t サービスを提供している。企業のサービスを利用 せず、自分でアクセス統計をとる場合でも一考に価する手 法だと思う。 sync-n-putjs. pl を使う理由 こうしたアクセス統言 t の手法があるとして、なぜ sync- n-putjs. pl のようなプログラムが必要なのだろうか。それ は、アクセス統言 t の仕組みとは無関係にページを制作でき るからである。 はじめは Web サーバーのアクセスログを処理してアク セス統言 t をとっていたが、その後アクセス統言 t サービス A を使い始め、さらにサービス B に乗り換えた、というのは ありそうな話である。しかし、 Web ページを制作する側と しては、アクセス統言 t の仕組みとは無関係に仕事をしたい。 そのためには、 sync-n-putjs. pl のようなプログラムを 使い、制作した HTML ファイルから実際に Web サーバー に置くファイルを生成すればよい ( 図 4 ) 。このようにすれ 80 ば、アクセス統引・方法を変更する際に埋め込む謎を修正 する手間が減る。 sync-n-putjs. pl の乍 sync-n-putjs. pl の具体的な使い途が分かったところ で、その動作を詳しく説明しよう。 コマンド行の書式は図 5 のとおりである。 S C. 〃 / がミラー元ディレクトリ、 DSTDIR がミ ラー先ディレクトリである。 -verbose オプションを付 けると、より詳しいメッセージが出力されるようになる。 -norecurse オプションを付けると、 SRCDIR の直下の ファイルのみをミラーする。 動作の基本はミラー元をミラー先に階層的にコピーする ことで、扱うのは普通のファイル、ディレクトリ、シンポ リック・リンクである。それ以外のデバイスファイルなど は無視し、ハードリンクは考慮しない。ミラー元で 1 つの ファイルがハードリンクによる 2 つのパスをもっている場 ミラー先では別のファイルになる。 前述のように、 HTML ファイル ( 具体的には名前の末 尾が . html または . htm のファイル ) については、コピー したうえでファイルの最後にアクセス統言 t のための言当を 挿入する。挿入する位置は </body 〉タグの前である。 UN 工 X MAGAZ 工 NE 2004.5

2. UNIX MAGAZINE 2004年5月号

が、電源ファンカ働いていないことに気づきました。ケー スに熱がこもっていた原因は、電源ファンの動作不良だっ たようです。さらに、 ARAID99 のファンも動いていない ことが分かりました。装置を取り外してファンを確認した ところ、黒い粉がファンの羽根にびっしりと付着し、指で 押してもファンが回らないほど、ファンの軸付近にもほこ りが溜まっていました。 ARAID99 は、このファンだけで内蔵 HD の熱を排出 する構造になっているため、ファンが止まると HD カ皜 温になることは容易に想像できます。今回のトラブルは、 ARAID99 と電源の 2 つのファンが停止したことカ源因 でしよう。 新しいサーバーを作る 新しいサーバーは、次のような方針で作りました。 ・ ARAID99 の内蔵 HD を新しい 80GB ディスクに交 換する。 この機会に、新サーバーの OS を Red Hat Linux 9 に アップデートする。 なお、 ARAID99 以外のパーツはすべて交換しました。 本来なら ARAID99 も交換すべきですが、事情により新 しいものが入手できなかったため、ファンを取り替えたあ と、きれいに掃除して使うことにしました。しかし、長時間 にわたって高温で動作していたため、装置自体が深刻なダ メージを受けているかもしれません。そこで、 ARAID99 に異常がないか、 OS やマザーポードの組合せによって不 具合カ起こらないかを確かめるため、 ARAID99 のディス クへの読み書きを複数回実行し、 NFS 経由でも複数のファ イルを並行して読み書きしてみました。まる 1 日テストし た結果、とくに不具合はみられませんでした。 新サーバーへの移行作業は以下の手順でおこないました ( 1 ~ 3 の作業はすでに終っています ) 。 1. 臨時サーバーの設置 2. Linux サーバーの停止と、ホーム・ディレクトリのコ ピー ( この間、サービス停旧 3. 臨時サーバーでのサービス開始 (rsync 開始 ) 4. 新しいサーノヾーの設置と ARAID99 のテスト 5. 臨時サーバーの停止と、ホーム・ディレクトリのコピー ( この間、サービス停止 ) 134 6. 新サーバーでのサービス開始 7. バックアップ・サーバーの OS の更新 8. rsync による自動バックアップの再開 ホーム・ディレクトリのサービスが停止するのは、 L ⅲ ux サーバーから臨時サーバーへファイルをコピーするあいだ と、臨時サーバーから新しいサーバーへファイルをコピー するあいだになります。それぞれコピーには約 2 時間かか りました。 最後に、バックアップ・サーバーの更新をおこないまし た。この機会に、バックアップ・サーバーの OS も Red Hat Linux9 に変更する ( システム HD 以外のハードウェ アは、従来のものをそのまま用いる ) ことにしました。バッ クアップ・サーバーか稼動するのは rsync による同期処理 が実行されるあいだだけであること、臨時サーバーに完全 なホーム・ディレクトリのコピーがあることから、とくに 作業を急ぐ必要はありませんでした。動作確認のあと、新 しいサーバーと rsync による自動バックアップを再開しま 反省点 ファンという小さな部品の故障がもとで、ファイルシス テムカ坏安定な状態になり、危うくサーバー全体力阯まっ てしまうという深刻な結果を招くところでした。最悪の場 合、バックアップ中に壊れてしまっていたかもしれません。 今回の反省点としては、まずほこりを吸い込みやすい、 床に近いところに置いていたのがよくなかったのかもしれ ません。この点を踏まえ、新サーバーはほこりが少なそう で、ファンの動作を定期的に確認しやすい場所に設置する ことにしました。 また、 rsync の実行中に出されたエラーメッセージを見 逃していたのもいけません。ただし、エラーメッセージを 定期的にチェックしていても、それがトラブルの原因と直 接結びつかない場合もあるので、すこし困っています。 仕事に使う主要なサーバーですから、今回のトラブルを 教訓として、もうすこし冗長性があるハードウェア / ソフト ウェア構成にすることを検討しています。 0 UN 工 X MAGAZINE 2004.5

3. UNIX MAGAZINE 2004年5月号

定します。この変数カ羸疋されていない場合には、プロセ スのリストを調べて目的のプログラムが起動しているかど うかを検査します。設定されていれば、この変数の値が示 すファイルにサービスを実行するプロセスのプロセス ID がオされているとみなし、処理をおこないます。 inetd サービスを実現する inetd プログラムなど、いく つかのプログラムは、起動時にそのプロセス ID をファイル に書き込みます。プロセスを探すときにこの情報を使わな い手はありません。プロセス ID が分かっているなら、そ のプロセス ID をもっプロセスがあるか、そしてそれが目 的のプロセスかを調べれば、簡単にサービスが起動してい るかどうかカ斗リ定できます。 このように、 pidfile 変数を言定することでプログラムの 動作を変えられますが、目に見えて変化するわけではあり ません。一方、次の required-files 変数の場合、これとは 比べものにならないほと慟作カ畯わります。この変数には ファイルのリストを指定でき、指定されたファイルがすべ てムみ可能な場合にのみプログラムの実行を開始します。 逆にいえば、ここに指定されたファイルのうち 1 つでも言儿 み込めないものがあると、プログラムを実行せすにスクリ プトを終了します。この変数を設定していなければ、いく ら run-rc-script 関数を実行してもこのような動作はしま せん。変数を設定することにより、プログラムの動作カ畯 更されたわけです。 値として設疋されている /etc/${name}. conf は、 inetd サービスを提供するための inetd プログラムカ第売み込む設 定ファイルです。この設疋ファイルがないと正しくサービ スを提供することができないので、無理にプログラムを起 動せず、起動を中止します。 最後の extra-commands 変数による動作の変更はさら に大きなものになります。この変数に値が設定されている と、その値は run-rc-command の実行時に新たなサプコ マンドとして認識されます。今回の場合、値として reload を設疋しているため、 run-rc-command 関数への引数に は、通常の start や stop などに加え、 reload を渡すこと ができるようになります。 サプコマンドとして reload が渡されたときの処理は run-rc-command 関数のなかに書かれていますが、その 処理を実行するには run-rc-command 関数で使われてい る -keywords 変数に reload という文字列が追加されてい 94 なければなりません。そのため、通常は reload を引数とし て run-rc-command 関数を呼び出しても reload の動作 を実行することはありません。 inetd スクリプトのように extra-commands に reload と設疋されていれば、この値 åi-keywords 変数に加えられるため、 run-rc-command 関数のサプコマンドとして reload カ用可能になります。 reload サプコマンドカ剛乎び出されると、設疋ファイルの 再言ムみがおこなわれます。 inetd プログラムにかぎらず、 多くのプログラムでは HUP シグナルを受け取ったときに 設疋ファイルを読み込むようになっています。すでにプロ グラムは動作しているのですから、わざわざいったん終了 させて再起動するよりも、高速に処理できるはすです。 の機能はすべてのプログラムに備わっているわけではない ので、 run-rc-command 関数ではとくに指定されていな いプログラムについてはこの機能を無効にしています。今 回の inetd スクリプトのように、 extra-commands とし て明記した場合にのみ有効となるようにしています。 この部分では、 OSTYPE 変数の値が NetBSD 、つま り NetBSD 用のスクリプトの場合にのみ pidfile 変数を 設疋するようにしています。 これは、同じ lpd プログラムでも、 NetBSD の場合には スクリプト独自の処理 usbd スクリプトや inetd スクリプトでは、あらかじ め用意された rc. subr ファイル内の関数を実行するだけで 目的の動作を実現できますが、かならずしもそのようなか たちで対応できるサービスばかりではありません。その場 合、別の方法で実行したい動作を表現する必要があります。 こう書くと難しく感じるかもしれませんが、これが普通 のプログラムです。 rc スクリプトはシェル・スクリプトで すから、やりたいことを簡単にプログラムとして表現でき ます。たとえば、 lpd スクリプトには次のようなコードが あります。 case ${OSTYPE} in NetBSD) pidfile="/var/run/${name}. pid" e S UNIX MAGAZ 工 NE 2004.5

4. UNIX MAGAZINE 2004年5月号

特集インターネットと世界のすきま 写真 12 アクティブタグ用リーダー ・パッシプ方式 ( 受動型 ) ・アクテイプ方式 ( 能動型 ) の 2 種類がある。 タグの説明で述べたように、パッシプタグは RFID リ ーダーからの電波照射によって動作する RFID タグであ る。 RFID システムとしてはパッシプ方式と呼ばれる。 れに対して、 RFID リーダーからの電波照射を必要としな い RFID タグを使う RFID システムは、アクテイプ方式 と呼ばれている。アクテイプ方式とパッシプ方式の違いを 図 1 に示す。 それぞれの動作原理を簡単に説明しておこう。 い帯域なので、運用時には干渉などに注意する必要がある。 これらのリーダーデバイスには RS485 および Ether- ノヾッシプ型システム net (100Base (X) インターフェイスカ咐いており、それ 現在もっとも一般的に使われている RFID システムは、 らを用いて外部から制御可能となっている。 パッシプバックスキャッタ・タグを用いるパッシプ型シス 写真 11 は、オムロン製の 13.56MHz 帯の CF .Com/ テムである。このシステムで利用される RFID タグはパ pact Flash) タイプのリーダー / アンテナー体型デバイス ッシプ型で、プロセッサと通信のためのアンテナのみで構 である。写真 6 のタグに対応している。 CF 型なので、ノ 成されている。 ート PC や PDA (Windows CE など ) に挿して利用で パッシプ型タグといっても電子回路で構成されているた きる。 め、動作させるにはなんらかの電力供給が必要である。 アクティブタグ用リーダー の電力を外部から与えることがンヾッシプ ( 受動型 ) " とい われる所以である。 写真 8 のアクテイプタグ用のリーダーデバイスを写真 12 に示す。このデバイスは RS232C インターフェイス 電源が実装されていないタグに電力を供給するための仕 を使って制御できる。写真は一番小さいアンテナを実装し 組みとして、パッシフ型の RFID ではリーダーから照射さ た例だが、もっと利得の大きなアンテナも選択可能で、そ れる電波を利用している。そのため、パッシプ型の RFID の場合のタグとリーダー間の通信距離は比較的長く ( 10m のアンテナは、 程度 ) になる。 外部からの電力供給 ・データ通信 リーダーからの電波に の 2 つの機能を備えている。また、 は以下の 3 つの役割がある。 ・通信の搬送波 ・ IC ( プロセッサ ) 用の電力供給 プロセッサのクロック供給 パッシプ型の RFID のリーダーとタグの関係およひ動 作の概略を図 2 に示す。 まず、タグは RFID リーダーからの電波によって励起 される。タグ上のプロセッサを駆動するクロックには照射 された電波カリ用される。そのうえで、特定のプロトコル R 日 D の動作原理と標準規格 R 日 D の動作 タグおよびリーダーデバイスの説明のなかで触れたよう に、 RFID の動作方式には大きく分けて、 34 UN 工 X MAGAZ 工 NE 2004.5

5. UNIX MAGAZINE 2004年5月号

図 4 呼び出される謚の定義 pwcheck—start ( ) if [ —f check the password temp/lock file /etc/ptmp ] ; then logger —s —p auth. err \ password file may be incorrect name 変数はこれまでと同様、提供するサービスを表し ます。しかし、ほかの例とは違って command 変数が設 定されていません。これでは run-rc-command 関数を実 行するときにエラーとなるはずですが、このスクリプトは 正しく動作します。なぜなら、 start-cmd 変数に値を定 しているからです。 run-rc-command 関数は、引数に start カ甘旨定されてい ると、まず start ー cmd 変数をチェックします。この変数に 値カ第又疋されていなければ、デフォルトの動作として com- mand 変数で指定されたプログラムの実行を開始します。 値カ駁疋されている場合には、その値を実行すべきコマン ド行とみなして実行します。今回の例では、 adj kernt z -i" というコマンドが実行されることになります。 adjkerntz スクリプトは起動時にプログラムを起動する だけです。逆にいえば、このサービスを停止する必要はあ りません。しかし、システムカ亭止する場合などは、 stop 引数付きでこのスクリプトカ呼ばれることになります。 のときの動作についても、変数の設疋で疋義しています。 変数の定義部分では、 stop-cmd 変数も設疋しています。 start が引数として与えられたときに start-cmd が実行 されるのと同様、 stop が引数として与えられたときには stop-cmd 変数が設定されていればその内容が実行されま す。ここでは : を変数に代入している、つまり、、何もしな い " コマンドを指定しているため、 stop 引寸きで呼び出 された場合にも、別のプログラムが起動されたりエラーに なったりする心配はありません。 start-cmd や stop-cmd には、コマンド行として扱え る文字列ならなんでも指定できるので、自分で関数を作成 してそれを呼び出すことも可能です。この機能を用いてい るスクリプトとして、 pwcheck スクリプトがあります。 pwcheck スクリプトでは、 start-cmd 変数に pwcheck- start という文字列を指定しています。つまり、このスクリ 96 /etc/ptmp exists" プトが start 引数付きで呼び出されると、 pwcheck-start という文字列がシェルによって実行されます。これは関数 の呼出しに対応し、呼び出される関数は図 4 のように定義 されています。 この関数は、パスワード・ファイルを編集しているとき に中間ファイルとして作成される /etc/ptmp ファイルの 有無を調べ、このファイルがあれば syslog に警告メッセー ジを送信します。このコードは、パスワード・ファイルの 編集中にシステムが再起動されたのではないことを確認す るためのものです。 この場合もサービスを停止する必要はないため、 stop- cmd にはさきほどと同様に : を代入しています。 ☆ 今回は、前号までに紹介した rc. subr ファイルで定義さ れている関数群を使って実際に処理をおこなう rc スクリ プトをいくつかみました。これでひととおり rc スクリプ トの動作を解説したことになりますが、理解していただけ たでしようか。 美しい rc スクリプトを作るには、 rc. subr ファイルで提 供されている関数群にどのようなフックが準備されている のか、どの変数に値を設定すると動作カ畯わるのかなどを 知っている必要があります。ここですべてを挙げることは できませんが、前回までの rc. subr ファイルの解説で、さ まざまな変数の役割はある程度理解していただけたと思い ます。それらをどのように使うかについても、今回紹介し た実際の使用例をみれば分かるのではないでしようか。 現実には、これらの変数などをすべて記億しておくこと は不可能です。必要に応じてシェル・スクリプトを読み、 自分のほしい機能を備えているかを確認しながらプログラ ムを書いていけばよいでしよう。 ( たじみ・ひさかす ) UNIX MAGAZINE 2004.5

6. UNIX MAGAZINE 2004年5月号

図 5 kbdsim モジュール使用例 #include く fcntl . h> #include く unistd . h> main ( ) int fd; char s [ 2 ] ; fd = open ( "/dev/kbdsim" , O_WRONLY) ) ; s [ 0 ] 41 ; / * 1 のスキャンコード * / / * キーを押した * / write(fd, s, 2 ) ; sC1] = 0 ; / * キーを離した * / write(fd, s, 2 ) ; 連載 1 Zaurus with Linux を作成するか、 iPKG パッケージから kbdsim. 0 を抜き出 して適当なディレクトリに置きます。そして、デバイスフ アイル /dev/kbdsim を用意し、 insmod コマンドで kbd- sim. 。をカーネル・モジュールとして組み込みます。たと えば、 # mknod /dev/kbdsim c 61 0 # chmod 600 /dev/kbdsim # insmod —f kbdsim . 0 のようにします。 モジュールが組み込まれたかどうかは lsmod で確認します。 コマンド # lsmod Modu1e kbdsim pxa—bi Size 992 21328 Used by 0 (unused) 0 (unused) 外部プロセスからキーボード入力をシミュレートするに UNIX MAGAZINE 2004.5 5 PS/2 キーポードのキーポード・スキャンコードとはまったくの別勿で - す・ いるものを利用します。 linux24/drivers/char/corgi-keymap ・ map に書かれて なお、こ ーで使うキー・スキャンコード 5 は、 kernel/ レークを示す 0 を書き込んでいます。 示す 1 を write で書き込み、最後にスキャンコードとプ ンし、次に 1 キーのスキャンコードである 41 とメークを います。まず、デバイスファイルを書込みモードでオープ では、数字の 1 キーを押して離す動作をシミュレートして は、図 5 のようなプログラムを使います。このプログラム kbdsim の応用 kbdsim モジュールを使って、最終目標のキーポード・ ドライバを作成する前段階として、コマンドラインから指 定した文字列をキー入力に送り込む、、仮想キーボード " ソ フトを作ってみました。このソフトの名称は、仮想キーボ ード (pseudo keyboard) の頭文字をとって、、 pk" としま 0 pk は、次のようにして起動します。 pk s カれ 9 引数の s は、キー入力に送り込む文字列です。この 文字列では、バックスラッシュを使ったエスケープ・シー ケンスカ吏えます。たとえば、 \ r はキャリッジ・リターン ( 0x0d ) 、 \t はタブ ( 0X08 ) 、 \n は直 oxoa ) 、 \ \ はバック スラッシュ ( 0x5c ) になります。また、 \ ゅん勧でコン トロール文字を指定することもできます。 \Ac は ctrl 十 c ( 0X03 ) になります。 簡単な実行例を示します。 # pk 'echo "foo"\r' # echO " f00 " f00 pk -d [ + ト ] scancode. とすると、文字列ではなく scancode で指定したキー・ス キャンコードをキー入力として送り込むことができます。 scancode の前に符号を付けないと、 scancode で示される キーを押してから離す動作をシミュレートします。また、 、、十 " は scancode で示されるキーを押す動作を、 は scancode で示されるキーを離す動作をシミュレートしま す。したがって、次の 2 つの例は、どちらもスキャンコー ド 41 のキー ( 数字の 1 ) を押して離すことをシミュレート 1 行目では、 pk コマンドで、、 echo "foo"\r" という文字 列をキー入力に送り込むことを指示しています。そして、 2 行目では、その送り込まれた文字列がシェルに渡されてェ コーバックされています。 3 行目では、結果として入力さ れた echo コマンドの引数である foo が表示されています。 また、 # pk —d + 41 ー 41 # pk —d 41 することになります。 177

7. UNIX MAGAZINE 2004年5月号

COFFEE BREAK ディスクのトラブル かしくなったことカ源因のようです。このトラブルに対処 ードディスク ( 以下、 (D) と RAID 装置の動作が熱でお えなくなるというトラブルが発生しました。どうやら、ハ イレクトリ以下のファイルやディレクトリが、一時的に見 先日、職場で管理しているファイルサーバーの特定のデ システムの概要 したときの様子を紹介します。 このマシンは、大容量のファイルサーバーを安価に構築 提供する Linux サーバーです。 回、動作がおかしくなったのは、ホーム・ディレクトリを ラーリングでデータを保護するようになっていました。今 か動作する PC サーバーを使用しています。それぞれ、 SunBIade 150 を、ホーム・ディレクトリ用として L ⅲ ux ファイルサーバーには、仕事で使うファイル用として バックアップしています。 しています。そして、システム管理者の私が一括して保守、 ルはすべてファイルサーバーに用意して、 NFS でアクセス /bin などに各内される各種コマンド、仕事で必要なファイ うにし、各ユーザーのホーム・ディレクトリや /usr/local います。手許の PC にはできるだけファイルを置かないよ 動作しています ) があり、これらをネットワークで接続して PC ( ほばすべてのマシンで Linux などの PC UNIX が サーバーのほか、 10 名ほどいるスタッフのそれぞれの机に 私の所属する音曙には、約 10 台の WS と PC UNIX ・オンラインで別ホストにバックアップをとる。 リングする。 ・データイ隻のために、ハードウェア RAID 装置でミ 曲な大容量の IDE HD を使う。 するために、次のような方針で作りました。 、フー ントローラと 2 台の 3.5inch HD カ蔵された、 IDE 接 製品です。 PC の 5inch べイ 2 つぶんの筐体に RAID コ Systems の ARAID99-500 ( 以下、 ARAID99) という 使用しているハードウェア RAID 装置は、 Accordance UNIX MAGAZINE 2004.5 続タイプのものです。この ARAID99 はハードウェアで ミラーリングをおこなうので、 PC からは 1 台の HD に みえます。そのため、 OS で特別な処理をしなくても、 ラーリングによるデータ保護ができます。さらに、ディス クを十するトレイはホットスワップ対応なので、 OS に 景彡響をおよばすことなく、故障した HD の取外しや交換、 データの同期がおこなえます。 ミラーリング以外のデータ保護対策としては、 rsync を 使って、ホーム・ディレクトリの内容を 1 日に 2 回バック アップ・サーバーにコピーしています。 ホーム・ティレクトリが消えた それでは、どのようなトラブルが発生したのかを書きま しよう。 ある日の夕方、外出していた A さんから「 rsync での ホーム・ディレクトリのバックアップはどうなってます ? 」 という電話がかかってきました。 ホーム・ディレクトリのデータは、前述したように 1 日 に 2 回 ( 4 時 10 分と 16 時 10 分 ) 、 cron と rsync を使っ てバックアップ・サーバーに保存されます。そして、処理 結果が syslog サーバーに送られます。この記録を確認し たところ、その日の最初のバックアップ処理は正常におこ なわれていました。したがって、バックアップ・サーバー には今朝 4 時のホーム・ディレクトリの内容力呆存されて いるはずです。 「いま ssh でログインしたら、ホーム・ディレクトリのフ ァイルがなくなってるんだけど。何かの拍子に、、 rm -rf" を実行しちゃったのかも・・ この状態で自動バックア ップが実行されると、バックアップ先のファイルも消えち ゃう ? 」 A さんの言うとおり、ファイルを削除したあとに rsync でバックアップが実行されると、バックアップ先のファイ ルも消されてしまいます。これは、ディスク容量の制限に より、バックアップ・サーバーには 1 世代ぶん、つまり最 新のバックアップ・ファイルしか保存されないようにして いるからです。そのため、次のバックアップまでのあいだ 時計を見ると、 15 時 55 分を過ぎたところでした。ホー イルも消えてしまうのです。 にファイルを削除すると、バックアップ 131 ・サーノヾーのファ

8. UNIX MAGAZINE 2004年5月号

特集インターネットと世界のすきま ・データ書込み 複数ベージ ( 記頁域 ) の切替え ・書込み禁止設定 / 解除 ・データ消去もしくは機能破壊 ・機能 ( 一時 ) 停止 などがある。 アクテイプ方式 タグの説明で紹介した RF-CODE のアクテイプタグは と比較して回路カ礬隹になる欠点がある。 め、単純に発信するだけでよいトランスミッタ方式のタグ ーからのメッセージを受信できなければならない。そのた ダーからタグを制御するために、タグ側で RFID リーダ という利点がある。しかし、トランスポンダ方式ではリー るタグの個数を減らせるので、利用周波数帯も狭くできる を抑えることができる。また、同時にメッセージを発信す 発信頻度をリーダーから制御できるため、タグの電力消費 みメッセージを発イ言するタイプである。トランスポンダは 合、つまりリーダーからのコマンドを受け取った場合にの それに対して、トランスポンダはリーダーか存在する場 メッセージを発イ言するタイプのアクテイプタグである。 常時もしくはタグ自体が設定する適当なトリガーによって トランスミッタは RFID リーダーの有無にかかわらす、 の 2 種類に分類される。 ・トランスポンダ トランスミッタ アクテイプタグは発振の挙動によって、 器、プロセッサおよび周辺回路が必要となる。 う単純な構成であったが、アクテイプタグには電源、発振 能である。そのため、パッシプタグは IC とアンテナとい 不可分だったが、アクテイプ方式ではタグ単体でも動作可 要がある。すなわち、パッシプ方式ではタグとリーダーは タグ単体で電波発信デバイスとしての機能を備えている必 アクテイプ方式のタグは電力供給手段をタグ内にもち、 36 とアクテイプ型の違いは動作原理だけではない。 こまで RFID の動作原理を眺めてきたが パッシプ型とアクテイプ型の比較 トランスミッタ・タイプである。 、ノヾッシフ彗堕 パッシフ型とアクティフ型はおもに ・到〕聟巨離 読取り精度 ・コスト に大きな違いがある。 到達距離は、パッシプタグの場合にはリーダーの発振出 力とリーダーおよびタグのアンテナ利得の積でおおむね決 まる。大きなアンテナで大きな出力の電波を出せば、タグ のアンテナ面で十分な電力を発生できるので、比較的遠く でも動作する。また、リーダー側で十分な利得のアンテナ があれば、タグの発振出力が小さい場合にも受信できるた め、トランザクションが成立する。小さなアンテナの場合 は数 mrn から数 cm の距離しか到達できないが、大きな アンテナと十分な出力 ( たとえば EIRP2 で 4W3 ) を使え ば数 m 程度は届く。これに対して、アクテイプタグの場 合は一般にタグの発振出力がパッシプタグにくらべて段違 いなので、 10m から数ート m 以上届くものが多い。さらに リーダーのアンテナも比較的小さくできる。 次の読取り精度についてもパッシプタグは不利である。 電源を外部から供給しなければならないパッシプタグは、 タグ部分でのアンテナ利得にきわめてセンシテイプであり、 実装方法やアンテナとの位置関係によっては励起されずに 認識されない場合が多い。一方で、アクテイプタグはトラ ンスミッタの場合はもちろんトランスポンダの場合でも、 トリガーとなる信号さえ受信すれば自己発信するため、シ ステムとしての読取り精度は高くなる傾向にある。 最後のコストは、タグ単体のコストを考えるとパッシプ タグが圧倒的に有利である。なぜなら、パッシプタグは現 在でもアンテナ付きインレットを数十円から数百円で作れ るのに対して、アクテイプタグは回路が複雑なため、すく なくともその 10 倍以上の値段となるからだ。しかし、 1 台 のリーダーで検出できる範囲を考えると、全体のシステム としてみた場合はアクテイプタグがコスト的に有利な面も ある。システム全体のコストはタグの総数とリーダーの総 数で決まるので、たとえばタグの数がある一定数で頭打ち になり、測定範囲カ昿いような場合には、同等のコストに なるというもある。 2 空中線電力と送信空中線種 ) 積。 3 日本ではここまで出力を一ヒげることはできない。 UNIX MAGAZ 工 NE 2004.5

9. UNIX MAGAZINE 2004年5月号

連載 / PerI 活用のヒント ファイルをコピーするかどうかは、ファイルの最終更 のマシンからのミラーまたは別のマシンへのミラーである。 新日時 ( タイムスタンプ ) のみで判断している。最終更新 しかし、同じマシンの特定のディレクトリから別のディレ 日時が異なっていればコピーし、同じならコピーしない。 クトリにミラーすることもできる , 、。。を一、オプシ付きは実行すれば、ピーした HTML ファイルの場合はかならずミラー元と大きさが違 うので、コピーするかどうかは最終更新日時をもとに判断 ファイルのノヾスが標準出力に出力される。出力はそれだけ するしかない。このため、ファイルをコピーしたときは、最 ではないが、コピーされたファイルのパス名だけを判別す 終更新日時がミラー元と同じになるようにしている。 るのはそれほと難しくなさそうだ。 sync-n-putjs. pl を実 ミラー元で削除されたファイルやディレクトリ、シンボ 装するとしたら、 rsync でコピーされたファイルについて、 リック・リンクはミラー先でも削除される。名前の末尾が それが HTML ファイルの場合はアクセス統言 t のための変 以下のいずれか ( 大文字 / 小文字は無関係 ) のファイル、デ 更を加えるという方法が考えられる。 ィレクトリ、シンポリック・リンクはコピーされない。 HTML ファイルはすべてミラー元とは異なるので、普 通に rsync を使うと毎回すべての HTML ファイルがコ ・ org ・ orlg ピーしなおされ、アクセス統言のための変更が加えられる また、名前が rcs ( こちらも大文字 / 小文字は無関係 ) の ことになる。これでは効率カい。しかし、一 u オプション ファイル、ディレクトリ、シンポリック・リンクもコピーさ を与えて rsync を実行すると、ミラー先のファイルのほう れない。これらは一時ファイルや RCSI のファイル、ディ カ噺しい場合は更新されない。したがって、 rsync を使っ レクトリであり、コピーする必要はないはずだからである。 て sync-n-putjs. pl を実装することは可能である。 File: : ファイルとディレクトリのモードや所有者、グループな SyncNMod を使用する場合とくらべても劣る点はほとん どの属性は、ミラー元とミラー先が極力同じになるように どない。強いて挙げるなら、 sync-n-putjs ・ pl が rsync に する。 root はディレクトリとファイルの属性を自由に設疋 依存するので、このコマンドがないと動作しなくなる。ま できるが、一ヨ殳ユーザーには制限があるので、、極力 " なので ー v オプションを付けた rsync の出力フォーマットは ある。なお、属性のみカ畯わって最終更新日時に変化がな 厳密に定義されているわけではないので、将来形式カ畯わ くてもミラー先に反映される。 り、 sync-n-putjs ・ pl に変更の必要が生じる可能性がある。 sync-n-putjs. pl と File: :SyncNM0d は UNIX を念 頭に書いたものだが、 Cygwin の Perl や Windows の rdist ActivePerI でも問題なく動作するようだ。ショートカッ rdist の r も remote の r だが、配布先マシンを 10Ca1 ー トも Cygwin の Perl や ActivePerl でミラーされる。た host にすることで、同一マシン内でのミラーに使うことか だし、パスの区切り文字を、、 / " にしているので、これカ源 できる。 因でコピーできないことがあるだろう。 rdist は DistfiIe をもとに動作する。 DistfiIe にはど のディレクトリをどのマシンのどのディレクトリにミラー File: :SyncNMod を使う理由 するかといった情報を静的に記述する。 Web サイトの運 用ではサイト内のさまざまな部分を更新することがあるの sync-n-putjs. pl の実装には、既存のコマンドやモジュ で、 sync-n-putjs. pl は任意のサプディレクトリに対して ールを利用することも考えられる。以下、使えそうなコマ 動作してほしい。これに関しては、 DistfiIe 自体を動的に ンドやモジュールについて述べる。 生成することで対処できる。生成される DistfiIe は図 6 rsync のようになる。これは、 /dl/stage/htdoc/about から ディレクトリをミラーするためのコマンドに rsync があ /dl/prod/htdoc/about ヘミラーする場合の例である。 special の行では、コピー後に実行されるコマンド em- る。 rsync の r は remote の r なので、本来の使い方は別 bed-usage-tracker が指定されている。コマンド行引数 1 Revision Control Systemo UNIX 用のファイル・ノヾージョン艝理 である $REMFILE は、コピー先のパス名に置き換えられ ソフトウェアの 1 つ。 81 UNIX MAGAZINE 2004.5

10. UNIX MAGAZINE 2004年5月号

冒頭でも触れたが、最近多くのメディアで RFID に関す る情報をみかけるようになってきた。しかし、そこで扱わ れている RFID 関連の話題の多くは、 ・どんな使い方があるのか ・どの程度使えるのか 特定の業界での使い方 ( ビジネス寄り ) ・そもそもどのようなものなのか というあたりに終始しているようにみえる。この特集で は、実際に RFID を用いたシステムやアプリケーション に注目していきたい。おもに ・どんなふうに使えるのか ・作ってみたらどうなるか ・使ってみたらどうだったのか というあたり、とくに れのモノをいままでのような、、種類 " 以外の方法で認識し、 扱うことができる。たとえば、本に 1 冊ずつ一意な名前が 付けられているとすれば、ある、、本に起こったことと別 の、、本 0 " に起こったことは別々に認識できるようになる。 つまり、一意な識別子力それぞれに付加された瞬間から、同 じタイトルで同じ内容の本から、その識別子によって連続 的に串刺しされる 1 つ 1 つ別の、、物語 " をもつ実体になり うるのである。 もちろん、雹凾の本はいくら命名されたからといって、自 分に起こったことを記億することはできないし、憶えてい たとしてもその内容やそれ以外の自分に起こった物語を外 、、インターネット " と、、 ID 技 部に伝える手段をもたない。 術 (=RFID など ) " の接点はここに集約される。情報を処 理、集約、伝達する手段であるコンピュータおよびネット ワーク技術が、、モノ " を補助することによって、語る手段の ないモノがもつ情報と相互に対話できるようになる。 一方通行から相互通行へ拡張することによって、我々の 生活する空間や直接触れる、、モノ " に密接したアプリケー ションが考えられる。この特集では、 RFID などの ID 技 術、 RFID を用いた実空間型のアプリケーションを扱って いく予定である。 この特集の流れ UN 工 X MAGAZINE 2004.5 RFID 事始め ・ RFID の孑支術 ・ RFID を利用したアプリケーション ・ RFID に関連するトピックの現状の解説 に焦点を当てていこうと考えている。 RFID 自体はノ、一ド ウェア・デバイスであり、 RFID タグ ()C タグ、電子タ グ、無線タグ、無線 IC タグ ) とリーダー / ライターのペア で動作する。そこで、ソフトウェアやシステム構築だけで なく、ハードウェアについても触れていく予定である。 当然ながら、システムの構築には UNIX 系の OS やソフ トウェア開発環境を用いる。たとえば、 NetBSD は Win- dows CE カ働く PDA などのハードウェアでも動作する ため、小回りの利く小型の RFID リーダーなどを開発する ことも容易である。そのため、本特集ではおもに FreeBSD や NetBSD などの OS 上で、 perl や Ruby 、 C 言言吾な どを用いた RFID 利用システムや、 UNIX 上の他のアプ リケーションとの組合せを考えていく。 また、 RFID を利用したシステムや RFID デバイスは、 一般のネットワーク技術やシステム技術からすこし離れた 分野であり、まだまだ新しいう f でもある。そのため、し ばらくのあいだは RFID に関連する用語の解説もおこなっ ていく予定だ。 初回の今回は、まず RFID の概要を紹介し、その動作原 理を説明する。それから、 ・ RFID アプリケーションの概略 実際の RFID 利用例 RF 旧って ? R 日 D のハードウェア を紹介していこう。 29 、、無線技術を使った ( 個体 ) 識別 " を未している。ーロに RFID は Radio Frequency IDentification の略称で、