まるもの勉強日記。

実はSE目指してます。

1週間でLPICの基礎が学べる本〈7日目〉

 

プログラムはファイルの形でハードディスク上に保存されている。
プログラムを実行するとプログラムコードがコンピュータメモリ上に読み込まれCPUによって実行される。

メモリ上で実行中のプログラムをプロセスという。

 

プロセス情報を表示

[ps (オプション)]

~オプション~
・[a]...他のユーザーのプロセスも表示
・[u]...ユーザー名表示
・[x]...端末から実行されたものでないプロセスも表示

オプションなしだと実行したユーザーが端末上で起動したプロセスの一覧を表示する。

~[ps]コマンドの表示項目~
・PID...プロセスID(プロセスを起動ずるとプロセスごとに固有のID番号が割り当てられる)
・TTY...プロセス実行した端末名
・TIME...プロセスの実行時間
・CMD...実行コマンド

プロセスは他の実行中のプロセスから起動する。=フォーク
起動元を親プロセス
実行したものを子プロセス

このプロセスの親子関係を表示するのが

[pstree (オプション)]

プロセスの実行状況を確認するのが

[top]

「Q」キーで終了

~[top]コマンドの表示項目~
・PID...プロセスID
・USER...プロセスを実行しているユーザー
・%CPU...CPUを消費している割合
・%MEM...メモリを消費している割合
・COMMAND...実行されているコマンド

プログラムの実行が終了すると、プロセスは消滅してしまう。
中には明確に終了の支持しなければ動作をつづけるものもある。
その場合は、プロセスに停止信号を送って終了させる。
プロセスにおくる信号=シグナル

~主なシグナル~

シグナルID シグナル名 動作
9 KILL 強制終了
15 TERM 終了(デフォルト)
18 CONT 再開
19 STOP 一時停止

※KILLシグナルを使うのはTERMシグナルが有効にならなかった場合のみ使うこと。

 

シグナルを送信するには

[kill (シグナルID) プロセスID]
[kill -s (シグナル名) プロセスID]

[kill]コマンドはプロセスIDで指定しないといけない。
あらかじめ[ps]コマンドでプロセスIDを確認しておく必要がある。

[killall]コマンドを使うとプロセス名を指定できる。


 

コマンドを実行すると複数のプロセスが起動することがある。
必ずしも1対1ってわけじゃない。

ユーザー側の処理の単位をジョブという。
1つのジョブはコマンドラインに入力する1行を考えてOK。
パイプでいくつかのコマンドをつないで実行する場合、それで1つのジョブと考える。

フォアグラウンドジョブ…コマンド実行が終了するまで次のコマンドが入力できない。

バックグラウンドジョブコマンドラインの末尾に「&」をつける。すぐに次のコマンドを入力できる。
⇒効率的な操作ができる!

実行中のジョブを確認するには

[jobs]

・「Running」...バックグラウンドで実行中
・「Stopped」...バックグラウンドで停止中
・「+」...直前に実行していたジョブ
・「-」...その前のジョブ

フォアグラウンドで実行させるには

[fg (%ジョブID)]

フォアグラウンドでジョブが実行されている最中に、[Ctrl]+[Z]キーをおすと一時停止できる。

一時停止中のジョブの実行をバックグラウンドで再開させるには

[bg (%ジョブID)]

※ジョブIDは「%」つけて指定すること。


通信を行う上での取り決め=通信規約=プロトコル

最も一般的なプロトコルTCP/IP

TCPは信頼性を確保するためのプロトコル
パケットが届いたかどうか確認し、届いてなければパケットを再送するなどして信頼性の向上を図る。

IPはネットワーク上のIPアドレスを規定し、パケットが伝送されるネットワーク経路の制御を担当する。
IPアドレスには、32ビットのIPv4と128ビットのIPv6がある。

IPアドレスネットワーク部ホスト部から成り立つ。
2つの境界線はサブネットマスクを使って求められる。

ネットワーク部が同じであるIPアドレスは1つのネットワークに属する。
これをネットワークセグメントという。
1つのネットワークに属していると、直接通信を行うことが可能。

先頭のIPアドレスネットワークアドレス
末尾のIPアドレスブロードキャストアドレス

IPアドレスにはクラスという概念がある。
クラスはネットワーク部とホスト部をあらかじめ決められたビット数で分割し決められている。

 

インターネットでサーバを公開しようとすればそのサーバに割り当てるIPアドレスが必要になる。
インターネットで使われるIPアドレスは重複したりしないようICANNという非営利団体が管理していて、ブロバイダなど通じてユーザーに割り当てられるようになっている。これをグローバルアドレスという。

一方、企業内LANでパソコンをネットワークに接続する際にもIPアドレスは必要。
IPアドレスを割り当てるのが手間なので、プライベートアドレスを使う。

~プライベートアドレスの範囲~
・10.0.0.0~10.255.255.255
・172.16.0.0.~172.31.255.255
・192.168.0.0~192.168.255.255

 


 

1代のコンピュータ上ではWebブラウザとメールクライアントなど複数のネットワークアプリケーションが動作していることもある。
そこで、送信元や送信先のアプリケーションを識別するためにポート番号が使われる。
IPアドレスが住所だとすると、ポート番号は部屋番号みたいなものらしい。

~主なポート番号~

ポート番号 説明
20 FTPのデータ送信
21 FTPの制御情報
22 SSH接続
23 Telnet接続
25 電子メール送信
53 DNS
80 Web(HTTP)
110 電子メール受信

 

設定ファイルに設定を記述するとネットワーク設定は永続的なものになる。

/etc/hostsファイルIPアドレスとホスト名(コンピュータ名)との対応を記述する

/etc/resolv.confファイル…利用するDNSサーバやドメイン名を指定する

/etc/sysconfig/networkファイル…ネットワーク機能を有効にするかどうか、ネットワークの基本情報(ホスト名とか)を設定する

/etc/sysconfig/network-scripts/ifcfg-eth0IPアドレスサブネットマスクなどネットワークインタフェース「eth0」の設定を記述する

ネットワークサービスを再起動することで、設定ファイルの変更がネットワーク設定に反映される。

[service network restart]

 

ネットワーク経由で別のコンピュータにログインするためには

[telnet 接続先ホスト名 or IPアドレス]

しかし、[telnet]コマンドでの通信は暗号化されていない。
つまり、パスワードや通信内容が漏洩されてしまう恐れがある。

 

SSHは安全なリモート接続ができるプロトコル
[telnet]の代わりに[ssh]コマンドを使うと安全な通信が行える。

[ssh (ユーザー名@)接続先ホスト名 or IPアドレス]

SSHはたとえ盗聴されても大丈夫。
なぜなら公開鍵認証というパスワードを使わずして認証を行う仕組みがあるから。
パスワードの代わりに、公開鍵秘密鍵のペアで認証を行う。

公開鍵認証でログインする環境をととのえておけば第三者がログインすることはない。

指定したホストに向けてICMPパケットを送信

[ping 接続先ホスト名 or IPアドレス]

ホストが動作していれば反応が返ってくる。
つまりネットワークがつながっているってこと。
[Ctrl]+[C]キーを押すまでICMPパケットは送信される。

 


 

これで、「1週間でLPICの基礎が学べる本」終了です。
時間かかったなぁ、もぅ。

6・7日目あたりがちょっと理解が追い付かなくなった正直なところ。

これでもまだ基礎だもんな。(笑)