はじめてのシェル、はじめてのバッチ処理

講義3日目。講義は毎度、新しい発見がありとても有意義です(^^
本日は4時間あり、内容もたっぷりでしたー。

本日の講義で思ったのが「僕ってホントに知識が浅くて、知らないところはトコトン知らないなー」ということでした。
専用サーバーを設定したり、Linuxのインストールや設定、Webページの作成など少ないながらも経験してきたけど、シェルをかくのがはじめてと言う(^^; なんとも順番がゴチャゴチャです。
本日はじめてシェルを書き、cron(クーロン)という存在を教えていただき、簡単なバッチファイルを作成しました。
うーん。僕にできる事がかなり広がった!これは大きな飛躍だ。かなりプログラミングの力が広がった気がする。
ゴチャゴチャしていた破片が一気に繋がった感じがする。
シェルはとってもすばらしい!

講義3日目にもなると、プログラミングへの認識がだいぶ変わった。プログラムへの認識だけでなく、問題の本質をつかむ力が良くなった気がする。

本日の講義内容。

Unix(Linuxプログラマーによるプログラマーの為のOS)

Unixの歴史を紐解く、現在の「MacOS-X」がUnixベースだと言うのは驚き。
Linux誕生の経緯、過去にUnixが商用化していたこと、コンピュータゲームを作りたくてUnixを作ったことなど、歴史を紐解くと驚きがたくさんあります。
昔はコンピュータが貴重だったため、一台を複数人で利用していたこともあり、アクセス管理や権限やタイムシェアリングの概念はこの頃からあった。


○インターネットの母体
メール送信のプロトコルは、現在SMTPが主流だが、前はUUCPがよく利用されていたようだ。
そのほかにも、インターネットは色々なプロトコルから成り立っている。TCP/IPやPOPもそのひとつ。物理層データリンク層などなど。


Linuxコマンド

Linuxのコマンドは普段から触っているけど、触ったことがない便利コマンドが出てきて良かった(^^

課題で、「あるフォルダ内にある.configのついたファイルの数を数えましょうー」というのがあったのだけど、サクッと出来ず(--;
うーん。コマンドを意外と知らないことが発覚。なければないでなんとかやってしまうが、それではイカンのです!

分からなければ、man [コマンド][コマンド] --help で確認しよう!

su
ls
cd
pwd
mkdir
rm
chmod
| (パイプ)

などは良く使っていたので知っていたが、

head
tail
history
[ファイル] > [ファイル]
wc
date
grep
bg

などは知らなかったので、これから使おうと思う!


○アクセス権
これはけっこう理解はしていたと思う。

ちょっと実験。
「まったくアクセス権がない(000)のフォルダの中に、すべてのアクセスが許された(777)ファイルがあります。そのファイル(777)に直接アクセスしたユーザーはファイルの中身を見れるでしょうか?」

答え:
できません。

上記が成立すると、とても面倒ですよね(^^; 良かった良かった。


○プロセス系コマンド

これも大変興味深かった。

ps
kill
bg
fg

○システム管理系コマンド

df
top
passwd
adduser

シェルスクリプト

本日僕が一番注目した内容。
シェルコマンドは何種類かあるらしい。( bsh csh bash zsh

シェルスクリプトは、コマンドをまとめて書いて、一気に実行できるもの。
なんども同じ作業を繰り返す、コマンドはシェルスクリプトを書いて実行すると良い。
さらに、cronと組み合わせて定期的に実行することも可能(これをバッチ処理と言う)。

この「シェル」と「cron」の組み合わせはすごい!
これができるようになったおかげで、ものすごくプログラムの幅が広がった!
さっそく、本日バックアップを取るシェルを作成し、cronで定期的に実行してみた。
バッチ処理完成。うーん。これは大いなる進歩だ。


○ネットワーク(TCP/IP)とインターネット の基本技術

ネットワークはなかなか奥深い・・・。
僕は、レイヤーの意識がまだ薄いので、そのへんをつめてゆきたい。


・IPで接続される機器は32bitのIPアドレスを持つ。
IPアドレスは 202.248.237.106 のように8bit毎に区切った10進数で表す。
・IPのパケット単位で、ルーターを経由しながら伝わる。

プロトコルTCP」は
破損せずデータが渡るように、工夫されている。
プロトコルUDP」は
データがしっかりと渡るかどうかは保障しないが早い。


○ポート番号
これは、Apacheなどでポートの指定の設定をしたこともあるし、少しは分かっているつもり(^^;


DNS
IPアドレスは覚え難いので、サーバーに名前を付けるサービスDNS を利用できます。
・サーバー名の右端 (国コードまたは comなど)はトップレベルドメイン(TLD)と呼ばれ、TLD単位でサーバー名(ドメイン名)の管理が行なわれています。例) .jp は JPNIC
・サーバー名→IPアドレスの変換は頻繁に行われるので、プロバイダーや各サーバーで変換情報を分散管理したり、キャッシュしたりしています。


telnetの利用
telnet はあまり利用したことがない(^^;
ほとんど、特定のポートに接続して利用していたので、
80や25といった、同じソフトからポートを変えて、利用することはあまりなかった。
sendmail や webサーバーとtelnetでの会話は少々面倒だけど、
会話の内容が分かると、「ここでこんなデータを取得しているんだ!」という事が分かる。


やはり基本です。すべては基本の中にいますねー。