オプション - みる会図書館


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

1. UNIX MAGAZINE 2003年5月号

tsort コマンドにはオフションがいくつか用意されてお り、いすれも依存関係の循環を検出したときの重川乍を制御 するためのものです。ー 1 は、依存関係の循環を発見したと きに、それらの循環のなかから最長のものをみつけるため のオプションです。 -d は、循環が発生した原因をより詳 しく表示し、循環を解消する丁掛かりを提供します。 最後の一 q は、上記の 2 つのオフションとは考え方が異 なります。これは、循環があってもそれをエラーとして扱 わすに処理を続けるためのオプションです。 こで、 tsort コマンドの生い立ちを紹介しておきまし よう。もともと、 tsort はライプラリに登録するファイル の順番を決めるために使われるコマンドでした。ライプラ リへの追加はファイル単位でおこなわれます。このとき、 ファイルに含まれる複数の関数はまとめて追加することに なります。あるライプラリ関数をプログラムのなかて利用 すると、その関数が含まれるファイルがライプラリ・ファ イルから取り出され、プログラムのリンク時に結合されま す。ここで問題となるのは、プログラムで用いられるライ プラリ関数自身が、別のライプラリ関数を利用することが ある点です。 このような場合には、間接的に利用されるライプラリ関 数もリンク時に結合する必要があります。これらの関数か 同じライプラリに登録されているとき、間接的に利用する ライプラリ関数のはうか現在処理している場所より後ろに オ内されていれは、ライプラリを一度処理するだけで必要 な関数をすべて結合することができます。しかし、現在処 理している場所よりも前にオ内されていると、もう一度ラ イプラリ全体を処理しなけれは結合できません。 プログラムが printf 関数を利用する場合を考えてみま しよう。 printf 関数は、内部で write 関数を呼び出して います。 libc ライプラリに printf 、 write の順にオ内され ている場合、プログラム側で printf 関数が必要なときに libc ライプラリを前から順番に処理していってそれを結合 します。この段階で write 関数も必要なことが分かります が、そのまま libc ライプラリの処理を進めていけばこれ も結合できます。 一方、 write 、 printf の順に登録されている場合はどう でしよう。 libc ライプラリを処理していき、 printf 関数を 結合するところまでは同じです。しかし、 write 関数が必 要なことが分かった段階で、 libc ファイルの write 関数 114 か登録されている場所はすでに処理を終えているため、 のまま libc ファイルの末尾まて処理しても write 関数を 結合することはできません。けっきよく、もう一度 libc ライプラリを : 麪頁から処理しなおさなければなりません。 このような条件下で、できるかぎり 1 回の処理でリン ク作業を終らせるには、ライプラリ関数間の依存関係を抽 出し、その関係がイ尉寺される順番でライプラリに登録すれ ばよいでしよう。この順番を引算するために作られたのが tsort 関数です。 現在はライプラリ内にインデックスが作成されている ので、後ろに登録された関数から前に登録されている関数 を呼び出せないといった制限はありません。したがって、 tsort 関数は当初の彳難リを終えたわけですが、コマンド自 体は残り、オプションも当時の名残をとどめています。 -q オフションが作られたのは、ライプラリを構築する 際にやむをえす循環か生じるような場合に、いちいち工ラ ーか報告されるのを避けるためでしよう。このオプション を指定すると、ライプラリに登録するファイルの順番を決 める際に循環カ吽しても、エラーメッセージを表示しない ようになります。 tsort コマンドでのテータベースの利用 tsort コマンドでは、入力として・与えられたグラフの情 報をイ寺しておかなけれは、、出力を引算することができま せん。 tsort コマンドは、このグラフの情報を一尉寺するた めにデータベースを利用しています。 データベースを検索するときのキーになるのは、ノード の名前です。データベース検索の結果として得られるデー タ構造には、ノードに必要帯に ( たとえば、そのノード から出ているアークの一覧など ) か含まれています。 こて利用しているデータ構造は、もちろん構造体の形 式で定義されています。しかも、あるノードから出るアー クの数はあらかしめ決定できないため、データ構造として はポインタ寺し、その先に複数のアークを登録できる ようにしています。また、データ構造のなかにはノードの 名前も含まれますが、これも長さによって実際に占める領 域のサイズが変わります。 こで扱うデータ構造は可変長のデータであ つまり、 り、固定長のデータを登録するデータベースには向いてい UNIX MAGAZINE 2003.5

2. UNIX MAGAZINE 2003年5月号

連載 /UNIX Communication Notes— 図 4 htpasswd による / くスワードの生成 # htpasswd —c tmpfile suguru New password: ノヾスワードの入力 Re—type new password: ノヾスワードの再入力 Adding password for user suguru # cat tmpfile suguru : s6CViisRLn6hg cat コマンドとシェルのリダイレクトを用いてファイルの内容 ぐ意味でも、図 4 の例のようにローカルにファイルを作成し、 オプションク月旨定は慎重におこなうべきである。トラブルを防 名のパスワード・ファイルがある場合は一 E 書きされるので、 -c と、パスワード・ファイルが、新たに " 生成される。すでに同 htpasswd コマンドに—c オプションを付けて実行する 注意 1 コマンドを実行する。 ルがある場合は、 -c オプションを付けすに htpasswd レクトリに移動すればよい。すでにパスワード・ファイ 成されるので、内容を石忍してから Apache の設疋ディ とローカル・ディレクトリにパスワード・ファイルか生 htpasswd では、この図のようにファイル名を指定する 暗号化してファイルに書き出す。 される。両方のパスワードかン一。。一致すれは、その文字列を る。通常の passwd コマンドと同じように再入力が促 力を求められるので、、、適切な文字列 " を選んで入力す る。 htpasswd コマンドを起重丿けると、パスワードの入 ru のために新たなパスワード・ファイルを作成してい 図 4 では、—c オフションを指定してユーサー sugu- ューザー名 : 暗号化されたパスワード ものである。 成する。このファイルの形式は、次のようにごく簡単な passwd. protected # cat tmpfile > > /usr/10ca1/apache2/conf/=> user suguru ることを表している。ューサーを限定したいときは、 しいパスワードの入力によってアクセスできるようにす パスワード・ファイルに登録されているユーサーが、正 ・ require valid-user を連結したほうか安全である。 60 クテイプで次のように指定する。 ルーフとして扱いたい場合は、 AuthGroupFile ディレ のように記述すれはよい。複数のユーサーを 1 つのグ AuthGroupFi1e /usr/10ca1/apache2/conf/=> group ・ protected そして、上記のファイル /usr/local/apache2/conf/ group ・ protected のなかに geeks : suguru masa moley のように言当主しておく。 require ディレクテイプでは、 require group geeks のように指定すると、グループ geeks に含まれる複数 のユーサーのアクセスが可能になる。 パスワード・ファイルを 1 つだけ用意してグループ単位で 制笹けるガ去と、複数のパスワード・ファイルを用意するガ去の どちらを利用するかは、けっきよくは管理者のスタイルしだい ともいえる。私自身は、 WWW サーバーにアクセスするユー サーの数に応じて処理を変えればよいと考えている。すなわち、 ューサーが少ないあいだはパスワード・ファイルか複数あった ところで、管理の手間はそれはどかからない。しかし、数多く のユーサーがアクセスするようになるとかなり面倒になってく るので、グループファイルを用意してグルーフ。単位で管理する ほうか効率がよい。 このガ去の場合は、必要な設定をすべて httpd.conf で おこなわなければならない。それには、 httpd.conf フ ァイルへの書込み権限を、パスワード認証を設定したい すべてのユーサーにケえる必要がある。これを避けるに は、 . htaccess というファイルを使えばよい。 ー隻すべきコンテンツを含む個々のディレクトリに . ht ー access というファイルを用意し、そこで上記の Auth 関 連ディレクテイプを記述する。この場合は、 httpd.conf のなかで AIIowOverride ディレクテイプを次のように記 述する。 AIIowOverride AuthConfig この場合の設定例を図 5 に示す。 パスワード認証の問題点 パスワード認証の間題点としてよく孑商されるのは、け っきよくのところ、従来の UNIX パスワードをネットワ ーク環境で利用したときと同じ弱点を抱えているというこ とだ。つまり、ネットワーク上で交換される情報 ( ューサ ー名とパスワード ) の一カ坏十分であり、再利用可能な パスワードの弱さが露呈されてしまうのである。そこで、 UNIX MAGAZINE 2003.5

3. UNIX MAGAZINE 2003年5月号

図 3 NODE 橢制本 typedef struct node—str NODE; struct node_str { NODE **n_prevp ; NODE *n_next ; NODE **n_arcs ; illt n_narcs ; int n_arcsize ; int n_refcnt ; int n—flags ; char n—name [ 1 ] ; プログラミング・テクニック・ name 0f this node * / # of arcs pointing to this node * / size 0f n—arcs ロ array * / number Of arcs in n_arcs [ ] * / array Of arcs tO Other nodes * / next node in graph * / pointer tO previous node ) S n—next * / ません。そこで、 tsort コマンドではノードに関するデー タ自体をデータベースに登録するのではなく、ノードの情 報はメモリ上凵尉寺し、そのアドレスだけを登録するよう にしています。これにより、ファイルを用いたデータベー スは利用できなくなりますが、可変長のデータでも上如勺 簡単に扱えるようになります。 それでは、いつものようにソースコードをみていきまし よう。 tsort コマンドのソースコードは、 /usr/src/usr. bin/tsort ディレクトリに置かれています。 プログラムのう頁のほうでは、さきはど紹介したノード を表すデータ構造を定義しています ( 図 3 ) 。 ます nodestr という構造体に NODE という名前を 付け、続いて本体を定義しています。ここで作成している データ構造は、基本的には二重リンクリスト構造です。 n- next メンノヾーが次のノードを指し、 n-prevp メンノヾーが 則のノードを指しています。ただし、 n-prevp メンバーは 則のノード自身ではなく、前のノードの n-next メンバー の位置を指しています。二重リンクリストで前のノードが 必要になるのは、前のノードがもつ次のノードを指す場所 を調整するためです。ここでは、処理の際にわざわざ n- next メンバーをたどらすにすむように、メンバーの位置 を利用しています。 直前のノードではなく、そのノードが次のノードを指す ためのメンバーの位置を孑ことによる利点はもう 1 つあ ります。リスト構造の操作ではク頁のノードを特別扱いす ることがよくありますが、これがイになります。地頁の ノードを特別扱いする理山は、メンバーとして直前のノー ドを指すようにしていると、 : 頁のノードを指す部分 ( た ソースコード UNIX MAGAZINE 2003.5 んなるポインタ ) と、 2 番目以降のノードを指す部分 ( 次 のノードを指すメンバー ) が異なるため、処理を分けなけ ればならないからです。しかし、ポインタやメンバーのア ドレスを指すようにすれば、両者の処理を区別する必要が なくなるため、 1 つのコードでどちらも処理できます。 main 関数でのおもな作業は、引数やオプションの処理、 入力の角斤などです。オフションの処理では、 getopt 関 数を使って前述の 3 つのオプション (d 、 1 、 q) を処理し ます。これらのオフションカ甘旨定された場合、各オフショ ンに対応する変数の値を真に設定します。オプションを処 理したあと、引数にファイル名か残ってい川まそのファイ ルを、残っていなけれは標準入力を、グラフ情報の言囚み 元として設定します。 言ムみを開始する前に、バッフアを確保します ( 誌面の 都合、て折り返しています。以ード同様 ) 。 for (b bufs, Ⅱ b->b_buf 2 ; grow-buf (NULL , - b—>b_bsize 1024 ) ; こて市寉保している 2 つのバッフアは、アークの元に 115 if (c 際、途中で入力カ鮗了してしまった場合は break により 読込みの先頭では、空白文字を読み飛はします。その break ; = EOF) c = getc(fp) ; while (c ! = EOF & & isspace(c)) for ( Ⅱ = 0 , c = getc (fp) ; ; ) { 部も更新部もない無限ループとなっています。 部分です。 for ループを使って : 滝見されていますが、条件 次は、実際に入力を読み込んでグラフを認識するための 期値として、 1 , 024 バイトのバッフアを作成しています。 なるノードとアークカ甘旨すノードの 2 つに対応します。初

4. UNIX MAGAZINE 2003年5月号

特集・プログラミング入門 る前に、それか完成するまでにどの程度の時間がかかるか は簡単には見積もれませんし、できあがったプログラムを 何回実行するかも予想しにくいでしよう。ただ、計算機で 何か処理をしようと考えるときには、つねにこれらの点に 注意してほしいと思います。 こでは単純に手間が 1 , 000 倍になると計算し また、 ましたが、間題カ吠きくなったときに手間か線形に増える アルゴリズムもあれは、もっと急激に増えてしまうアルゴ リズムもあり、逆になかなか手間カ蒴えないアルゴリズム もあります。これらのさまざまな要因を考慮に入れて、ど う間題を鮹夬していくのかを考えてください。 UNIX のコマンドの利用 UNIX を用いてプログラムを作成する場合には、既存 のコマンドの存在を忘れるわけにはいきません。 UNIX で は、基本的なコマンドとしてさまざまな処理をおこなうコ マンドカ甘是供されています。これらをうまく使えば、プロ グラムの作成時間を矢旨することができます。もちろん、 目的の処理をおこなうための専用のコマンドが用意されて いるわけではないので、出力を多少手直ししたりする必要 はあるでしよう。しかしその作業も、 UNIX のコマンド を使っておこなうことができます。 UNIX ではパイプという概念があり、あるコマンドの 出力を次のコマンドの入力として渡すことができます。そ の際、渡されるのはバイトストリームであるといわれてい ますが、実際には改行文字で終る行が連続したものか渡さ れることがほとんどです。数多くのコマンドがこのような 入力を処理し、出力でも同様な出力をおこなうため、さま ざまなコマンドを組み合わせて複雑な処理を実行すること もできます。 かなり昔の話ですが、和初めて UNIX マシンや C 言 語を触りだしたころのことです。プログラミングの練習と いうことで、「テキストファイルの行を逆順に出力するプ ログラムを作れ」という課題を出されました。純粋に C 言 語のプログラム練習として捉え、文字配列やポインタ、さ らにはファイルからの入出力を使ったプログラムを作ろう としたところ、ある人はこれを UNIX のコマンドのみで 実現しました。現在では、実際のファイルに対する同様の 操作であれは tail コマンドに一 r オプションを付けること で実現できますが、当時はまだ一 r オプションはありませ 100 んでした。さらに、この人は標準入力から入力が与えられ た場合にも正しく動作するようにしたのです。それは次の ようなものでした。 # ! /bin/sh cat ーⅡ " $@" ー sort —nr ー cut —c 8 ー いちおう説明しておくと、 cat コマンドに—n オフショ ンを指定することで、ますすべての行に行番号を付けま す。引数として、、 $@" を指定している点も重要です。この シェル・スクリプトに対する引数カ甘旨定されていない場合 には、 cat コマンドに対する引数も存在しなくなります。 すると、 cat コマンドは標準入力から入力を読み込むよう になります。逆に、引数カ甘旨定されている場合には、 cat コマンドにも引数を指定した状態になるので、 cat コマン ドはファイルから内容を読み込むわけです。 次に、行番号の付いた内容が sort コマンドに渡されま す。 sort はご存じのとおり整列のために使われるコマン ドですが、オプションとして -nr を指定しています。Ⅱオ プションにより上交の対象を数値とみなした上罅交をおこな うことを指定し、 r オフションでは上交の結果を逆順とす ることを指定します。したがって、 sort コマンドは与え られた各行の : 麪頁を数値とみなし、それらの行の順番を大 きい順になるように並べ替えます。 cat コマンドでは、 1 から始めて順番にインクリメントしながら行番号を付けま した。それを大きい順になるように並べ替えるということ は、遡頂に並べるのと同じ意味になります。 この段階での出力には、ツ頁によけいな数値カ咐いてい るはすです。最後の cut コマンドは、この数値の部分を切 り取るためのものです。ここでは、各行の 8 文字目以降を 出力するようにしています。 cat コマンドは行番号を 6 桁 て表示し、その後ろにタブを置くようなのでこのようにし ていますが、う頁のタブ文字よりも後ろがすべて出力され るのであ川よ、こオ LJ ユ外のコマンドて処理してもかまいま せん。 このガ去の優れたところは、最初に出力を得るまでか高 速だという点です。もちろん、ファイルを遡頂にするため に、整列をおこなうコマンドである sort を用いるのは明 らかにオーバースペックですし、コマンドの処理時間もそ れなりにかかります。しかし、プログラムを一から書き始 めるのにくらべ川ま、ごくま可寺間で結果を得ることができ ます。さらに、 UNIX のコマンドを流用しているため安 UNIX MAGAZINE 2003.5

5. UNIX MAGAZINE 2003年5月号

特集 SoIaris 9 の管理と運用 表 1 パックアップ・スケジュール」 曜日 日 月 火 水 木 金 土 レ・べノレ 4 9 9 4 9 9 パックアッフ。対象 月曜日に変史・作成されたファイル 火曜日に変更・作成されたファイル 火・ノ邸瞿日に変更・作成されたファイル 月・火・水・ : 料瞿日に変更・作成された ファイノレ 翁瞿日に変更・作成されたファイル 金・ . 瞿日に変更・作成されたファイル 図 3 ufsdump のオプションと引数 基本的な書式 ufsdump オプション引数ファイルシステム 例 : ufsdump Obdsf 126 6250 1500 /dev/rmt/0n オプション一 0bdsf インクリメンタル・ダンプ ( 前回のバックアッフ。以降に変 更されたファイルだけをバックアッフする ) をおこなうこ とができる。ダンプレベルは 0 ~ 9 の数値で指定し、レベ ル 0 がフルダンプ ( すべてをバックアッフ ) を未する。 その他のダンプレベルの相違は相対的な大小関係によるも 、、より小さいレベルでダンプを実行したと のだけであり、 き以降に変更されたファイル " のみをダンフ。の対象とする。 たとえば、 1 週間を 1 つのサイクルとしてレベル 4 とレベ ル 9 のダンプレベルを組み合わせた場合は、表 1 のよう なバックアップ・スケジュールか考えられる。 もちろん、バックアッフ。のスケジュールを 1 週間サイ クルにしなくてもよいし、ファイルシステムの匪質によっ ては毎日バックアップをおこなう必要もないだろう。ど のファイルシステムをどのくらいの頻度で、どのようなポ リシーでバックアップするかは、それこそケースパイケー スであり、サイトの事情に合わせて決めるしかない。唯・一 の大原則は、ユーサーの作業によって変更されるファイル システムは、できるだけ頻繁にバックアッフするというこ とであろう。バックアップにかかるコスト ( 作時憫やリ ソース ) もゼロではない以 E 、システムの全体言のなか て考慮すべきである。 それでは、 ufsdump の使い方を具一勺にみていこう。 図 3 に示したように、 ufsdump では通常の UNIX コマ ンドとは異なり、オプションとその引数を別々に指定す る。おもなオプションは以下のとおりである。 レベル : 0 ~ 9 の数字でダンプレベルを指定する ( 必オ プション ) 。 b れ : プロッキング・ファクタを指定する ( テーフテパ イスに書き出すとき以外は考慮しなくてよい ) 。 f ファイル : バックアッフ。先のファイル名 ( テーブドラ イプなどのデバイスの場合にはデバイスノード名 ) を指 UNIX MAGAZINE 2003.5 引数・ - - - 126 6250 1500 /dev/rmt/On 定する。ー ( ハイフン ) を指定すると、標準出力にバッ クアップ・アーカイプが送られる。リモートマシンの ファイルやデバイスは、、、ホスト名 : ファイル名 " とい う形式で指定する。この場合、リモートマシンとのあい だで rsh コマンドを間題なく実行できることか則提条 件となる。また、リモートファイルはすでに存在して いなけれはならない。 u . インクリメンタル・ダンプのために /etc/dumpdates ファイルを更新する。 /etc/dumpdates には、ダンフ の実行時刻とレベル、ファイルシステム名か記録され る。インクリメンタル・ダンプをおこなうときは、かな らずこのオプションを指定する。 v : 書込み完了後にべリファイ (verify : 検証 ) をおこな う。ファイルシステムをマウントした状態でこのオプ ションを指定すると、エラーが多盟ーする。 ファイルシステム : ダンフ。ヌ寸象のディスク・ . パーティショ ンをキャラクタデバイス名て指定する。あるいは、ディ レクトリ名を指定する。 実行例を図 4 に示す。これは、 / ( ルート・ファイ ルシステム ) を /export/home/backup ディレクトリに root ー dump ー 20030201. dmp という名前でダンプした例 である ( マウントしたままの状態である ) 。バックアップ 対象のファイルシステムが vfstab ファイルに書かれて いる場合は、そのファイルシステムをテパイス名 (/dev/ rdsk/c0t0d0s0) ではなく、この例のようにマウント先デ ィレクトリ名で指定することもできる。 ufsdump で作成したダンプファイルのおおまかなフォ ーマットは図 5 のようになる。ツ頁部分にダンプに含ま れるファイルのインデックスか置かれるのカ寺徴で、実行 例 ( 図 4 ) の pass I と pass Ⅱでこの部分が作成され る。ファイルシステムをマウントしたまま ufsdump を実 行した場合、このインデックスを作成して書き込んた直後 35

6. UNIX MAGAZINE 2003年5月号

特集 SoIaris 9 の管理と運用 しての整合性を保った状態でのバックアップが可能になる が、かならすしも万能というわけではない。たとえば、あ るアプリケーションに関連付けられたデータが FileA と FiIeB に分割して↑褓内される場合を考えてみよう。アプリ ケーションが FileA だけを更新した直後にスナップショ ットを ON にすると、スナップショットを用いて作成し たバックアップ・アーカイプでは、 FileA と FileB の関 連付けカれてしまう。同様に、アプリケーションが巨大 なシーケンシャル・ファイルの前半を更新している最中に スナップショットを ON にすると、そのファイルの前半 部と後半部て矛盾が発生するかもしれない。厳密なバック アップをとりたければ、以下の手順を踏む必要がある。 1. ファイル間に矛盾が生しないように、アプリケーション をいったん停止する。 2. スナップショットを ON にする。 3. アプリケーションを再開する。 しかし、スナップショットを ON にする処理は、ファイ ルシステムのバックアップと上師交してはるかに短い時間で 完了するので、このような手順を踏んでもアプリケーショ ンの停止はごく去可判ですむはすである。 なお、スナップショットを ON にした状態では、ファ イルシステムへのすべての書込みがバッキングストアにリ ダイレクトされるため、システムのパフォーマンスカイ氏下 する。また、スナップショットを ON から OFF に切り 替えたときも、バッキングストアからの書戻し作業によっ てシステムのパフォーマンス低下か起きる。さらに、ス ナップショットを ON にしたファイルシステムに大の 書込みが発生すると、バッキングストアか肥大化する。し たがって、スナップショットを用いてバックアップをと る場合も、システムの負荷か低い時間帯におこなうべきで あろう。 スナップショットを使用した場合のファイルシステム へのアクセス方法について解説する。ファイルシステム /dev/dsk/cOtOdOs6 に対してスナップショットを ON にすると、 /dev/fssnap/n ( れはスナップショット番号 ) というプロックテンヾイスと、 /dev/rfssnap/n というキャ ラクタテンヾイスか有効になる。これらのテンヾイスファイル は読出し専用であり、その内容はスナップショットを ON にした時点のファイルシステムとなる。オリジナルのテンヾ 42 イス /dev/dsk/c0t0d0s6 は、そのまま読み書き両用て使 えるが、このテンヾイスへの書込みはすべてバッキングスト アに送られる。 もちろん、バックアップはこの読出し専用のテンヾイス ファイルに対しておこなうことになる。 ufsdump を使う のなら、そのままキャラクタテンヾイス / dev / rfssn 叩 / れを ダンプすればよい。 tar では、プロックテンヾイス /dev/ fssnap/n を任意のディレクトリに読出し専用でマウント し、そこに現れたファイルツリーをバックアップする。バ ックアップか完了したら、その読出し専用ファイルシステ ムをアンマウントし、スナップショットを OFF にする。 fssnap コマンド スナップショットの缶衂には fssnap コマンドを使う。 fssnap を以下のように実行すると、スナップショット機 能が ON になる。 fssnap ー 0 [ オプション ] ファイルシステム ファイルシステム " には、スナップショットを ON に するディスク・パーティションのプロックデバイスか、そ のマウントボイントを指定する。 以下に代表的なオプションを示す。値をとるオプション は、、、機能 = 値 " という形式で指定する。また、複数のオ プションを指定する場合は、、 , " ( カンマ ) で区切って列挙 する。 backing-store= ファイル : バッキングストアとして使 用するファイルを指定する ( 必顎オプション ) 。、、ファ イル " は、スナップショットを ON にするファイルシ ステムとは異なるファイルシステムに置く必要がある。 backing-store は bs と省略してもよい。 unlink : スナップショットの準備か整ったら、バッキン グストアのファイルをアンリンクする。すなわち、バッ キングストアのファイルはディレクトリ・ツリーから参 照できす、スナップショットカ院了した点で自重加勺 に削除される。 maxsize=n : バッキングストアの最大サイズを指定す UNIX MAGAZINE 2003.5 ットが見えるプロックテンヾイスの名前を表示する。この : fssnap コマンドは、デフォルトではスナップショ ナップショットが自重加勺に OFF になる。 る。バッキングストアカ甘旨定したサイズを超えると、ス raw

7. UNIX MAGAZINE 2003年5月号

softwareupdate Mac OS X の機能の 1 つに、ソフトウェア・アップ デートがあります。これは、そのコンピュータにインス トールされているソフトウェアをつねに職万に保っため に、 Apple のサーバーに間い合わせて、必要なら職斤版 のダウンロードとインストールをおこなう機能です。同 様のイ督はみとして Windows Update があります。 グラフィカルな環竟では Software Update というア プリケーションを実行しますが、コマンドライン上で同 様のことをおこなうのが softwareupdate コマンドで す ( さきはど、 TerminaI の説明をしたときの図 19 で 実行しています ) 。 引数を付けすにこのコマンドを実行すると、図 19 の ように入手可能な最新版の一覧が出力されます。そのな かにインストールしたいものがあれば、項目名 ( 図 19 の場合は、 iP 。 d ー 1.2.1 " ) を引数に指定して実行します。 たいていは、インストール時に管理雀限が必要になる ので、このときは sudo コマンドに続けて実行すること になります。 アップデートをおこなうソフトウェアによっては、 OS の再起動が必要になります。これには、ほかの BSD 系 UNIX と同しく reboot コマンドか shutdown コマ ンドカリ用できます。 networksetup 通常の UNIX では、ネットワークに関する設定 ( ネッ トワーク・インターフェイスの有効 / 無効や IP アドレ スの設定、 DNS の設定など ) をおこなうには、いくつ かのコマンドを使い分ける必要があります。これらの設 定をまとめて操作できるのが networksetup コマンド です。 networksetup では、あるインターフェイスに里す る IP アドレスやデフォルトルータから DNS 、プロキ シー・サ→ヾーにいたるあらゆる設定をまとめて、、ネッ トワーク・サービス " と呼びます。これを有効 / 無効にし たり、新しいネットワーク・サーピスを作成したり、そ のオプションを設定することかできます。 このコマンドには数多くのオプションがあります ( し かも、省略形があまりなく、名前の長いものがかなりあ ります ) 。 -printcommands オプションを指定するとオ UNIX MAGAZINE 2003.5 20T ー CE プション一・覧が、 -help オプションを指定すると各コマ ンドの簡単な説明カ俵示されます。 たとえば、ネットワーク・サービスの一覧は次のよう にすれば得られます。 % sudO networksetup —listallnetworkservices An asterisk ( * ) denotes that a network service ' BuiIt—in Ethernet ' kyoto—wu. ac ・ JP % sudO networksetup —setsearchdomains \ とします。 DNS て検索するドメイン名は、 ' Bui1t—in Ethernet ' 10.0.0.1 10 . 0 . 0 . 2 % sudO networksetup —setdnsservers \ するには、 また、内蔵 Ethernet について DNS サーノヾーを指定 PCI Ethernet S10t 1 Bui1t—in Ethernet serial is disabled . 25 ・ http://developer.apple ・ com/ja/tools/ 開発ツールの講田は、 lnterface Builder など ) も含まれています。これらの ちろん、 Apple の統合開発ツール (Project Builder や GNU プロジェクトのものが数多く含まれています。も の C コンパイラは GCC で、その他の開発ツールも CD-ROM に収められています。 Mac OS X Server ルは、 Mac OS X Server の Developer T001S という C コンパイラや make などのプログラム開発用ツー 開発ツール で以前の設定が復活します。 アップ・ファイルの名前をもとに戻して再起動するだけ ワークにうまく接続できなくなったときなどは、バック これはなかなか便利で、設定の変更によってネット ます。 い設定内容が com.apple.preferences.xml にイ呆存され ・ apple. preferences. xml.old という名前になり、新し をこのコマンドで変更すると、上記のファイルが c 。 m preferences. xml に記録されます。さらに、設疋内容 項目は /var/db/SystemConfiguration.com/apple. 思うかもしれません。しかし、このコマンドで設定した うより /etc/resolv. conf を直接編集したほうが早いと として指定します。上の例を見て、こんなコマンドを使

8. UNIX MAGAZINE 2003年5月号

特集 SoIaris 9 の管理と運用 14 ~ 26 行目 : スナップショットで作成された読出し専 用のキャラクタテンヾイスの内容を、 ufsdump で /var /tmp/exp. home. 02ー02ー09. dmp ファイルにノヾックア ップする。 こで指定しているオプション、、 N " は、 /etc/dumpdates ファイルに書き込むファイルシス テムの名前を、引数で指定された値にの場合は / dev /rdsk/c0d0s7) で指定された値に変更するものであ る。このオフションを指定しないと、 /etc/dump- dates ファイルに読出し専用のファイルシステム / dev / rfssnap/0 のエントリが作成されてしまう。スナップシ ョットを作成したとき、 /dev/rfssnap/() というテンヾ バッチのとアップグレード 推奨バッチの適用 Solaris にかぎらす、高機能化する OS では付属ソフト ウェアのセキュリティ・ホールか次々と発見されている。 Sun は、、推奨パッチ " というかたちでセキュリティ対策 用のパッチを無償で公開しているので、すくなくともこれ だけはインストールしておくことか望ましい。とくに、イ ンターネットに直接接続しているマシンではセキュリティ 対策パッチをこまめに適用し、高いセキュリティ・レベル を保っ必要がある。 推奨パッチを含む Sun からの無賞パッチは、図 13 の Web ページからダウンロードして使用する。 個別のパッチを入手して適用してもよいが、多数のパ ッチをまとめて処理できる、、パッチクラスタ " というパッ ケージが用意されているので、これを利用するとよいだろ う。図 13 の Web ページから、 Solaris の該当するノ、 ジョン用のものをダウンロードする。 2 ~ 4 週間に 1 回の 割合で更新されているが、ファイル名などは同しである。 また、 Solaris 9 のリリース ( たとえば 12 / 02 版など ) や ハードウェア構成によっては、不要もしくは適用できない ものが含まれていることもあるが、これらはインストール 時にスキップされるのて気しなくてもよい。 パッチは ZIP 形式て配布されているので、 unzip コマ UNIX MAGAZINE 2003.5 イス名がほかのファイルシステムに対しても割り当てら れてしまうため、これは望ましい重加乍ではない。 /etc/ dumpdates ファイルには、正しい ( オリジナルの ) デ バイス名を書き込んでおくべきである。 27 ~ 28 行目 : バックアップカ冬了したので、 /export/ home のスナッフショットを OFF にする。 29 ~ 30 行目 : /etc/dumpdates ファイルの内容を石忍 する。 N オプションで指定したデバイス名、すなわち もとのテンヾイス名か書き込まれているので、インクリメ ンタル・バックアップをおこなうときも困らない。 図 13 SunSoIve Online ーフ , イル凹編無印表示 Y ) ジャンア但 ) ブッグマーグ但 ) ツー井 ( りウインドウ ) ヘルプ ( 旦 ) ま愛を蹴わ - ををに 再読み込み止 印刷 ー島 M 朝第 A 0 ホームラジオ t “叩師 OJP 検素台新 000Ad アックマーク 、ヨ SunSolve Patch Access ・第 . 、こついて一物 5 Ⅲ凵のイト 5 プの ◆、 ~ ) ) 0 を 寺製品 & サービス ↓サポト & トレーまンツ ) を 0 グインしてい SUNSOLVC ONLINE Patches ・ SU 霹ルを 、パッテ ? サポート資料 , セュリティ情報 ) 拡張検案 ? 日本サイト情報 第 5 凹 0 ミラーサイ サポートフォーラム (US) - 5un50 ⅳ・について ・お問い合わせ先 、サイトマップ 、 Fe 顴 0M0 に 釦”釦ⅳをの - Ho 飛 SUPPORTCENTER ONLINE 検耋のヘルア の シスムハンドブッ 0 は下の ? 1 ールドにパっヤ ! ら - , 。を入力して下さい 6 団 5 ド 4 : 8 ( 1 新 6 ( 5M) ~ を 6Q94 れをを、一補ⅵ ( 171M ) こを 1 ( 560 J2 53 田 2 当 1 卩 4 を 靆 5 is ~ 6 ( : 07M ) 認 SOI 製に 251 6 ( 8 ~ M ) 53 第 is ~ 6X い 64M ) 盟 5 国 isb ( 43 町 J2W56 第に 6 , ( 174 5 第は 7 0 を替の し一ティンレスムパッ キ、第た以レリテ・ ! に をするとをわれるオ′ ーティンン矛ムノ弋” し チて宿成されていま下、 お使いのし一ライング ン冫彎ムを選し、次に、 犬ウキグラユタのダつ、 いード、または純破を してください、 左記に表示されていない を一リリ、一スのクラタ パいをし・ツは、こちら を : 覧下さい グトをおいお名のお い . 愛” 5 い・、パッキグつン クをクスタ , 第ロード - ”“アヴトをお使 第当ドキュメント : 完了 ( 6672 砂 ) は毎回だいたい同しなので、慣オレしば翁め読みもできるよ のファイルに記されている。英文だが、書かれていること 目をとおしておく。もちろん、インストール去などもこ パッチに含まれる README ファイルには、かならす ンドで展開してからインストールする ( 図 14 ) 。 =patches/patch-access http://jp ・ sunsolve. sun ・ com/pub-cgi/show.pl?target うになるはすである。 45

9. UNIX MAGAZINE 2003年5月号

特集 SoIaris 9 の管理と運用 図 4 ufsdump の実彳デ列 root@blade$ ufsdump Of /export/home/backup/root-dump—20030201. dmp / DUMP : Writing 32 Ki10byte records Date of this level 0 dump: 2003 年 02 月 06 日 ( 木 ) 16 時 32 分 40 秒 DUMP : DUMP : Date of last level 0 dump: the epoch Dumping /dev/rdsk/cOtOdOsO (blade : / ) t0 /export/home/backup/root_dump-20030201. dmp. DUMP : Mapping (Pass I) [regular files] DUMP : DUMP : Mapping (Pass (l) [directories] DUMP : Estimated 4884574 blocks ( 2385.05MB ) . Dumping (Pass III) [directories] DUMP : Dumping (Pass (V) [regular files] DUMP : 4884542 blocks ( 2385.03MB) on 1 volume at 4324 KB/sec DUMP : DUMP DUMP IS DONE root@blade$ ls ー 1 /export/home/backup/r00t-dump-20030201. dmp 2500886528 2 月 6 日 16 : 42 /export/home/backup/root_dump— 1 て 00t other 20030201. dmp 図 5 ufsdump で作成したダンプファイルの形式 ディレクトリ ーインデックス リスト ダ ッ ファイル ファイル ファイル ファイル ファイル ファイル ファイル EOF にファイルの削除などの変更がおこなわれると、 ファイノレ の実体がダンプファイルに含まれないといった不整合が生 じることがある。インデックスと個々のファイルだけでな く、オリジナル・ファイルをダンプファイルにコピーして いる最中にそのファイルの大きさか変更されたり、ファイ ルの前半と後半の内容か喰い違うといった矛盾か発生する 場合もある。ただし、このような矛盾が生したときも、ダ ンプファイル本が使用不能になるわけではなく、たまた まタイミング的に不整合が生じたファイルか復元できなく なるだけである。 ufsrestore によるリストア ufsdump で作成したバックアッフ・アーカイプを読み 取るには、 ufsrestore コマンドを使う。 ufsrestore の実 行形式は ufsdump や tar と同しで、機能指定を含むオプ ションをまとめて指定し、その後ろにオプションと同し順 序で対応する引数を指定する。とくに、知寬こ指定する必 須オプションは ufsrestore の重川乍を指定するものであり、 おもに次の 4 つを使用する。 i : 対話モード アーカイプからインデックスだけを読み込み、対言乱勺に ファイルお尺しながら復道作をおこなう。 t : 覧表示 アーカイプに含まれているファイルの一覧を表示する。 r : 本のリストア アーカイプに含まれているファイル本を、カレント ワーキング・ディレクトリからの相対的なパスにリスト アする。 x : 取出し 指定されたファイルを、カレントワーキング・ディレ クトリからの相対的なパスにリストアする。 続くオプション文字は、指定された重川乍を補助するもの である。おもなものを以下に示す。 b れ : プロッキング・ファクタを指定する。 f : バックアッファーカイプ・ファイルのパス名を指定す る。ー ( ハイフン ) を指定すると、標準入力を指定したも のとみなされる ( 必頭オプションとして x または r を 指定した場合 ) 。 h : 空のディレクトリを復元する。 s れ : テーブドライプからアーカイプを読み込む際、れ個 の EOF マークを読み飛は。してからリストア動作を開 始する。 mt コマンドの fsf サプコマンドと同しである ()t コマンドについては彳あ ) v : 言田な情報を表示する。リストアしているファイルの 名称を出力する。 y : 言ムみ工ラーを無視する。工ラーとなったプロックを 読み飛ばし、彳麸をのプロックの処理を続行する。 36 UNIX MAGAZINE 2003.5

10. UNIX MAGAZINE 2003年5月号

特集 SoIaris 9 の管理と運用 図 27 luupgrade コマンドの実行 root@exp$ luupgrade -t —n S01aris9 ー 0902 ー 2003 ー 01 ー 31 -s /export/home/op/9-Recommended ( cat /export/home/op/9-Recommended/patch—order VaIidating the contents Of the media く /export/home/op/9—Recommended> . The media contains 29 software patches that can be added. Mounting the BE く S01aris9 ー 0902 ー 2003 ー 01 ー 31 >. Adding patches t0 the BE く S01a て is9 ー 0902 ー 2003 ー 01 ー 31 > . Checking installed patches . Verifying sufficient filesystem capacity (dry run method) . lnstalling patch packages ・ Patch number 112785 ー 12 has been successfully installed. See /a/var/sadm/patch/112785-12/10g for details Patch packages installed : SUNWxwf nt SUNWxw inc SUNWxwman SUNWxwp 1 t SUNWxwp 1 x SUNWxws1b SUNWxw s rv Unmounting the BE く S01aris9 ー 0902 ー 2003 ー 01 ー 31 >. The patch add t0 the BE く S01aris9 ー 0902 ー 2003 ー 01 ー 31 > completed. に、インストールに必要な情報をあらかしめファイルにま とめたものである ( 言岩田は、「 Solaris 9 インストールガイ ド」の「第 21 章カスタム JumpStart インストール」 の項を参照 ) 。アップグレード時に使用できるエントリは profile # profile keywords ある。 わすかしかない。以下は、言語パッケージを j 助日する例で value install-type ge 0 locale locale 10ca1e locale upgrade Asia j a—JP. eucJP ja_JP. UTF-8 j a—JP. PCK install-type は必須工ントリである。 locale 工ントリ には、インストールしたいロケールをすべて指定する。な お、各工ントリのキーワードと値の区切りは、、空白文字 " でなくてはならない。タブを使用すると、、、プロファイル の値か正しくない " というエラーになってしまう。 準備か整ったところで、夫行例を見てみよう。図 28 は、 solairs 9 9 / 02 リリースから Solaris 9 12 / 02 リリース へのアップグレードをおこなっている様子である ( サンプ ルの都合上、竟名は前出の例とは異なっている ) 。 CD- UNIX MAGAZINE 2003.5 ROM ドライプには、、、 Solaris 9 Software 1 of 2 " ディ スクをセットしておく。 途中で、、、 313 個のパッケージをさらにインストールし なけれはならない " という意味の WARNING メッセー ジか表示されている。これらは、 2 枚目以降の CD-ROM からインストールする。なお、 1 枚目の CD-ROM から 環境をアップグレードする作業には 1 時間近くかかるの で、気長に終了を待とう。アップグレードを中断すると環 境の整合性がとれなくなってしまうため、いったん工竟を 削除して最初からやりなおすことになる。 続けて 2 枚目の CD-ROM (Solaris 9 Software 2 of 2 ) の言もムみに進む ( 図 29 ) 。同しく luupgrade コマンド を用いてアップグレードを続けるが、指定するオプション が以下のように異なる。 luupgrade -i -n 環境名 -s OS イメージのノ、ス ー 0 "—nodisplay —noconsole" 1 枚目の CD-ROM の場合と違うのは、 -u オプションではなく -i オプションを指定する -j オプションがない付旨定しても受け付けられない ) 53