実行 - みる会図書館


検索対象: Running Linux : 導入からネットワーク構築まで
325件見つかりました。

1. Running Linux : 導入からネットワーク構築まで

5.4 X Window システム・ 377 と、 xterm は通常 80X25 のデフォルトを使用します。また、 x のオフセットの前に、 + ではなく一が付いているのがわかります。これによって、ウインドウは画面の右端 から 20 画素の位置に表示されます。同様に、—20—30 という geometry 指定 ( 7 行 目で使用されている ) は、ウインドウを画面の右端から 20 画素、画面の下端から 30 画素の位置に表示します。このようなわけで、ウインドウの配置は、使用している特 定の解像度にはそれほど影響されません。 6 行目と 7 行目の -fn オプションは、 xterm が使用するフォントを 7X15 の太字体 にするよう指定しています。コマンド xlsfonts を使用すると、システム上にあるフ オントの全リストが表示されます。 X クライアント xfontsel を使用すれば、対話方 式でフォントを選択することができます。フォントについては、あとで詳細に解説し ます。 10 行目では、簡単なアナログ時計の oclock クライアントを起動しています。 11 行目では、時間とともに変化するシステムの平均負荷 ( 実行しているプロセスの数 ) をグラフ表示する xload を起動しています。 12 行目では、未読のメールがあること を知らせてくれる xbiff を起動しています。最後に 13 行目では、穏やかな灰色の X バックグラウンドをやめて、けばけばしい darkslateblue に置き換えています ( た いしたことではありません。 X を飾り立てるには、これよりももっと楽しい方法が あります ) 。 6 ~ 13 行目で起動されている各 X クライアントが、バックグラウンドで実行され ることに気付くはずです ( それは、各行の最後にアンパサンドが付いているからです ) 。 各クライアントをバックグラウンドで実行するのを忘れると、それが終わるまで待っ てから ( 通常は、ログアウトしたあと ) 、次の xterm を実行するといった操作を繰り 返さなければなりません。アンパサンドを付けると、各クライアントを並行して起動 することができます。 こでは、多くの Linux システム上で それでは、 16 行目はどうなのでしようか。 使用されるウインドウマネージャ fvwm を起動しています。前にも触れたように、 ウインドウマネージャはウインドウを飾り立て、それらをマウスで操作できるように するといった役目を果たします。とはいえ、それは次のコマンドで起動されています。 exec fvwm

2. Running Linux : 導入からネットワーク構築まで

4.3 システムスタートアップと初期設定・ 177 る汎用のプログラムです。たとえば、それぞれの仮想コンソール上では、 getty プロ セスが init によって開始されます。仮想コンソールの 1 つでログインセッションを 抜けると、 getty プロセスが終了し、 init は新しいプロセスを開始します。これによ って、再びログインできるようになるのです。 システムがプートするとき、 init はまた数多くのプログラムやスクリプトを実行す る役目を果たします。 init が行うことのすべては、ファイル /etc/inittab によって 制御されます。このファイルの中の各行は、次のようなフォーマットで書かれていま す。 co . ・〃比な . ・〃 ct わ . ・ co 川襯の 2 00 虎は 1 文字ないし 2 文字のユニークなコードで、このファイルの中でエントリ ーを識別するために使用されます。ェントリーのいくつかは、正しく動作するために 特定のコードを持たなければいけません。これについてはあとで詳細に解説します。 夜扈 s は、このエントリーが実行されるべきランレベルのリストです。 init に 関するかぎり、ランレベルは現在のシステム状態を指定する数または文字です。たと えば、システムのランレベルが 3 に変更されたとき、ランレベルフィールドに 3 が含 まれている、 /etc/inittab 中のすべてのエントリーが実行されます。ランレベルは、 /etc/inittab 中のエントリーをグループ化するのに役に立つ方法です。たとえば、 ランレベル 1 はごく最小限の構成スクリプトだけを実行し、ランレベル 2 はランレベ ル 1 のすべてとネットワーク構成を実行し、ランレベル 3 はレベル 1 と 2 のすべてと ダイアルアップのログインアクセスを実行する、などです。 ほとんどの場合、自分の手でランレベルを指定する必要はありません。システムが プートするとき、デフォルトのランレベル (/etc/inittab の中で設定されているよ うに ) に入ります。ほとんどのシステムでは、この時のランレベルは 5 です。 述べた構成スクリプトのすべてを実行しないでシステムを立ち上げるような特別な必 要がある場合を除き、デフォルトのランレベルをいつも使用してください。 00 川川のフィールドは、 init がこのエントリーのために実行するコマンドです。 〃フィールドは、このエントリーを処理する方法を init に伝えます。たとえ ば、与えられたコマンドを一度実行するか、コマンドが終了したときはいつも再起動 するかなどです。

3. Running Linux : 導入からネットワーク構築まで

6.7 papaya$ gdb pgmseq 254 gdb によるデバッグ・ 5 1 7 いったん gdb が実行中のプロセスにアタッチしたなら、そのプログラムを一時的 に中断し、 gdb コマンドを発行することができます。あるいは、 (break コマンドや watch コマンドを使用して ) プレークポイントやウォッチボイントをセットして、 プレークポイントに引っかかるまで、 continue コマンドを使用してプログラムを実 行し続けることができます。 detach コマンドは、 gdb を実行中のプロセスからデタッチします。そうすれば、 必要に応じて、別のプロセスに対して再び attach を使用することができます。バグ をみつけたときは、現在のプロセスをデタッチし、ソースを変更して再コンパイルし たあと、 file コマンドを使用して、 gdb に新しい実行可能ファイルをロードすること ができます。これで、プログラムの新しいバージョンを起動し、それをデバッグする ために attach コマンドを使用することができます。これらすべてのことを gdb から 抜けることなしにできます。 実際、 g 曲を使用すれば、並行して 3 つのプログラムをデバッグすることもできま す。その 3 っとは、 gdb の下で直接実行させているプログラム、コアファイルを使用 して追跡しているプログラム、独立したプロセスとして実行中のプログラムです。 tar - get コマンドを使用して、デバッグしたいプログラムを選択することができます。 6.7.4 データの変更と検査 プログラム中の変数の値を検査するには、 print 、 x 、 ptype コマンドが使用でき ます。 print コマンドは、もっともよく使用されるデータ検査コマンドです。それは、 引数としてソース言語 ( 通常、 C または C 十十 ) で書いた式をとり、その値を返しま す。たとえば、以下のようにします。 (gdb) print mydisplay $ IO (struct _XDisplay * ) Ox9c800 (gdb) そうすると、変数 mydisplay の値とその型を表示します。この変数はポインタな ので、 C のようにポインタを逆に参照することによって、その内容を調べることがで きます。

4. Running Linux : 導入からネットワーク構築まで

4.15 cron を吏用してジョブをスケジューリングする・ 279 か。 UNIX システムには、このような自動化処理を行うために cron があります。 簡単に言うと、 crontab コマンドを実行し、 cron が認識する特別な書式の行を入 力することによって、 cron を使用します。各行には、実行させるコマンドと実行時 刻を指定します。 背後で crontab は、 /usr/spool/cron/crontabs ディレクトリにあなたのユーザ 名を付けたファイルを作成し、それにあなたが人力したコマンドを保存します ( たと えば、私の crontab ファイルは、 /usr/spool/cron/crontabs/mdw という名前に なります ) 注 20 。 crond と呼ばれるデーモンが、定期的にこのファイルを読み、適当な 時刻にコマンドを実行します。システムがプートするとき、システム上の rc ファイ ルの 1 つが crond を起動します。 cron という名前のコマンドが実際にあるわけでは ありません。あるのは、 crontab ユーティリティと crond デーモンだけです。 いくつかのシステムでは、 cron を使用できるのは root ユーザに限られています。 いずれの場合にせよ、 root として実行させたい有用なコマンドを見て、それを cron - tab 工ントリーとして指定する方法を示しましよう。 /tmp ディレクトリから古いフ ァイルを毎日除去したいものと仮定してください。このディレクトリは、たくさんの ューティリティによって作成されるファイルを貯めておくための一時記憶として使用 されているものです。 システムがリプートするとき、ほとんどのシステムは /tmp の内容を削除します。 しかし、それを長期間保存しておくなら、古いファイル ( たとえば、過去の 3 日間に アクセスされなかったファイル ) をチェックして、それらを削除するために cron を 使用すると便利です。入力したいコマンドは以下のとおりです。 rm —f . / の 2 〃〃 2 に しかし、どのようにすれば、指定すべきファイル名がわかるのでしようか。それに は、このコマンドを find コマンドの内側に置かねばいけません。 find はあるディレ クトリの下にあるすべてのファイルをリストし、その各々に対して指定した操作を実 行します。 注 20 最近のシステムでは、 /usr/spool ではなく /var/spool に置くのが一般的になっています ( 訳 注 ) 。

5. Running Linux : 導入からネットワーク構築まで

254 ・ 4 章システム運用の基本 ルがあたかも与えられたディレクトリにあるかのように見え、ファイルにアクセスす ることができます。 これを行うには mount コマンドが使用されますが、通常それは root として実行 しなければいけません ( あとで見るように、 /etc/fstab ファイルにリストされてい るデバイスに対しては、普通のユーザでも mount を使用することができます ) 。この コマンドのフォーマットは、次のとおりです。 mount -t な力に元に川 0 ″〃 / ー加加 / こで、な加は表 4 ー 1 で与えられたファイルシステムのタイプ名、夜 . ) はファイ ルシステムが存在する物理的なデバイス ( / dev の中のデバイスファイル ) 、襯砒厩ー 加加 / はファイルシステムをマウントするディレクトリです。 mount を実行する前に、 そのディレクトリを作成しなければいけません。 たとえば、パーティション /dev/hda3 上に第 2 拡張ファイルシステムがあり、そ れをディレクトリ /mnt にマウントしたいときは、次のコマンドを使用します。 mount -t ext2 /dev/hda2 /mnt すべてが順調にいったなら、 /mnt の下でそのファイルシステムにアクセスするこ とができるはずです。 同様に、フロッピー上にあるファイルシステムをマウントするには、次のコマンド を使用します。 mount -t msdos /dev/fdO /mnt これによって、 /mnt の下で MS-DOS フォーマットのフロッピー上にあるファイ ルを利用することができます。 mount コマンドには多くのオプションがあり、それらは一 0 スイッチを使用して指 定することができます。たとえば、 MS-DOS 、 ISO 9660 そして HPFS ファイルシ ステムは、テキストファイルの MS-DOS フォーマット ( 各行の終りに CR 十 LF を 含む ) から UN Ⅸフォーマット ( 各行の終りに改行だけを含む ) への自動変換をサ ポートしています。コマンドは次のように使用します。

6. Running Linux : 導入からネットワーク構築まで

520 ・ 6 章 Linux におけるプログラミング Ox9de70 く end 十 55576 〉 : (g db ) "Linux" 各行の最初のフィールドには、そのデータの絶対アドレスが表示されます。 2 番目 のフィールドには、くシンポル ( この場合は _end) 十バイトオフセット〉の形をしたア ドレスが表示されます。残りのフィールドには、そのアドレスにあるメモリの実際の 値が 10 進数と ASCII 文字で表示されます。先に述べたように、 x にほかのフォーマ ットでデータを印刷するように命じることができます。 6.7.5 プログラムの実行状態を見る info コマンドは、デバッグ中のプログラムの状態に関する情報を提供します。 info には、多くのサプコマンドがあります。それらをすべて見るには、 help info を使用 してください。たとえば、 info program はプログラムの実行状態を表示します。 (gdb) inf0 program Using the running image Of child process 158. Program stopped at Ox9e. 工 t stopped at breakpoint 1. (g db ) もう 1 つの役に立つコマンドは infO locals で、 てのローカル変数の名前と値を表示します。 (gdb) ⅲ { 0 locals (struct { … } * ) Ox2000 lmmage (struct { … } * ) Ox8000 outimage (g db ) これは現在の関数の中にあるすべ これは変数のかなり雑な記述です。 print コマンドや x コマンドを使用できれば、 これらをさらに詳細に表示することができます。 同様に、 info variables は、プログラム中のすべての既知変数をソースファイル 順にリストアップします。表示された変数の多くは、実際のプログラム以外のソース からきたものであるという点に注意してください。たとえば、ライプラリのコードの これらの変数の値は表示され このリストは実行可能ファイル のシンポルテープルから直接抜き出されたものなので、 中で使用されている変数の名前などが表示されます。

7. Running Linux : 導入からネットワーク構築まで

7.2 World Wide Web ・ 615 えなければいけません。これは、れ ttpd 設定用ディレクトリの中にある mime. types このファイルは次のような行を含みます。 gif 」 peg 」 pg JPe au snd al eps PS html txt text/plain text/html application/postscript audio/basic image/jpeg image/gif ファイルによって処理されます。 DefauItType text/plain のように使用します。 これが、 srm. conf ファイルの中で使用される DefaultType 指令の目的です。次 グラムを指定できるオプションがあります。 NCSA Mosaic には、特定のタイプのドキュメントを処理するために実行するプロ 個々の MIME タイプがどのように扱われるかは、 Web クライアントに任されます。 して表示されます。 postscript ドキュメントは、ほとんどの UNIX システム上で、 Ghostview を使用 ては、 Mosaic は xv などの別の画像ビューワを実行します。同様に、 application/ それをドキュメントウインドウの中に表示します。 image/gif ドキュメントに対し メントに対しては、 NCSA Mosaic は単に HTML ソーステキストをフォーマットし、 うにして、クライアントはそのドキュメントの扱い方を知ります。 text/html ドキュ バから、そのドキュメントに関連した MIME タイプに関する情報も得ます。このよ クライアント ( たとえば、 NCSA Mosaic) がドキュメントを検索するとき、サー て扱われます。 す。この場合、 . gif で終わるファイル名は、 image/gif タイプのドキュメントとし 残りのフィールドは、各 MIME タイプに対応するファイル名拡張子を示していま 格です。 の印刷可能な ASCII テキスト以外のデータを含むドキュメントを転送するための規 測されるように、これはもともと電子メール用に開発されたものです。それは、普通 ます。 MIME は「 Multipurpose lnternet Mail Extensions 」の略です。名前から推 各行の最初のフィールドは、当該ドキュメントに対する MIME タイプ名を定義し

8. Running Linux : 導入からネットワーク構築まで

4.10 新しし功ーネルを構築する・ 239 るいは必要としないデバイスドライバを取り除いて現在のカーネルを整えるかのいず れかのためです。 カーネルを構築するには 6 つのステップがあり、それらはとても簡単です。これら すべてのステップは、以下のページでさらに詳細に解説します。 1. 2. 3. 4. 5. 6. make config を実行します。これは、組み込みたいドライバに関するさまざま な種類の疑問をあなたに尋ねます。 make dep を実行します。これは、各ソースファイルの付属物を集めて、さま ざまな種類の MakefiIe にそれらを含めるためのものです。 すでにこのソースツリーからカーネルを構築している場合は、古いオプジェクト ファイルのすべてをクリアして、完全な再構築を強行するために、 make clean を実行します。 make zlmage を実行して、カーネル自体を構築します。 コーヒーでも飲んでいてください ( マシンの速度や利用可能メモリの量によって は、 2 杯くらい飲む時間がかかります ) 。 新しいカーネルイメージをプートフロッピー上にインストールするか、 LILO を 実行してください。 LILO を使用する場合は make Z1i10 を実行します。 どこからでもできるステップ 5 を除いて、これらすべてのコマンドは /usr/src /linux から実行します。 カーネルソースには README ファイルが含まれており、 /usr/src/linux/README として置かれるべきものです。 これを読んでください。 これはシステム上に ば y または n (Enter キーが続く ) を押して答えてください。質問のすべてに、 yes/ 各質問に対しては、デフォルトを選択するならば Enter キーを押し、さもなけれ れるようないくつかのプロンプトが表示されます。 るものとは一致していないかもしれません。 make config を実行すると、下に示さ デフォルトがありますが、慎重に対処してください。デフォルトはあなたが望んでい るドライバに関して yes/no 形式の質問を行うスクリプトを実行します。各質問には 最初のステップは、 make config を実行することです。これは、カーネルに含め 必ずそこに述べられているステップにしたがってください。 ここで示した情報よりも新しいかもしれません。ガイドとして下の記述を使用して、 これには、カーネルのコンパイルに関する最新のノートが含まれています。それは、

9. Running Linux : 導入からネットワーク構築まで

図 4 ー 1 cron 工ントリーの例 コマンドが実行される日 ここでは 1 5 日 4.15 cron を吏用してジョブをスケジューリングする・ 281 コマンドが実行される曜日 こでは日曜日 0 2 15 jan,jul sun sh てれ c て on コマンドが実行される時間 こでは午前 2 時 コマンドが実行される月 ここでは 1 月と 7 月 実行するコマンドを指定 ですから、これは現実的な例とは言えません。 ます。その場合は、最初の 2 個のフィールドはそのままにしますが、 3 番目のフィー ドをいじってみましよう。毎月の最初の日にだけ、コマンドを実行させたいと仮定し 時間フィールドではいろいろとおもしろいことができるので、もう少しこのコマン 0 1 * * * find /tmp -atime 5 -exec rm -f { } \ ; なります。 るアスタリスク ( * ) にします。この場合、 crontab に書く完全な行は次のように ください。ほかの 3 個のフィールドは、与えられた時間における毎日と毎月を意味す コマンドを毎日午前 1 時に走らせたいときは、〃 2 加厩にに O 、加 " に 1 を指定して 目のフィールドに 1 または mon を指定します。 毎週月曜日に実行したいときは、 3 番目のフィールドをアスタリスクに戻し、 5 番 0 1 1 * * find /tmp -atime 5 -exec rm -f { } \ ; ルドは 1 にします。 0 1 * * mon find /tmp コンマで区切ると、毎月の 1 日目と 15 日目に実行されます。 もう少し高度な方法として、各フィールドに複数の時間を指定する方法があります。 ¯atime 5 —exec

10. Running Linux : 導入からネットワーク構築まで

146 ・ 3 章基本的な IJN Ⅸコマンドと概念 せん。それはあまり難しくないので心配することはありません。典型的なモードは使 用許可 ( オーナー、グループ、他人 ) の 3 つのレベルに対応する 3 個の文字から成り ます。これらのレベルは、図 3 ー 3 に示されています。各レベルの範囲内には、読出し、 書込み、実行許可に対応した 3 ビットがあります。 図 3 ー 3 絶対モードのビット グループ 他人 読込み書込み 実行 1 00 読込み書込み実行 読込み書込み実行 400 200 40 20 4 2 1 自分には読出し許可を与え、ほかには一切使用許可を与えたくないとしましよう。 と、この場合のコマンドは次のようになります。 なければなりません。たとえば、 400 十 100 は 500 といった具合に。そのようにする 読出しと実行許可をすべての人に与えるには、読出しビットと実行ビットを合計し く同じです。等号は右側に書いてあるものだけを割り当て、ほかは削除します ) 。 =r のファイルモードとまった のと同じです ( 正確には、前に触れてはいませんが、 これは、書込みと実行許可を同時に削除することを除けば、モード + r を使用した $ chmod 444 header れらすべてを足し合わせると、コマンドは次のようになります。 します。つまり、自分に対する 400 、グループに対する 40 、他人に対する 4 です。 読出し許可をすべての人に与えるには、それに対応するビットを各レベルから選択 $ chmod 400 header コマンドは、次のようになります。 つまり、 400 という数で表されるビットだけを指定したいのです。そのときの chmod