株式会社三菱総合研究所
久保田 広

 

0.基本方針

・標準的、「生に近い」UNIXを対象
 UNIXは、容易に拡張可能だが、(OS、ベンダ、第三者によって、「便利な」拡張がされている)それしか使えないと、他の環境に移行できない。

・一般的な講義、演習を通して実機との差を吸収
 特定の機種に依存した内容を、一般的な事項と思いこんではいては、他の情報ソースからの情報が、正しく伝わらない。(建て前)
 特定の機種でどう異なっているかを、いちいち確認していない。(言い訳)

・講師は、UNIXの初心者ではないが、講義の初心者である。(これも言い訳)
 重要な説明を、「知っていて当然」と省いてしまうかもしれません。
 →わからないことは、なるべく早めに質問してください。

・演習問題は一応設定してあるが、難易度が不明。網羅度も疑問。
 →自分が理解できていないと思ったら、別の問題を要求してください。



1.基本操作

1.1 X window

(1)起動方法
 ・ xdm によるもの
   login すると直ちにX windowが利用可能(今回は、扱わない)

 ・xinit によるもの
   login 後、xiniti コマンドを起動

   xinit コマンドの起動法:           

 →(特に何も設定していないと)ウィンドウが1つ開いた状態になる。

(2)終了方法
 ←最初に開いていたウィンドウを終了すれば、X windowも終了
   ←ウィンドウ上で、exit コマンドを実行すれば、そのウィンドウが終了

(3)ウィンドウマネージャ
 ウィンドウの移動、リサイズ、レイズを行うためには、ウィンドウマネージャが必要。

・ウィンドウマネージャの例
  twm, mwm, fvwm (今回は、twm を使う)

・起動方法
 通常は、初期化ファイル(.xinitrc )で起動するが、ウィンドウから、コマンドを起動してもよい。

   twm コマンドの起動法:        

・終了方法
 メニュー操作で終了してもよい。普通は、X windowごと終了してしまう。

(4)ターミナルウィンドウ、シェルウィンドウ
 UNIXのコマンドを実行するためのウィンドウ。普通のターミナルのような機能なので、ターミナルウィンドウと呼ばれたり、UNIX のシェルというプログラムが実行されるため、シェルウィンドウなどと呼ばれることもある。もっと端的には、ウィンドウを生成するプログラム名である、kterm 、xterm と呼ばれることも多い。

・生成方法
 twm の設定ファイルを書けば、マウスの操作で起動できるが、ウィンドウから、kterm/xterm コマンドを起動してもよい。

   kterm コマンドの起動法:          
・終了方法
 kterm/xterm 上で、exit コマンドを実行する。


[演習問題]
・シェルウィンドウを10個同時に開いてみなさい。
・ウィンドウの移動、リサイズ、アイコン化、非アイコン化、レイズの操作を練習しなさい。
  リサイズの操作法:           
  アイコン化の操作法:          
  非アイコン化の操作方法:        
  レイズの操作方法:           


(5)コピーアンドペースト
 kterm/xterm のウィンドウ間では、文字列のコピーアンドペーストが可能。

 コピーの操作方法:
 ペースト:

 注意:長くて折り返している行をコピーすると、2行に分かれてしまう。

(6)スクロールバー、漢字コード、リセット
 kterm/xterm のメニューから、
  ・スクロールバーのオン/オフ
  ・漢字コードの切り替え
  ・ソフト/ハードリセットなどが可能

[演習問題]
・~/xxx/ex/file1 という日本語ファイル(JISコード)が用意されているので、この中身を、kterm の操作および cat コマンドだけで、EUCコードおよびSJISコードに変換しなさい。

※cat コマンドについてのヒント
・cat file名
 で、ファイルの中身を表示できます。
・cat > file名
 [いろいろな入力]
 C-D (コントロール+D)
 で、[いろいろな入力]を内容とするファイル(file名)を作成できます。

※解法についてのヒント
 (口頭で説明します)


1.2 shell
 コマンドを受け付け、実行するプログラムは shell と呼ばれる。shell にもいくつかの種類がある。
(1)shell の種類
 標準的なもの:sh, csh
 非標準だが人気のあるもの:ksh, bash, tcsh
 (今回は、csh を取り上げる)

 大きく2系統
   sh 系:sh, ksh, bash
  csh系:csh, tcsh

(2)PATH
・shell は、コマンドを受けたとき、PATHを参照して、実行すべきコマンドを見つける。

 例えば、PATH=/usr/bin:/usr/ucb:/bin であったとき、ls コマンドを受け付けると、
   最初に、/usr/bin/ls というコマンドがあるかどうか探す、あれば実行する。
   なければ、/usr/ucb/lib というコマンドがあるかどうか探す、あれば実行する。
   なければ、(以下同様)

・PATHに /usr/local/bin を含めておけば、/usr/local/bin/nkf は、"nkf" という入力を受け付けてくれるようになる。

・PATHの設定
  set path=(/usr/bin /usr/ucb/bin /bin)

・PATHの確認
  echo $path

・PATHについての非常に重要な注意事項
 .(ピリオド=カレントディレクトリの意味)をパスの先頭に含めてはいけない!!!

(3)alias
・よく利用するコマンドは、alias を使って短く再定義しておくと便利。

 例えば、alias ls "ls -l" と指定しておくと、ls と入力しても、shell が ls -l に置き換えて実行してくれる。

・よく使われる alias の例
  alias h history
  alias mv 'mv -i'
  alias rm "rm -i"
  alias cp cp -i

・こういうalias を好む人もいるという例
  alias cd 'cd \!* && set prompt="{`pwd`} "'

(4)変数
・変数に値を代入して、あとから参照することができる。

  例えば、set ipa="http://www.ipa.go.jp/" としておいて、Mosaic $ipa と実行すると、IPAのホームディレクトリが参照できる。

・通常の変数は、シェルスクリプトを書く場合以外、大した使い道はない。重要なのは、いくつかの特殊変数/シェル変数/組み込み変数と呼ばれる物で、特別な解釈がされる。以下のような物がある。

  path
  prompt
  history
  noclobber
  ignoreeof
  filec

・unset xxxx コマンドで、変数が未定義の状態に戻る。

[演習問題]
・set prompt='{!} ' を実行してみて、何が起こるか理解しなさい。
・set history=5、history、unset history、history を順に実行して、何が起こるか理解しなさい。
・前述 alias cd 'cd \!* && set prompt="{`pwd`} "' を実行後、cd /tmp、cd、cd / 等を実行して、何が起こるか理解しなさい。
・history で表示される最初のコマンドを、もう一回手際よく実行する方法を考えなさい。

(5)環境変数
・コマンドによっては、環境変数を参照して、動作を変える物がある。そのようなコマンドの動作を調整するために、shell で、環境変数を設定する。

 例:setenv http_proxy http://proxy.or.jp:8080/
   Mosaic http://hogehoge.co.jp/
    (Mosaic は、proxy 経由の接続を試みるようになる)

・unsetenv xxxx コマンドで、環境変数が未定義の状態に戻る。


[演習問題]
 ・環境変数 LANG を、未定義、japanese、にしたとき、それぞれ、date、man ls コマンドの出力がどう変わるかを確かめなさい。


(6)コマンドの終了、中断
・実行中のコマンドは、「通常」割り込みキーで強制終了できる。
 割り込みキ−は、BSD系のOSの場合 Control+C 、SVR4系のOSの場合、Delete キーになっていることが多い。

・実行中のコマンドは、「通常」中断キーで、途中で実行を一時停止することができる。
 中断キーは、Control-Z キーになっていることが多い。

・中断されたコマンドは、jobs コマンドで、一覧できる。

・中断されたコマンドは、fg コマンドで、実行を再開できる。

[演習問題]
・sleep 10 コマンドを実行後、速やかに、割り込み/中断キーを押してみなさい。
 キーの機能が確認できるまで、何回も繰り返しなさい。
・vi コマンドを実行後、(こちらは速やかでなくてもよい)、割り込み/中断キーを押してみなさい。
・中断したコマンドは、いくつあるか確認しなさい。
・中断したコマンドの、番号が大きい順に、再実行してみなさい。
 (ただし、vi は、正しい手順で中断すること)


1.3 コマンド

(1)コマンドの一般型
・UNIX のコマンドは、

    commndname [-option] [-option optonarg] arg arg ...

 となっていることが多い。(例外も多い)

  ex.
   ls -lrt
   fold -5 file
   sed -e 's/abc/ABC/' -e 's/xyz/XYZ/' file

・オプションを示す文字は、通常マイナス記号を用いるが、コマンドによっては、+記号を用いることもある。

・どんなオプションがあるかを知るには、man コマンドを利用する。

・どんなコマンドがあるかを知るためにも、man コマンド(man -k)が使える場合もある。
 ※ man -k コマンドを使うようにするには、そのための設定および、ディスク容量が必要。非常に便利なので、使えるようにしておくとよい。


[演習問題]
・ls -lrt コマンドが何をするコマンドか調べなさい。
・man コマンドを駆使して、man -k コマンドが使えるようにするためのコマンドを探し出しなさい。
・実際に演習用のマシンで、man -k が使えるようにしなさい。
・domain 名を設定するコマンドを見つけなさい。



2.ファイルシステム

2.1 ファイルの指定の仕方

・唯一絶対的に指定する場合は、「絶対パス名」で指定する。
 例:/usr/local/bin/nkf

・カレントディレクトリを基準に、「相対パス名」で指定もできる。
 例:
  ./a.out
  ../a.out
  ../../home/dir/a.out
  sub/a.out

・複数のファイルを指定するのに、ワイルドカードを使うことができる。
  例:*.c(a.c、b.c、c.c 等をすべて指定したことになる。)
    *(カレントディレクトリ中のすべてのファイルを指定したことになる)
    a*(a.c、a.out、aliases 等をすべて指定したことになる。)
    a?c(a.c、abc、等を指定したことになる。)

・ユーザ xxxx のホームディレクトリは、~xxxx で指定。
  例:~xxxx/ex/file1

[演習問題]
・次のディレクトリ構造があるとき、(a)から(i)の中の相対パス名は絶対パス名に、絶対パス名は相対パス名にそれぞれ直しなさい。ただし、カレントディレクトリは、current にあるものとする。

  /---usr---etc---X
   |   |
   |   +-current---etc---X
   |   |     |
   |   |     +-X
   |   +-X
   |
   +-etc---X
   |
   +-X

 (a) /usr/X  (b) /usr/current/etc/X (c) /X  (d) /usr/etc/X
 (c) ../X   (f) ../etc/X (g) ../../../etc/X (h) ../../current/X
 (i) ../../etc/../X

・カレントディレクトリに次のファイルを作り、以下のそれぞれのワイルドカードによってどれとどれが選択されるか、確かめなさい。
 (ファイルを作る=touch コマンド、ワイルドカードで選択されるファイルの確認=
  echo コマンド)

 ファイル   :a.c abc a.out .a.c a.cc ab.c
 ワイルドカード:*.c a* *a* *c ?.c ??? ???? ?.c

・/usr/include ディレクトリの下に、ヘッダファイル(.hで終わるファイル)は、いくつあるか?
 さらに、その内 std という文字列を含む物はいくつあるか。



2.2 ファイルの中身を見る
・基本は、cat コマンド
  使用例:cat ~xxx/ex/file1
     cat -v ~xxx/ex/file1
     cat -n ~xxx/ex/file1

 ※生の cat コマンドでファイルの中身を見る人はほとんどいない。


[演習問題]
・上の cat コマンドを実行してみなさい。


・大きなファイは、more コマンド
  使用例:more file

[演習問題]
・more コマンドの実行中に使用できるキーには、何があるか ? キーを押してみて調べなさい。
 (ex. more /usr/lib/sendmail.cf / more /usr/ucblib/sendmail.cf )
  半ページスクロール          
  1ページスクロール          
  文字列の検索             

・ファイルの先頭だけ見たい/最後だけ見たい/途中から見たい
  使用例:
  head file
  head -20 file
  tail file
  tail -20 file
  tail +20 file

・ファイルの中から特定の文字を探す。
  使用例
  grep pattern file
  grep -n pattern file
  grep pattern *

[演習問題]
・/usr/include というディレクトリの下に、"size_t" という文字列を含むファイルは、いくつあるか?
・/etc ディレクトリの下に、ユーザのログイン名を登録しているファイルがある。それは、何という名前か?


2.3 ファイルのコピー、リネーム、移動
・ファイルのコピーは、cp コマンドを用いる。
 使用例:
  cp filea fileb
  cp filea directoryX
  cp filea fileb filec directoryX
  cp -r directoryX directoryY

・ファイルの名称を変えるには、mv コマンドを用いる。
  mv filea fileb
  mv directorya directoryb

・ファイルの移動にも、mv コマンドを用いる。
  mv filea directoryX
  mv directoryX/filea .

[演習問題]
・カレントディレクトリ以下が、次の構成の時、以下のコマンド(a)〜(n)は、何を行うか?

  current/---dir.a/---a.c
       |    |
       |    +-b.c
       |
       +-dir.b/---a.c
       |
       +-dir.c/---b.c
       |
       +-a.c
       |
       +-b.c
  (a) cp a.c x.c   (b) cp a.c b.c  (c) cp b.c dir.b/x.c
  (d) cp a.c dira   (e) cp *.c *.x  (f) cp -r dir.a dir.b
  (g) cp -r dir.a dir.x
  (h) mv a.c dir.a  (i) mv dir.a/b.c dirb (j) mv dir.a dir.b
  (k) mv a.c b.c   (l) mv *.c *.x     (n) mv *.c dir.b


2.4 ファイルを探す

・findコマンドは、ディレクトリ階層を下に降りていき、様々なファイルを探し出す。
 コマンドの一般型は、
  find [検索対象のトップディレクトリ]  [ 何を探すか] [見つかったら何をするか]

 例:
  find /usr -name ls -print
  find /usr -name ls -exec ls -l {} \;
  find /tmp -owner root -print
  find ~ -mtime +100 -exec rm {} \;

[演習問題]
・/usr/include 以下のディレクトリにあるファイルで、"flock" という文字を含んでいるファイルを見つけなさい。
・/usr/include 以下のディレクトリにあるファイルで、サイズが最大の物はなにか?
・/var 以下のディレクトリにあるファイルで、本日更新されているファイルを探しなさい。


2.5 正規表現

・grep コマンドの検索パターンには、「正規表現」という不確定なパターンを指定できる。
 ※正規表現をワイルドカードと混同してはいけない。

 例:
  .(ピリオド):任意の一文字とマッ
  [abc]:abc のどれか一文字とマッチ
  [a-c]:[abc]に同じ
  [^abc]:abc 以外の文字にマッチ
  X*:Xの0文字以上にマッチ(Xは、ピリオドや[xyz]でもよい)
  ^X:Xが行頭にあるときのみマッチ
  X$:Xが行末にあるときのみマッチ

・正規表現の完全な記述については、man grep、man ed、man sed 等を探すと見つかる。
man -k regular 等でも見つかるであろう。

[演習問題]
・正規表現の完全な記述をしているman の説明を見つけなさい。
・以下の正規表現(a)〜(e)にマッチするのは、(A)〜(E)のどの行か?
  (a) a.c        (A) The file is a.c
  (b) a.*c        (B) ac is not abc
  (c) a*c        (C) a girl is crying
  (d) ^[abc]*      (D) aabbccddee
  (e) ^[^abc]*[efg]$   (E) good morning
・カレントディレクトリに、自分が受け取った電子メールが1通1ファイルの形式で、多数ためられていると仮定する。以下の物を探し出す、grep コマンドを考えなさい。
 (a) akinotano 宛のメール
 (b) mri の kubota が書いたメール
 (c) mri の kubota または gniibe が書いたメール
 (d)去年の10月から12月の間に出されたメール


2.6 コマンドの結果をファイルにとる

(1)単独のコマンドの結果をファイルにとる

・command > file と実行すると、コマンドの結果が、file にとられる。
 例:
   ls -lR /usr/include > file1
   grep pattern * > /tmp/file

・command >> file とすると、コマンドの結果が、file に追加される。

・shell 変数 noclobber をセットしておくと、フィルの上書き防止が可能。

・noclobber をセットしている場合でも、>! と指定すれば、上書き可能。

[演習問題]
・noclobber がセットされている/いない場合に、>、>>、>!、>>! の機能が有効かどうか、有効でないときは、どのようなメッセージが出るか確認しなさい。


(2)入出力すべてをファイルにとる
・script file と実行すると、新たな shell が起動され、その shell が終了するまで(exit コマンドを入力するまで)の記録が、file に記録される。

[演習問題]
・script コマンドを実行してみなさい。
・script コマンドで記録されたファイルの中身を、cat -v コマンドで確認しなさい。

(3)コマンドの結果をコマンドで処理する。
・command1 | command2 と実行すると、
 command1 > file1; command2 file1 と同じ機能を果たすことが非常に多い。

[演習問題]
・/usr/include ディレクトリの下で、ファイルサイズの下一桁が9byteであるような物を見つけなさい。
・file の10行目から20行目までを表示するためのコマンドを考えなさい。



2.7 エディタ

(1)vi

・システム管理者は、vi が使えるべきである。(という人が多い)

・vi file で起動。

・次のコマンドだけ覚えておけば、何とか使える。
  j k h l i a o ESC u
  :q :q! :w :vi

・これだけは覚えておこう
  +間違ったら u
  +モードがわからなくなったら ESC
  +やめたくなったら :q!
  +ex モードになってしいまったら vi

・慣れないうちは、
  +大切なファイルは、cp をとってから修正
  +変なところを修正していないか、diff コマンドで確認

[演習問題]
・vi を使って、上のコマンドを一通り練習しなさい。

(2)emacs
・とにかく高機能。使い込めば、手放せなくなる。すべての機能を知り尽くすことは不可能。

・emacs の仲間
 +emacs :元祖のemacs英語だけに対応
 +nemacs:日本語化された emacs
 +mule :多国語化された emacs (現在の主流)

・emacs file で起動

・次のコマンドだけ覚えておけば、使える。
   C-b C-f C-p C-n
   C-xC-c C-g

・これだけは覚えておこう
 +M-何とか と書いてあったら ESCを押してから「何とか」という意味

・チュートリアル
 +M-x help-with-turotial で使い方を教えてくれる。
 +M-x help-with-turorial-for-mule というのもある。

[演習問題]
・チュートリアルを実行してみなさい。



3.ユーザ管理

3.1 アカウントの追加削除

(1)ユーザの追加
・useradd (adduser)を実行することにより、ユーザのアカウントを作ることができる。

・ユーザの追加手順
 +/etc/passwd ファイルにエントリを追加
 +/etc/group ファイルに必要ならばエントリを追加
 +pwconv コマンドを実行(SVR4系のOSの場合)
 +個人のホームディレクトリを作成、オーナ等を変更

(2)ユーザの削除
・userdel (delsuser) を実行することにより、ユーザのアカウントを消すことができる。

・ユーザの削除手順
 +/etc/passwd ファイルからエントリを削除
 +/etc/group ファイルから必要ならばエントリを削除
 +pwconv コマンドを実行(SVR4系のOSの場合)
 +個人のホームディレクトリを削除

・他にも個人のファイルがあるかもしれない。
 (ex. /var/spool/cron、/var/spool/mail、/var/mail、/tmp、/usr/tmp etc.)

[演習問題]
・自分のアカウントを追加してみなさい。
・削除したユーザのファイルを探し出すには、どうしたらよいか?探し出した物を効率的に消去するには、どうしたらよいか?
・ユーザが、パスワードを忘れてしまったら、どうしたらよいか?

(3)パーミッション
・すべてのファイル、ディレクトリは、11個のパーミッションに関するフラグを持っている。
 ファイルの所有者が、   読める/書ける/実行できる
 ファイルの所有グループが 読める/書ける/実行できる
 赤の他人が        読める/書ける/実行できる
 コマンドの所有者として実行される
 コマンドの所有グループとして実行される

・ファイルのパーミッションは、ls -l コマンドで表示される。
 例:
   -rwxrw-r--
  drwxrwx--x
  -rwsrwsr-x

・パーミッションを変えるには、chmod コマンドを用いる。

[演習問題]
・user01 ユーザとしてログインし、他人に対するパーミッションをいろいろ変えた、ファイルを作ってみなさい。
・user01 以外のアカウントで、上のファイルを、読み込み/書き込み/実行してみなさい。
 (各個人のアカウント、および root で実行しなさい。)

(4)スーパーユーザ
・スーパーユーザ(root)には、ファイルのパーミッションには、妨げられない。
 =どんなファイルも読むことができる
 =どんなファイルにも書くことができる
 =どんなコマンドも実行することができる
 =誰のファイルであろうが、パーミッションを変更できる。
 =誰のファイルであろうが、所有者を変更できる。
  :

(6)set-uid ビット、set-gid ビット
・set-uid ビットの立ったコマンドを実行すると、コマンドを実行した人ではなく、コマンドの所有者の権限で、ファイルを読み書きできる。

・set-gid ビットの立ったコマンドを実行すると、コマンドを実行した人が所属するグループではなく、コマンドの所有グループの権限で、ファイルを読み書きできる。

・set-uid ビット、set-gid ビットの立ったコマンドの例
 passwd、mail

(7)suコマンド、newgrpコマンド
・su コマンドを実行すると、他人の権限でコマンドを実行することができる。
 例:
   su
   su root -c "csh /home/ipa/install.panix
   su root -c "passwd user01"


・newgrp コマンドを実行すると、他のグループの権限でコマンドを実行することができる。
 例:
  newgrp grp01

[演習問題]
・su user01 -c "command" を実行して、一つ前の演習問題で作成したファイルに対し、user01 の権限で command を実行できることを確認しなさい。
・su root -c "command" として、同じことを確認しなさい。


3.2 環境設定

(1)個人の環境設定

・個人の環境は、通常、ホームディレクトリの .xxx というファイルに指定できるようになっているいことが多い。

 例:
  .cshrc :PATH、alias、変数などを設定する。
  .xinitrc:Xwindow の起動時に、ここにかかれたプログラムを実行する。
  .twmrc :ウィンドウマネージャ twm のメニューのカスタマイズなど。
  .Xdefaults:Xwindow の各プログラムの挙動をカスタマイズできる。

[演習問題]
・.cshrc に自分の好きな設定を行いなさい。
・別途指定する.xinitrc を作成し、Xwindow の起動画面がどのようになるか確認しなさい。
・マウス操作で、新たなウィンドウを開くことができるように、.twmrc をカスタマイズしなさい。
・.Xdefaults に次のような記述を入れてみなさい。kterm の挙動がどのように変わるか確認しなさい。
   KTerm*font: 7x13bold
   KTerm*scrollBar: on

(2)サイトの環境設定
・Xwindow のライブラリのディレクトリ(            )の下にある、
 app-defaults ディレクトリの下に、サイトで共通の設定ファイルをおいておくことができる。

 例:
  ..../app-defaults/KTerm に前述の設定を行えば、そのサーバを使う全員で共有できる。


4.ネットワーク環境設定

4.1 ネームサーバの設定

・ネームサーバには、primary と secondary がある。
・自ドメインのネームサーバを、「上位の」ネームサーバに登録してもらうと、世界中から自ドメインのネームが検索できるようになる。
・ネームサーバの設定ファイルは、(通常)次の5つ
(1)boot file(/etc/named.boot):
 ネームサーバの設定ファイルの名称は、決まっていないので、boot file で指定する。

(2)root cache
 root server のアドレスが指定されている。世界中のどのネームサーバでも、基本的に同じ内容が記されている。
 例外:2年くらいまえまでの日本
    1年くらい前の変更を行っていないサイト
    インターネットに接続されていないネットワーク(本研修会の設定含む)

(3)順引き
 ホスト名→IPアドレスの変換のためのデータが入っている。
 他に、MXレコードがあることが多い。

(4)逆引き
 IPアドレス→ホスト名の変換のためのデータが入っている。

(5)local
 127.0.0.1 → localhost に変更するためのデータが入っている。世界中のどのネームサーバでも、基本的に同じ内容。

(6)確認方法
・nslookup コマンドで確認する。

[演習問題]
・ネームサーバの設定ファイルを作り、ネームサーバを再起動しなさい。


4.2 メールサーバの設定

(1)設定ファイル
・sendmail.cf ファイルで、サーバの構成を設定する。
・aliases ファイルで、ローカルな配送先を設定。
・sendmail.cf は、通常人手では作成しない。自動生成するツールが存在している。
 また、同じような条件のサイトからもらってきて、必要部分だけを修正してもよい。

(2)設定の確認
・正しいところに送ろうとするかどうか
 sendmail -bt コマンド

・aliases の設定が正しく認識されているかどうか
 sendmail -bv alias-name コマンド

・相手が受けてくれるかどうか
 nslookup コマンド、telnet host smtp コマンド

・実際にメールを送ってみる。

・メールのログを見る。

[演習問題]
・メールサーバの設定を行いなさい。
・mri@sub01.tmp.or.jp 宛にメールが届くかどうか確認しなさい。


4.3 http サーバ

(1)設定ファイル
・httpd.conf (または類似の名前)で設定する。
・CERN httpd と NCSA httpd という2系統のサーバがある。自分のところのサーバが、どちらであるかを知るのは、非常に重要。

・特に重要な設定項目
 +ドキュメントのルート
 +cgi-bin の変換規則
 +userdir の設定
 +log の取り方

・httpd の起動コマンド(rc ファイル)

(2)プロキシサーバ
・CERN の httpd サーバには、キャッシュ機能を備えた、proxy サーバの機能がある。

・設定する場合は、httpd.conf の他に、もう一つ proxy.conf というファイルを作り、rc ファイルで2つ目の httpd サーバを起動するようにする。

(3)delegate サーバ
・もはや利用する意義は薄くなったので、起動するのをやめてもよいでしょう。
・rc ファイルの記述を削除(コメントにして、しばらくしてから削除する方がベータ)してしまえばよい。

(4)確認
・クライアントから、Netscape 等で確認してもよい。
・telnet localhost 80 で確認する方が、多分、早い。

[演習問題]
・httpd サーバ、proxy サーバを設定しなさい。
・deletgate サーバが起動されるようになっていたら、それをコメントにしなさい。
・サーバを再起動して、上の設定が有効となっていることを確認しなさい。


4.4 anonymous FTP サーバ
(1)ディレクトリ構成とオーナ、パーミッション
・一点を除き、man ftpd の通り。
・wu-ftpd がインストールされていて、それを使う場合は、
   ftpaccess ftphosts ftpusers
  を設定して、セキュリティを高めることができる。
・同じく wu-ftpd を使う場合は、welcome メッセージを作っておくと良い。

(2)確認
・ftp コマンドで確認する。



5.管理者の知っているべきコマンド

5.1 uuencode/uudecode

(1)機能
 バイナリファイルをメールで送ったり、ニュースに投稿する場合に用いられる。

(2)バイナリファイル→テキストファイル
  uuencode file file

(3)テキストファイル→バイナリファイル
  uudecode file  (file には、メールのヘッダが含まれていても良い。)

(4)例
 uuencode file | mail someone
 uudecode mail-file


5.2 compress/gzip

(1)機能
 大きなファイルを圧縮して小さくする。
  compress/uncompress : 多くのUNIXに備わっている
  gzip/gunzip     :PDS。compressよりも圧縮効率がよい。

(2)ファイル名

  aa.Z ファイル aa を compress した物
  aa.z ファイル aa を compress した物
  aa.gz ファイル aa を gzip した物

(3)使用例
  comoress file   gzip file
  uncompress file.Z  gunziip file.gz
  compress -c file > file.Z gzip -c file > file.gz
  uncompress -c file.Z  gunzip -c file.gz


5.3 tar

(1)機能
 複数のファイルを一つのファイルにまとめる。まとまったファイルは、バイナリのファイルなので、メールなどで送る場合は、uuencode する必要がある。

(2)使用例
  tar cfv a b c d
  tar xfv a
  tar cfv current.tar .
  tar cfv - x y z | gzip -c > xyz.tar.gz
  gunzip -c xyz.tar.gz | tar xfv -
  tar cfv . | (cd /tmp; tar xfv -)


5.4 df/du
(1)機能
 ディスクの使用量を見る。
  df  :全ディスクの使用量
  du  :ディレクリ/ファイルごとの使用量

(2)使用例
  df
  du .
  du -s /usr/*


5.5 cron
(1)機能
 決まった時間に、コマンドを実行する。

(2)設定方法
 setenv EDITOR vi
 crontab -v

(3)設定ファイルの例
  0 4 * * 0 find /home/myself/Mail -atime +5 -exec rm {} \;
  55 12 * * 1-5 echo "It's time to go lunch" | mail myself



[演習問題]
・5.1〜5.5で紹介されたコマンドを、試しに実行してみなさい。


6.メーリングリスト

[演習問題]
majordomo、MHonArc をftp で取り寄せ、インストールしなさい。



7.WEBを使ったアンケート
(1)手順
・FORM タグを使って、入力を受け付ける画面を作る。
・入力を処理する、シェルスクリプトを作る。
・結果を統計的に処理したい場合は、そのためのプログラム(シェルスクリプトで十分?)を作る。

[演習問題]
・適当なアンケートを受け付ける画面のための、html ファイルを作りなさい。
・入力を処理し、「お礼の言葉」と「これまでの集計結果を見るためのリンク」を含んだ応答を返すような、シェルスクリプトを作りなさい。
・それまでの集計結果(何人答えを寄せたか、Aと答えた人は何%であったか等)を表示するような、シェルスクリプトを作りなさい。