102-1. シェル、スクリプト、およびデータ管理
- シェル環境のカスタマイズと使用
- 簡単なスクリプトをカスタマイズまたは作成する
- 「source シェル名」でシェルを実行できる(「source」は「.」でも実行可能)
- testで条件式(「test 条件式」は、「[条件式]」と同じ)
- if,case,for,while,read等の構文がある
- SQLデータ管理
1. シェル環境のカスタマイズと使用
環境変数とシェル変数
- シェルは、ユーザー毎に異なる環境を用意できる
- 変数は、環境変数とシェル変数の2種類がある
シェルのオプション
- シェルには様々なオプション機能があり、「set」コマンドオプションをオン(+)・オフ(-)に切り替えが出来る
- 「set」コマンドのみで実行すると変数一覧が表示される
- 「set -o」で実行すると変数に対するオプションのオン・オフ一覧が表示される
set [-o][+o] オプション
オプション | 説明 |
---|---|
allexport | 作成・変更した変数を自動的にエクスポート |
emacs | emacs風キーバインド |
ignoreeof | Ctrl+Dでログアウトしない |
noclobber | 出力リダイレクトを禁止(「set -C」でも実行可) |
noglob | メタキャラを使ったファイル展開を無効 |
vi | vi風キーバインド |
メタキャラを禁止した例) [vagrant@localhost lpic]$ ls *.txt hoge.txt hoge2.txt hoge3.txt [vagrant@localhost lpic]$ set -o noglob [vagrant@localhost lpic]$ ls *.txt ls: cannot access *.txt: そのようなファイルやディレクトリはありません [vagrant@localhost lpic]$
エイリアス
- エイリアスとは、コマンドに別名つけたりコマンドとオプションをひとまとめにして新しいコマンドのようしたりできる
エイリアスの使用例) [vagrant@localhost lpic]$ alias ls='ls -l' [vagrant@localhost lpic]$ ls 合計 4 -rw-rw-r-- 1 vagrant vagrant 9 7月 22 10:20 2015 hoge.txt -rw-rw-r-- 1 vagrant vagrant 0 8月 5 03:49 2015 hoge2.txt -rw-rw-r-- 1 vagrant vagrant 0 8月 5 03:49 2015 hoge3.txt [vagrant@localhost lpic]$ \ls hoge.txt hoge2.txt hoge3.txt [vagrant@localhost lpic]$ unalias ls [vagrant@localhost lpic]$ ls hoge.txt hoge2.txt hoge3.txt [vagrant@localhost lpic]$
関数の定義
- 「function」コマンドを使うと、bashシェル上で利用できる独自の関数を定義できる
- 「{」の後と「}」の前には空白が必要
- 引数を利用する場合、「$1」で利用できる
- 「declare -f」コマンドで関数のみを表示できる
- 「unset」コマンドで関数を削除出来る
function 関数名() { コマンド; }
関数の利用例) [vagrant@localhost lpic]$ declare -f [vagrant@localhost lpic]$ function lslink() { ls -l $1 | grep '^l'; } [vagrant@localhost lpic]$ declare -f lslink () { ls -l -l $1 | grep '^l' } [vagrant@localhost lpic]$ ls -l lpic2 lrwxrwxrwx 1 vagrant vagrant 19 8月 5 04:25 2015 lpic2 -> /home/vagrant/lpic2 [vagrant@localhost lpic]$ lslink ~/lpic/ lrwxrwxrwx 1 vagrant vagrant 19 8月 5 04:25 2015 lpic2 -> /home/vagrant/lpic2 [vagrant@localhost lpic]$ unset lslink [vagrant@localhost lpic]$ declare -f [vagrant@localhost lpic]$
bashの設定ファイル
ファイル | 説明 |
---|---|
/etc/profile | ログイン時に実行(全ユーザーの環境変数やシェルスクリプトを設定) |
~/.bash_profile | ログイン時に実行(自分用の環境変数やシェルスクリプトを設定) |
~/.bash_login | ログイン時に実行(bash_profileがない場合) |
~/.profile | ログイン時に実行(bash_profile、bash_loginがない場合) |
~/.bashrc | bash起動時に実行(自分用のaliasの設定等) |
~/.bash_logout | ログアウト時に実行 |
2. 簡単なスクリプトをカスタマイズまたは作成する
シェルスクリプトの基礎
- 「source」コマンドでシェルを実行できる(「source」は「.」でも実行可能)
- ファイルに実行権限をつけると「source」コマンドを使わくてもコマンドのみで実行できる
- bash用のシェルファイルは文頭に「#!/bin/bash」と宣言する
source シェル名
シェル(lsld)の事項例 [vagrant@localhost lpic]$ ls -l 合計 12 -rw-rw-r-- 1 vagrant vagrant 9 7月 22 10:20 2015 hoge.txt drwxrwxr-x 2 vagrant vagrant 4096 8月 5 05:14 2015 hogeDir lrwxrwxrwx 1 vagrant vagrant 19 8月 5 04:25 2015 lpic2 -> /home/vagrant/lpic2 -rw-rw-r-- 1 vagrant vagrant 89 8月 5 05:12 2015 lsld [vagrant@localhost lpic]$ cat lsld ls -l $1 > lslink echo "Link Files" grep '^l' lslink echo "Directories" grep '^d' lslink [vagrant@localhost lpic]$ . lsld . // sourceコマンドを処略して実行 Link Files lrwxrwxrwx 1 vagrant vagrant 19 8月 5 04:25 2015 lpic2 -> /home/vagrant/lpic2 Directories drwxrwxr-x 2 vagrant vagrant 4096 8月 5 05:14 2015 hogeDir [vagrant@localhost lpic]$ chmod a+x lsld [vagrant@localhost lpic]$ ./lsld // コマンドのみで実行 Link Files lrwxrwxrwx 1 vagrant vagrant 19 8月 5 04:25 2015 lpic2 -> /home/vagrant/lpic2 Directories drwxrwxr-x 2 vagrant vagrant 4096 8月 5 05:14 2015 hogeDir [vagrant@localhost lpic]$ [vagrant@localhost lpic]$
引数
変数名 | 説明 |
---|---|
$0 | シェルスクリプト自身の名前※ |
$1...9 | 1〜9番目の引数 |
$# | 引数の数 |
$@ | すべての引数.(スペース区切り) |
$* | すべての引数(環境変数IFSで指定した区切り) |
※.コマンドとして実行した場合はシェルスクリプト名、 シェルで実行した場合シェル名(bashなど)
使用例) [vagrant@localhost lpic]$ echo 'echo $0; echo $1; echo $2; echo $#;' > testargs;chmod a+x testargs; [vagrant@localhost lpic]$./testargs arg1 // コマンドとして実行 ./testargs arg1 1 [vagrant@localhost lpic]$ [vagrant@localhost lpic]$ . testargs arg1 // シェルで実行 -bash 0 [vagrant@localhost lpic]$
test
条件式の書式) test 条件文 または [ 条件文 ]
分類 | 主な条件式 | 実行結果 | 備考 |
---|---|---|---|
ファイル形式 | -f ファイル名 | ファイルがあれば真 | 実行権有りは-x、書き込み権有りは-w |
-d ディレクトリ名 | ディレクトリがあれば真 | ||
ファイル1 -nt ファイル2 | ファイル1の更新日が、ファイル2より新しければ真 | -nt → is newer than | |
ファイル1 -ot ファイル2 | ファイル2の更新日が、ファイル1より新しければ真 | -ot → is older than | |
数値 | 数値1 -eq 数値2 | 数値1 == 数値2 | -eq → equal |
数値1 -ne 数値2 | 数値1 != 数値2 | -ne → not equal | |
数値1 -ge 数値2 | 数値1 >= 数値2 | -ge → greater than or equal | |
数値1 -gt 数値2 | 数値1 > 数値2 | -gt → greater than | |
数値1 -le 数値2 | 数値1 <= 数値2 | -le → less than or equal | |
数値1 -lt 数値2 | 数値1 < 数値2 | -lt → less than | |
文字列 | -n 文字列 | 文字列の長さが0より大きければ真 | |
-z 文字列 | 文字列の長さが0であれば真 | ||
文字列1 = 文字列2 | 等しければ真(==ではない) | ||
文字列1 != 文字列2 | 異なれば真 | ||
論理結合 | !条件 | 真→偽、偽→真 | |
条件1 -a 条件2 | and | ||
条件1 -o 条件2 | or |
if
書式) if 条件式 then 実行文 else 実行文 fi
実行例) [vagrant@localhost lpic]$ cat iftest1.sh if test -f testscript then source ./testscript else echo "testscript file not exist" fi [vagrant@localhost lpic]$ ls ./testscript ls: cannot access ./testscript: そのようなファイルやディレクトリはありません [vagrant@localhost lpic]$ ./iftest1.sh testscript file not exist [vagrant@localhost lpic]$
case
書式) case 式 in 値1) 実行文 値N) 実行文 esac
for
書式) for 変数名 in 変数に代入する値のリスト do 実行文 done
実行例) [vagrant@localhost lpic]$ cat fortest1.sh for var in Vine SUSE Gentoo do echo $var Linux done [vagrant@localhost lpic]$ ./fortest1.sh Vine Linux SUSE Linux Gentoo Linux [vagrant@localhost lpic]$
while
書式) while 条件式 do 実行文 done
read
- 標準入力から入力を受け付ける
実行例) [vagrant@localhost lpic]$ cat readtest.sh echo -n "Who are you? : " read username echo "Hello, $username!" [vagrant@localhost lpic]$ ./readtest.sh Who are you? : Kinopio Hello, Kinopio! [vagrant@localhost lpic]$
3. SQLデータ管理
DML
「SELECT」文でレコードを参照
SELECT カラム名 FROM テーブル名
「INSERT」文でレコードを追加
INSERT INTO テーブル名(カラム名,カラム名...) VALUES (値,値...)
「UPDATE」文でレコードを更新
UPDATE テーブル名 SET カラム名=値, カラム名=値...
- 「WHERE 条件」で更新するレコードを絞れる
「DELETE」文でレコードを削除
DELETE FROM テーブル名
- 「WHERE 条件」で削除するレコードを絞れる
おまけ
既存シェル変数を実行時に利用したくない場合
- 実行時だけ既に$VARが指定してあって環境変数を指定したくない時は「変数名=初期値 . 実行シェル」
$ VAR=HOGE! $ echo $VAR HOGE! $ cat hoge.sh #!/bash/bin VAR=hogehoge echo $VAR $ VAR='' . hoge.sh hogehoge $ echo $VAR HOGE!
使用した教材
101-4. デバイス、Linuxファイルシステム階層標準
- パーティションとファイルの作成
- ファイルのシステムの整合性を保持する
- ファイルのマウントとアンマウントをコメントロールする
- ディスククォータを管理する
- ハードリミット、ソフトリミットがある
- 「quota」コマンドでユーザごとのディスク使用量とクォータの状況を確認できる
- ファイルのパーミッションと所有者を管理する
- 「chmod,chgrp」コマンドで権限が変更できる
- 「chown」コマンドで所有者が変更できる
- 「umask」コマンドでumask値の確認や変更が出来る
- ハードリンクとシンボリックリンクを作成・変更する
- 「ln」コマンドでハードリンクを作成できる(オプションに-sをつけるとシンボリックリンク)
- システムファイルを見つける、適切な位置にファイルを配置する
- 「find」コマンドでファイルを検索できる
note
- 4章:5,6
- 5章:1,2,3,4,7
- ハードディスクを利用するための5ステップ
- デバイスファイルとは、HDなどの デバイスの入出力を行う特殊ファイル
- ファイルシステムとは、ディスクに保存されるデータをファイルとして管理する仕組み
1. パーティションとファイルの作成
パーティション
- パーティションとは、ハードディスク内の分割された領域
- パーティションは、「基本パーティション」と「拡張パーティション」の2種類がある
- MBRは、パーティションの管理情報やハード・ディスク内に格納されたOSを呼び出すためのソフトウエアなどが記述された場所
- 「fdisk」コマンドでパーティションを操作できる
fdisk [-l] デバイス名
実行モードコマンド | 説明 |
---|---|
l | パーティションタイプを一覧表示 |
n | パーティションを作成 |
d | パーティションを削除 |
p | パーティショテーブルを表示 |
w | パーティションテーブルを保存して終了 |
q | パーティションテーブルを保存しないで終了 |
m | ヘルプメニューを表示 |
ハードディスク
デバイスファイル
- デバイスファイルとは、ハードディスクやCD-ROM、シリアルポートといったデバイスの入出力を行う特殊ファイル
- デバイスに関連付けられたファイルを利用しファイルと同じようにアクセス(入力や出力)出来るようにする
- ドライブという概念ではなく、/ディレクトリ以下にマウントして利用する
分類 | デバイスファイル | 説明 |
---|---|---|
ハードディスク(IDE) | /dev/hda | プライマリーマスター |
/dev/hdb | プライマリスレーブ | |
/dev/hdc | セカンダリーマスター | |
/dev/hdd | セカンダリースレーブ | |
ハードディスク(SCSI/SATA/USB) | /dev/sda | 1番目 |
/dev/sdb | 2番目 | |
/dev/sdc | 3番目 | |
/dev/sdd | 4番目 | |
ドライブ | /dev/sr0 | CD/DVD |
/dev/st0 | テープ |
ルートファイルシステム
- システムの起動に必要なファイルや、システムが異常をきたした場合に、それを修復するための各種ツールやユーティリティが格納されている
- ルートファイルシステムには「/bin,/sbin」「/etc」「/lib」「/dev」が必要
- 「/bin,/sbin」:システムに必要なコマンド
- 「/etc」:各種設定
- 「/lib」:ライブラリ
- 「/dev」:デバイスファイル
ファイルシステム
- パーティションを作成しただけでは、まだファイルを保存することはできない
- ファイルシステムは次の3つに分類できる
- ディスクファイルシステム(デフォルトは「ext2」)
- 分散ファイルシステム(ファイル共有のためのプロトコルを備えている)
- 特殊用途ファイルシステム
- 「mkfs」コマンドで、パーティション上にファイルシステムを作成できる(mkfs -t ext4 /dev/sdb1)
mkfs [-t ファイルシステムタイプ] [オプション] デバイス名
分類 | ファイルシステム | mkfsコマンドンド | 備考 |
---|---|---|---|
ディスクファイルシステム | ext2 | mkfs -t ext2 | Linuxオペレーティングシステムで広く利用されていたファイルシステムである初期のextファイルシステムを拡張して作られた |
ディスクファイルシステム | ext3 | mkfs -t ext3 | ext2と互換性が高くジャーナリングやディレクトリインデックス等の機能が加わった |
ディスクファイルシステム | ext4 | mkfs -t ext4 | ext3の後継のファイルシステムで、拡張機能を使っていない場合に限りext3としてマウントできる |
分散ファイルシステム | ReiserFS | mkfs -t reisefs | ファイル検索が高速 |
分散ファイルシステム | XFS | mkfs -f xfs | 堅固で高速なジャーナリングシステム |
2. ファイルのシステムの整合性を保持する
- 利用状況や容量を次のコマンドで確認出来る
- df:ファイルシステムごとのディスクの利用状況
- du:ディレクトリ内のディスクの占める容量
- ls -l:論理的なバイト数(「du」はブロック数に対応したバイト数)
- 「fsck」コマンドでディスクのチェックや修復ができる
- 「tune2fs」コマンドでext2/ext3/ext4ファイルシステムのパラメータを調整できる(「tune2fs -c 10 /dev/sda2」で「/dev/sda2」がマウント出来る回数を 10回に変更)
du [オプション] [デバイス名/ディレクトリ名]
オプション | 説明 |
---|---|
-a | ディレクトリ以外にファイルについても表示 |
-l | リンクも含めて集計 |
-c | すべての容量の合計を表示 |
-s | 指定したディレクトリのみの合計を表示 |
-S | サブディレクトリを含めず集計 |
fschk [オプション] デバイス名
オプション | 説明 |
---|---|
-t ファイルシステム名 | ファイルシステムの種類を指定 |
-a | 自動的に修復を実行 |
-r | 対話的に修復を実行 |
-A | /etc/fstabに記述されている全ファイルシステムに対して実行 |
-N | 実際には実行せず何が行われるかのみ表示 |
tune2fs [オプション] デバイス名
オプション | 説明 |
---|---|
-c 回数 | チェックなしでマウントできる最大回数を指定 |
-i 時間 | ファイルシステムをチェックする差一台の時間間隔を指定 |
-j | ext2ファイルシステムをext3ファイルシステムに変換 |
-L | ファイルシステムのボリュームラベルを設定 |
[vagrant@localhost ~]$ df -h # ファイルシステムの利用状況 Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-lv_root 8.6G 1.5G 6.7G 18% / tmpfs 186M 0 186M 0% /dev/shm /dev/sda1 485M 50M 410M 11% /boot vagrant 113G 89G 24G 79% /vagrant [vagrant@localhost ~]$ [vagrant@localhost ~]$ du -h /var/www/html/ # 指定したディレクトリの容量 8.0K /var/www/html/ [vagrant@localhost ~]$
3. ファイルのマウントとアンマウントをコメントロールする
- マウントとは、あるファイルシステムに別のファイルシステムを組み込んで全体として1つのファイルシステムとして扱えるようにすること
- マウントした後は、デバイスやネットワークの違いを意識せずにファイルにアクセスできる
- 「/etc/fstab」ファイルにファイルシステムの情報が記述されている
- 「mount」コマンドでファイルシステムをマウントができる
- 「mount -a」で「/etc/fstab」に記述されている全てのファイルをシステムにマウント
- 「mount」のみで実行すると現在のマウント状況が表示される
- 「umount」コマンドでファイルシステムをマウント解除ができる
/etc/fstabファイルの書式) /dev/sda /boot ex3 defaults 1 2 ① ② ③ ④ ⑤ ⑥ ①デバイス名 ②マウントポイント(マウント先のディレクトリ) ③ファイルシステムの種類(ext2,ext3等) ④マウントオプション(デフォルト設定(async,auto,dev,exec,nouser,rw,suid)、個別にも設定可能) ⑤dumpフラグ(1であればバックアップ対象、通常ext2とext3以外は0) ⑥ブート時にfsckがチェックする順序(0はチェック対象外、昇順でチェック、ルートファイルシステムは1である必要がある)
マウントオプション | 説明 |
---|---|
async | 非同期入力を設定 |
auto | -aオプションでmountコマンドを実行した時にマウントする |
noauto | -aオプションでmountコマンドを実行した時にマウントしない |
defaults | デフォルト設定(async,auto,dev,exec,nouser,rw,suid) |
exec | バイナリ実行を許可 |
noexec | バイナリ実行を許可しない |
ro | 読み出し専用でマウント |
rw | 読み書きでマウント |
unhide | 隠しファイルも表示 |
suid | SUIDとSGIDを有効 |
user | 一般ユーザーでもマウント可能にする |
users | マウントしたユーザー以外のユーザーもアンマウント可能にする |
nouser | 一般ユーザーのマウントを許可しないようにする |
4. ディスククォータを管理する
- ディスククォータとは、ユーザーあるいは、グループごとにディスク容量を制限する事のできる仕組みのこと
- クォータは次のパラメータを制限できる
- ユーザーごとのハードリミット:上限で書込みができなくなる
- ユーザーごとのソフトリミット:上限で警告、一定期間で書込みができなくなる
- グループごとにも、ハードリミット・ソフトリミットがある
- 猶予期間:ソフトリミットの猶予期間
- 「quota」コマンドでディスクの使用量とクォータの状況を確認できる(「quota -uv lpic」でlpicユーザのクォータ情報を表示)
- オプションに「-u」をつけるとユーザクォータの状態を表示(省略可)、「-g」でグループクォータを表示
- 「quotaon」コマンドでディスククォータ有効、 「quotaoff」で無効
- 「repquota」でディスク使用状況とクォータ状況を表示(「quota」コマンドはユーザ、グループ毎のクォータ状況の確認。「repquota」コマンドはファイルシステム(全ユーザ等)のクォータ状況の確認。)(「repquota -a」で「/etc/fstab」に従ってクォータ情報を表示)
- 「edquota」コマンドでディスク容量を設定
quota [-u] [オプション] [ユーザ名]
quota -g [オプション] グループ名
オプション | 説明 |
---|---|
-u | ユーザクォータの状況を表示 |
-g | グループクォータの状況を表示 |
-v | 詳細な情報を表示 |
クォータの適用手順
- 「/etc/fstab」ファイルにマウントオプションの指定に「usrqouta」を追加する
- 対象のディレクトリをマウントし直す
- 対象のディレクトリ直下に「aquota.user」ファイルを作成しアクセス権(600)を設定する
「quotacheck」コマンドでデータベースを初期化する([quotacheck ディレクトリ名])
- 「quotacheck」コマンドは、ファイルシステムを調べディスク使用量をチェックする。「aquota.user」「aquota.group」に保存される。
「qauotaon」コマンドでクォータを有効にする([qauotaon ディレクトリ名])
「edquota」コマンドでユーザーごとのクォータを設定する([edquota ユーザー名])(viエディタが起動する)
- 「repquota」コマンドで確認する([repquota ディレクトリ名])
- 「-a」オプションを指定して実行すると「/etc/fstab」ファイルの全てのクォータ状況が表示される
5. ファイルのパーミッションと所有者を管理する
- 「chmod,chgrp」コマンドで権限が変更できる
- 「chown」コマンドで所有者が変更できる
- ファイルやディレクトリを作成時には、デフォルトのアクセス権限(umask値)が設定されている
- 「umask」コマンドでumask値の確認や変更が出来る
- ファイルは666、ディレクトリは777からumask値を引いた値がデフォルトのアクセセス権(umask値が022の場合、ファイルは644、ディレクトリは755になる)
パーミッション(アクセス権)の例) d rwx r-x r-- ① ② ③ ④ ①ファイルの種類(「d」はディレクトリ、「-」は通常のファイル、「l」はリンク) ②所有者(u)の権限 ③グループ(g)の権限 ④その他(o)の権限
chmod [オプション] アクセス権 ファイル名
SUID、SGID、スティッキービット
- SUID(Set User ID)とは、実行権を持っているユーザが実行した場合、ファイルの所有者が実行したことになる
- 所有者の実行権が「s」となっている(rwsr-xr--)
- 権限の数値は「4000」が加えられる(uの項目だから4?)
- 「passwd」コマンドで、「/etc/passwd(rw-r--r--)」ファイルを変更できるのはSUIDがコマンドについているから
- 「chmod u+s ファイル名」でSUIDがつけられる
- SGID(Set Group ID)とは、SUIDと同じでグループの所有者が実行したことになる
- グループの実行権が「s」となっている(rwxr-sr--)
- 権限の数値は「2000」が加えられる(gの項目だから2?)
- 「chmod g+s ファイル名」でSGIDがつけられる
- スティッキービットとは、そのユーザに書き込み権があっても削除することが出来ないように制御できる
- その他の実行権が「t」となっている(rwxrwxrwt)
- 権限の数値は「1000」が加えられる(oの項目だから1?)
- 「/tmp(drwxrwxrwt)」は自分以外のユーザが所有するファイルは書き込めても削除は出来ない
- 「chmod o+t ファイル名(ディレクトリ名)」
6. ハードリンクとシンボリックリンクを作成・変更する
ln [オプション] リンク元(実体) リンクファイル
7. システムファイルを見つける、適切な位置にファイルを配置する
- 「find」コマンドでファイルを検索できる
- 「locate,updatedb」コマンドでも検索できる(updatedbはファイルやパス等をDBに保存し検索する)
- 「which」コマンドは、コマンドの絶対パスを表示する
- 「whereis」コマンドは、バイナリファイルやソースコードマニュアルの配置場所を表示する
- 「type」コマンドは、コマンドが実行ファイルなのか、シェルの組み込みコマンドなのか、エイリアスなのか等コマンドの情報を表示する
find [検索ディレクトリ] [検索式]
検索式 | 説明 |
---|---|
-name ファイル名 | ファイル名で検索 |
-atime 日時 | 採集アクセス時刻で検索 |
-mtime 日時 | 最終更新時刻で検索 |
-perm アクセス権 | アクセス権で検索 |
-size サイズ | ファイルサイズで検索 |
-type ファイルの種類 | ファイルの種類で検索(f:ファイル、l:シンボリックリンク、d:ディレクトリ) |
-user ユーザ名 | ファイルの所有者で検索 |
使用した教材
101-3. GNUとUnixのコマンド
- コマンド行で操作する
- シェルでコマンドを実行でき、変数にはシェル変数と環境変数がある
- ファイルを使ってテキストストリームを処理する
- 「cat,head,tail等」コマンドでファイルを扱える
- リダイレクト(>)で出力結果をファイルへ書き込める
- 基本的なファイル管理を行う
- 「ls,cp,mv,file等」コマンドでファイルの確認や操作が出来る
- 「tar」コマンドアーカイブ、「gzip,gunzip,bzip2」で圧縮・解凍
- ストリーム、パイプ、リダイレクトを使う
- プロセスを生成、監視、終了する
- 「ps,top」コマンドでプロセスを監視できる
- 「kill」コマンドでプロセスを終了できる
- 「&」でバックグランド実行、「nohup」でログアウト中も実行
- 「jobs」コマンドで実行中ジョブの確認(「fg ジョブ番号」「bg ジョブ番号」でバックグラウンドとフォアグラウンドを切り替え)
- プロセスの実行
- 「nice」コマンドでプロセスの優先度が指定できる
- 実行中のプロセスは「renice」コマンドで優先度を変更できる
- 正規表現を使用してテキストを検索する
- ^[0-9].*[a-z]$:行頭が「0〜9」、行末が「a~z」
- viを使って基本的なファイル編集を行う
- 「vi」コマンドでファイルを編集できる
note
- 3章:1,2,3,4,7,8
- 4章:5,6
1. コマンド行で操作する
コマンド [オプション] [引数]
コマンド | 説明 |
---|---|
コマンド1 ; コマンド2 | コマンド1に続いてコマンド2を実行する |
コマンド1 && コマンド2 | コマンド1が正常に終了したときのみコマンド2を実行する |
コマンド1 || コマンド2 | コマンド1が正常に終了しなかった場合のみコマンド2を実行する |
(コマンド1 ; コマンド2) | ひとまとまりのコマンドグループとして実行する |
{コマンド1 ; コマンド2} | 現在のシェル内でコマンドを実行する |
コマンド1 > hoge.log | 実行結果をファイルに出力 |
- 引数の引用符(「'」「"」「`」)でそれぞれ実行結果が異なる
- 「'」:文字列として表示
- 「"」:変数の内容が展開されてを表示
- 「`」:コマンドの実行結果が展開されて表示
シェル
- コマンドを受け付け、必要なプログラムを実行しているのはシェル
代表的なシェル | 説明 |
---|---|
sh(Bourne Shell) | UNIXの標準的なシェル、最低限の機能しか持たない |
bash(Bourne Again Shell) | shを改良したもの、多くのLinuxの標準的なシェル |
csh(C shell) | C言語に似たスクリプトを利用できるシェル |
ksh(Korn Shell) | shを改良したもの |
ログインシェル | システムログインした直後に起動されるシェル(ログイン後は/etc/passwdに設定されているユーザー別のシェルが起動する) |
シェル変数と環境変数
- 変数は、有効範囲別に「シェル変数」と「環境変数」に分けられる
- 「export」コマンドで環境変数にでき、他のシェルからも変数が使用できる
- シェル変数と環境変数の確認コマンド
- 変数を参照する時は、「$」を変数名の先頭につけて、定義する時は「$」をつけない
パスの追加
PATH=$PATH:追加するディレクトリ名
2. ファイルを使ってテキストストリームを処理する
コマンド | 説明 |
---|---|
cat | ファイルの内容を表示 |
nl | ファイルの内容に行番号を付与し表示 |
head | ファイルの先頭部分を表示 |
tail | ファイルの末部分を表示(ログファイルをリアルタイムで監視する時に「-f」のオプションをつける) |
cut | 指定したフィールドを表示(オプションに「-c 文字数」で指定したテキストファイルから切り出す文字位置を指定、「-d 区切り文字」で区切り文字を指定、「-f フィールド 」で取り出すフィールドの指定(「cut -d : -f 1,7 /etc/passwd」で/etc/passwdから「:」で区切られた1列目と7列目を表示できる)) |
join | 2つのファイルを読み込んで連結(「-j フィールド」オプションで連結するフィールドの指定出来る(「join -j 1 data1.txt data2.txt」で「data1.txt」と「data2.txt」ファイルの第1フィールドに基づいて連結)) |
paste | 1つ以上のファイルを読み込んで連携(「-d 区切り文字」で区切り文字を指定) |
sort | 行単位でファイル内容をソートして表示(「-b」オプションで行頭の空白を無視、「-f」オプションで大文字小文字の区別を無視) |
split | 指定されたサイズでファイルを分割(デフォルトは1,000行で分割) |
uniq | 重複している行を1行にまとめて表示(「-d」オプションで重複している行のみ表示)(予めsortされている必要あり) |
pr | 印刷用にファイルの書式を整える(「pr -l 30 +1:5 data.txt」で data.txtファイルを1ページで30行として、1ページ目から5ページ目を出力) |
expand | ファイルのタブを空白に変換 |
unexpand | ファイルの空白をタブに変換 |
wc | ファイルの行数、単語数、文字数を表示(Word Count) |
grep | ファイルやテキストストリーム検索(正規表現でメタキャラを使った検索で良く使われる)オプションに「-E」をつけると正規表現、「-F」は正規表現ではなく固定文字、「-i」は大小区別しない |
sed | テキストストリーム編集(一致した文字を削除したり、置換できる(sed -e 's/xxx/XXX/g' ./hoge.txt(xxxをXXXへ置換、-eは正規表現、sは置換(dは削除)、gは1行に複数あった場合も置換))) |
od | バイナリファイルの内容をASCII文字、8進数、16進数のいずれかで表示 |
3. 基本的なファイル管理を行う
ファイル操作
コマンド | 説明 |
---|---|
ls | ディレクトリ内のファイルを表示 |
cp | ファイルやディレクトリをコピー |
mv | ファイルやディレクトリを移動 |
mkdir | ディレクトリを作成 |
rm | ファイルやディレクトリを削除 |
rmdir | からのディレクトリを削除 |
touch | ファイルのタイムスタンプを変更、ファイルが存在しない場合ファイルを作成 |
file | ファイルの種類を表示 |
アーカイブ・圧縮・解凍
- 「tar」コマンドは、複数ファイルをアーカイブ化する(「gzip」コマンドは圧縮、「tar」は1つにまとめるだけ)
- オプションの「-」は省略可(「tar zcf htttpd」で圧縮してアーカイブファイルを作成、「tar zxf htttpd.tar.gzip」で解凍してアーカイブからファイルを取り出す)
tar [オプション] [ファイル名]
オプション | 説明 |
---|---|
-c | アーカイブ作成 |
-x | アーカイブからファイルを取り出す |
-t | アーカイブの内容を確認する |
-f ファイル名 | アーカイブファイル名を指定する |
-z | gzipによる圧縮/展開を行う |
-j | bzip2による圧縮/展開を行う |
-v | 詳細な情報を表示する |
--delete | アーカイブからファイルを削除する |
- 「gzip」コマンドでファイルの圧縮・解凍ができる
gzip [オプション] [ファイル名]
オプション | 説明 |
---|---|
-d | 圧縮ファイルを解凍 |
-c | 圧縮ファイルを作成 |
-r | ディレクトリ内の全てのファイルを圧縮する |
cpio フラグ [ オプション ]
- 「 ls | cpio -o > /tmp/backup」でカレントディレクトリ以下を /tmp/backup ファイルとしてバックアップ
フラグ | 説明 |
---|---|
-i | アーカイブからファイルを抽出 |
-o | アーカイブの作成 |
-p | ファイルを別のディレクトリにコピー |
4. ストリーム、パイプ、リダイレクトを使う
- Linuxではデータをストリームとして扱うため、3つの基本的なインターフェースが定めらている
- 標準入力(入力元はキーボード)
- 標準出力(出力先は端末画面)
- 標準エラー出力(出力先は端末画面)
- 「tee」コマンドは、実行結果をファイルへ保存し、画面にも表示できる
- パイプは、「|」で実行結果を標準入力へ送る
- リダイレクトは、「>」で実行結果をファイルへ出力する
- コマンドを一切表示したくない(コマンドの実行のみしたい)場合、「コマンド > /dev/null 2>&1」とする(/dev/nullは特殊なファイルで入力された全てのデータを消し去る)
5. プロセスを生成、監視、終了する
- プロセスとは、OSからメモリ領域などの割り当てを受けて処理を実行しているプログラムのこと
- 同時にプログラムが実行されているように見えるのは、CPUの処理を細切れにしてごく短い時間で切り替えながら処理をしているから
- 「ps,top」コマンドでプロセスを監視できる(「ps -e」又は「ps ax」で実行中の全てのプロセスを確認できる)
- 「pstree」コマンドでプロセスの親子関係が階層型で表示される
- 「kill」コマンドでプロセスを終了できる
- シグナルIDは「15」が通常終了、「9」が強制終了
- 「kill 560」も「kill -15 560」も「kill -TERM 560」も「kill -s 15 560」も「kill -SIGTERM 560」も全て同じ結果
killコマンド書式) kill -[シグナル名またはシグナルID] PID kill -s [シグナル名またはシグナルID] PID kill -SIGシグナル名 PID
シグナル名 | シグナルID | 動作 |
---|---|---|
HUP | 1 | ハングアップ(設定の再読み込みがしたいときに使う) |
INT | 2 | キーボードからの割り込み(Ctrl+C) |
KILL | 9 | 強制終了 |
TERM | 15 | 終了(デフォルト) |
CONT | 18 | 停止しているプロセスを再開 |
STOP | 19 | 一時停止 |
ジョブ管理
- コマンドの最後に「&」を付けるとバックグランドで実行
- 「jobs」コマンドで実行中のジョブを確認出来る
- 「fg ジョブ番号」でバックグラウンドで実行中ジョブをフォアグラウンドへ
- 「bg ジョブ番号」でフォアグラウンドで実行中ジョブをバックグラウンドへ
- 手順例
- コマンド実行
- 「Ctr+z」で処理一時停止
- 「jobs」コマンドでジョブ番号を確認し、再開または停止を実行する
- フォアグラウンドで再開:「fg ジョブ番号」
- バックグラウンドで再開:「bg ジョブ番号」(1. コマンド実行の時に「&」をつけて実行した場合と同じ)
- 停止:「ps」コマンドでプロセスIDを確認し、「kill プロセスID」で処理を停止(「jobs」コマンドで一覧からジョブが削除されている)
- 「nohup」コマンドを実行したいコマンドの最初につけるとログアウトしても実行し続ける
6. プロセスの実行
- プロセスには優先度があり、優先度が高いプロセセスはより多くCPU時間を割り当てられる
- 「ps -l」または「top」コマンドで優先度が確認出来る
- 「nice」コマンドでプロセスの優先度が指定できる
- 「ナイス値」は「-20〜19」までで、小さいほど優先順位が高くなる(-20が最優先)(優先度を高く出来るのはrootのみ)
- 実行中のプロセスは「renice」コマンドで優先度を変更できる
7. 正規表現を使用してテキストを検索する
- a[357]...:「a」で始まる5文字、2文字目が「3or5or7」
- ;$:行末が「;」
- ^[0-9].*[a-z]$:行頭が「0〜9」、行末が「a~z」
記号 | 説明 |
---|---|
. | 任意の一文字 |
* | 0文字以上の文字列 |
[] | いずれか1文字 |
^ | 行頭 |
$ | 行末 |
8. viを使って基本的なファイル編集を行う
vi [-R] [ファイル名](-Rで読み取りモード)
- 入力には、「i,a」等
- カーソル操作は。「0,$,gg,G」等
- 削除は、「x,dd」等
入力モード
コマンド | 説明 |
---|---|
i | カーソルの前にテキスト入力 |
a | カーソルの後ろにテキスト入力 |
I | 行頭にテキスト入力 |
A | 行末にテキスト入力 |
コマンドモード
カーソル操作
コマンド | 説明 |
---|---|
0 | 行頭へ移動 |
$ | 行末へ移動 |
H | 画面の先頭へ移動 |
L | 画面の最終部へ移動 |
w | 次の単語へ移動 |
b | 前の単語へ移動 |
gg | ファイルの先頭行へ移動 |
G | ファイルの最終行へ移動 |
nG | n行目に移動(「:n」も同じ) |
終了
コマンド | 説明 |
---|---|
:q | 保存せずに終了 |
:q! | 保存せずに終了(ファイル変更時) |
:w | 保存 |
:wq | 保存して終了(「ZZ」「:x」も同じ) |
:e! | 前回の保存時の状態に戻る |
編集
コマンド | 説明 |
---|---|
x | カーソルの1文字削除 |
X | カーソル前の1文字削除 |
r | カーソルの1文字置換 |
dd | カレントの1行削除 |
dw | カーソル文字から次の単語までまとめて削除 |
yy | カレント行コピー |
p | カーソルの後ろに貼り付け |
P | カーソルの前に貼り付け |
u | 前回の作業の取り消し |
検索
コマンド | 説明 |
---|---|
/ パターン | カーソルから後ろへパターン検索 |
? パターン | カーソルから前へパターン検索 |
n | 次の検索結果へ |
N | 前の検索結果へ |
その他(補足)
- コマンドモードには、大きく分けて「オペレータ」と「モーション」の2種類がある
- 「オペレータ」+「コマンド」でコマンドを実行する
- オペレータ: 動詞として動作を指定する「c」「d」「y」「g」の4つ
- c : change (変更)
- d : delete (削除)
- y : yank (ヤンク: コピーと同義)
- g : go (移動全般)
- モーション: 対象範囲を指定する
- オペレータ: 動詞として動作を指定する「c」「d」「y」「g」の4つ
例)「dw」(カーソル文字から次の単語までまとめて削除)は、dがオペレータでwがモーション 他にも、「yw」で単語コピー出来たり組合せ色々
- 入力モードとコマンドモード以外にビジュアルモード(vキー)もある
- 範囲指定してコピーしたいときなど、ビジュアルモードで範囲指定してyキーでコピーが出来る
使用した教材
101-2. Linuxのインストールとパッケージ管理
- ハードディスクのレイアウト設計
- 「/home,/var,/usr,/boot,/,スワップ領域」の6つでパーテションがレイアウトされているのが一般的
- ブートマネージャのインストール
- 共有ライブラリを管理する
- 静的ライブラリと共有ライブラリがある
- 「ldd」コマンドで共有ライブラリを調べられる
- /etc/ld.so.confファイルを変更し、「ldconfig」コマンドで読み込む共有ライブラリが変更できる
- Debianパッケージ管理を使用する
- 「dpkg」「apt-get」がある
- 「dpkg -i パッケージ名」でインストール、「dpkg -q パッケージ名」で設定ファイルも含めアンインストール
- 「apt-get install パッケージ名」でインストール、「apt-get update」でパッケージのDB更新、「apt-get upgrate」で全パッケージアップグレード
- 他にも「apt-cache」「aptitude」がありパッケージの照会が出来る
- RPMおよびYUMパッケージ管理を使用する
1. ハードディスクのレイアウト設計
- ハードディスクは少なくても2つのパーテーションが必要
- ルートパーテーション
- スワップ領域
- さらにいくつかパーテーションを分割するのが一般的
パーテーション | 説明 |
---|---|
/home | ユーザーが利用するファイル等 |
/var | ログファイル等更新されるファイル類 |
/usr | 各種プログラムやライブラリ、ドキュメント等 |
/boot | システムの起動に必要なファイル |
スワップ領域 | 仮想メモリ領域(物理メモリ不足時のメモリの役割)(サイズの目安は物理メモリの1〜2倍) |
/ | 上記以外はルートファイルシステム(/ディレクトリに格納されたパーテーション) |
2. ブートマネージャのインストール
BIOS→ブートローダ→カーネル→init ↑コレ
- 代表的なブートローダ(ブートマネージャ)にGRUBがある
- バージョン0.9系のGRUB Legacyと、バージョン1.9系のGRUB2がある
- 「grub-install /dev/hda」コマンドでgrubをインストール出来る(/dev/hdaのMBR領域にGRUBをインストール)
GRUB Legacy
GRUB2
GRUBとGRUB2の主な違い
GRUB | GRUB2 | |
---|---|---|
インストールコマンド | /sbin/grub-install | /sbin/grub-install |
主な設定ファイル | /boot/grub/menu.lst | /boot/grub/grub.cfg/etc/default/grub/etc/grub.dディレクトリ以下のファイル |
設定ファイル編集後に変更内容を反映するコマンド | 不要 | /usr/sbin/update-grub |
パーティション番号の表記方法 | hd0,0(1番目のパーティションは0からカウント) | hd0,1(1番目のパーティションは1からカウント) |
3. 共有ライブラリを管理する
- ライブラリとは、他のプログラムから利用できるようまとめた機能で2種類ある
- 静的ライブラリ(プログラム作成時に読み込まれる)
- 共有ライブラリ(プログラム実行時に読み込まれ共通化)
- スタティックリンクとダイナミックリンクあり、ライブラリをリンクする
- ダイナミックリンクによって呼ばれるライブラリを共有ライブラリと呼び、libreadline.so.5のように「lib〜.so〜」という名前が付けられている
- 共有ライブラリファイルは通常、/lib、/usr/libに配置されている
- 「ldd」コマンドで共有ライブラリを調べられる
- 共有ライブラリのロードするライブラリを変更する方法はつぎの通り
- 「/etc/ld.so.conf」ファイルに変更したい共有ライブラリ設定
- 「ldconfig」コマンド実行(/etc/id.so.cacheが更新される)
- 他のディレクトリも共有ライブラリの検索対象に追加したい場合は、環境変数「LD_LIBRARY_PATH」にディレクトリを追加する
4. Debianパッケージ管理を使用する
系統 | ディストリビューション | 代表的パッケージ |
---|---|---|
Ubuntu系 | Debian GNU/Linux,Ubuntu,Linux Mint,Edubuntu | Debian |
Red Hat系 | Fedora,Red Hat Enterprise Linux,CentOS | RPM |
dpkg
dpkg [オプション] アクション
- 「/etc/dpkg/dpkg.cfg」が設定ファイル
オプション | 説明 |
---|---|
-E | 既に同一バージョンがインストールされていればインストールしない |
-G | 既に新バージョンがインストールされていればインストールしない |
-R | ディレクトリ内を再帰的に処理 |
アクション | 説明 |
---|---|
-i パッケージ名(--install) | パッケージをインストール |
-r パッケージ名(--remove) | 設定ファイルを残しアンインストール |
-P パッケージ名(--purge) | 設定ファイルも含めアンインストール |
-S ファイル名検索パターン(--search) | 指定したファイルがどのパッケージからインストールされたかを表示 |
-l 検索パターン(--list) | インストール済みのパッケージを検索して表示(検索パターンを設定しない場合全パッケージ一覧が表示される) |
-L パッケージ名(--listfiles) | 指定パッケージからインストールされたファイルを一覧表示 |
-s パッケージ名(--status) | パッケージ情報を表示 |
- 「dpkg-reconfigure」コマンドでインストール済みのパッケージを再設定できる
apt-get
apt-get [オプション] サブコマンド パッケージ名
- 「/etc/apt/sources.list」ファイルにパッケージを管理しているサイトのURLを記述する
オプション | 説明 |
---|---|
-d | ファイルをダウンロード(インストールしない) |
-s | システムを変更せずにシュミレートする |
サブコマンド | 説明 |
---|---|
dist-upgrade | Debianのシステムを最新にアップグレードする |
install | パッケージをインストールまたはアップグレード |
remove | パッケージをアンインストール |
update | パッケージデータベースを更新 |
upgrade | システム全パッケージのアップデート |
clean | ダウンロードしたパッケージファイルを削除 |
apt-cache, aptitude
- 「apt-cache」コマンドとは、パッケージ情報を照会・検索できるコマンド
apt-cache [サブコマンド]
サブコマンド | 説明 |
---|---|
search キーワード | 指定したキーワードを含むパッケージを探す |
show パッケージ名 | パッケージについて詳細情報を表示する |
showpkg パッケージ名 | パッケージについて情報を表示する |
depends パッケージ名 | 指定したパッケージの依存関係を表示する |
- 「aptitude」コマンドとは、「apt-get」コマンドより高度な機能を持ったコマンド
aptitude [サブコマンド]
5. RPMおよびYUMパッケージ管理を使用する
rpm
- モードがあり、モード別に多彩なオプションが用意されている
rpm オプション
モード | オプション | 説明 |
---|---|---|
インストール・アップグレード | -i パッケージ名 | パッケージのインストール |
-U パッケージ名 | パッケージのアップグレード(なければインストール) | |
-F パッケージ名 | パッケージのアップグレード(なければインストールしない) | |
アンインストール | -e パッケージ名 | パッケージのアンインストール |
照会 | -q パッケージ名 | 指定したパッケージがインストールされているか照会 |
-V パッケージ名 | パッケージを検査 |
- イントール・アップグレード併用オプション
- -v:詳細な情報を表示(モードの照会の-Vと紛らわしい)
- -h(--hash):進行状況を「#」で表示
- --nodeps:依存関係を無視してインストール
- --test:実際にはインストールせずテストで実施
- アンインストールモード併用オプション
- --nodeps:依存関係を無視してアンインストール
- 照会モード併用オプション
- -a(--all):インストール済みのすべてのパッケージを表示
- -f ファイル名:指定したファイルを含むパッケージを表示
- -p パッケージファイル名:対象としたパッケージを指定
- -i(--info):インストール済みパッケージ情報を表示(モードのインストールの-iと紛らわしい)
- -l(--list):指定したパッケージに含まれるファイルを表示
- --changelog:変更履歴を表示
yum
yum サブコマンド
サブコマンド | 説明 |
---|---|
check-update | アップデート対象のパッケージリストを表示 |
install パッケージ名 | パッケージのインストール |
update パッケージ名 | パッケージのアップデート(パッケージ名省略で全パッケージアップデート) |
remove パッケージ名 | パッケージのアンインストール |
info パッケージ名 | パッケージ情報の表示 |
list | パッケージ一覧の表示 |
search キーワード | パッケージ情報を検索し表示 |
- パッケージファイルのダウンロードだけしたい場合、「yumdownloader」コマンドを使う
- 「/etc/yum.repos.d/」にパッケージの取得元(リポジトリ)を設定するファイルが格納されている
- 設定ファイルは「/etc/yum.conf」(体に影響を与える Yum オプションを設定できる)
おまけ
- パッケージとは、実行プログラム、ライブラリ、設定ファイル、ドキュメント等を1つにまとめたもの
パーテーションの分割例
パーテーション | ファイルサーバ(HD:200GB,メモリ:1GB,ユーザー数:100人) | Webサーバ(HD:100GB,メモリ:4GB,Webサーバ:Apache) |
---|---|---|
スワップ | 1GB | 4GB |
/boot | 100MB | 100MB |
/usr | 10GB | 10GB |
/var | 10GB | 20GB |
/var/log | - | 50GB(Apacheのログファイル用) |
/ | 1GB | 15GB |
/home | 177GB |
使用した教材
101-1. システムアーキテクチャ
- ハードウェア設定の決定と構成
- ハードウェアの種類、proc以下でデバイス情報を確認できる
- システムのブート
- ランレベルの変更とシステムシャットダウンまたはリブート
1. ハードウェア設定の決定と構成
基本的なシステムハードウェア
- CPU, メモリ, ハードディスク,入力装置,拡張カード,USB機器等
デバイスの確認
- Linuxカーネルが認識しているデバイスに関する情報(プロセス情報)は、/proc以下のファイルで確認できる
- /proc/bus/usb/等
- 「lsusb」コマンドや「lspci」コマンドでもデバイスの確認は出来る(オプションに-vvをつけて実行すると詳細な情報が確認出来る)
- ファイルの中身は「/dev」に格納されている(「/proc」はデバイスに関する情報、「/dev」はデバイス自体)
- 「lsmod」コマンドは、ロードされているカーネルモジュールを確認できる
- 「modprobe」コマンドは、手動でカーネルモジュールをロード出来る(「modprobe ドライバ名」で実行)
2. システムのブート
- BIOS→ブートローダ→カーネル→init
- 「dmesg」コマンドで起動時のイベントを確認出来る
- 「/var/log/messages」にも起動時のメッセージが記録されている
- 「init」はLinuxで最初に実行されるプロセス
- 「/etc/inittab」ファイルの設定に従い、システムに必要なサービスを起動
3. ランレベルの変更とシステムシャットダウンまたはリブート
ランレベル
- ランレベルとは、実行レベルと呼ばれるいくつかの動作モード
- 1(1人)又はS(シングル)はシングルモード、2~5はマルチ、0は停止、6は再起動
- 「runlevel」コマンドで、現在のランレベルの確認
- 「init 2」コマンドで、ランレベルを変更(引数の2はランレベル2を指定している)
- 「/etc/rc<ランレベル>.d」に起動又は終了するスクリプトが格納されている
- 「/etc/inittab」でデフォルトのランレベルを変更できる
システムのシャットダウン
# shutdown [オプション] 時間 [メッセージ]
オプション | 説明 |
---|---|
-h | 停止 |
-r | 再起動 |
-f | 次回起動時fsckをスキップ |
-F | 次回起動時fsckを実行 |
-k | 停止せず、警告のみ |
-c | 停止をキャンセル |
おまけ
pci
- PCIとは、パソコン内部の各パーツ間を結ぶバス(データ伝送路)の規格
- PCIバス(マザーボードにある白い部分) - PCIカード(PCIバスにさしてインターフェースに出来る、写真はUSBの拡張カード)
プラグイン、ライブラリ、コンポーネント、モジュールの違い
業務のドメインや会社・組織、部署、チーム、はてはプロジェクトごとに、コンポーネント、モジュール、その他もろもろの定義はぜんぜん違うので参考までに。
項目 | 説明 | 単体動作 | 有名なソフトウェア | 備考 |
---|---|---|---|---|
プラグイン | ソフトウェアを拡張するためのプログラム。ソフトウェアを使用する人が入替可能なプログラムの一部のこと | ☓ | FireFoxのプラグイン等 | |
ライブラリ | 有用で汎用性の高い関数・クラス・その他を再利用可能な形でひとまとめにしたもの。プラグインとの違いは汎用性。特定のソフトウェアを対象としてかかれていない。 | △ | コマンドで使う時のファイル | $ ldd /bin/cplinux-gate.so.1 => (0x0083b000) |
コンポーネント | ソフトウェアの部品。ある機能を持ったプログラムの部品。 | △ | ||
モジュール | ソフトウェアの部品。ある手続き (関数やメソッド) とデータ構造をひとまとめにした部品。 | △ | $ lsmod Module Size Used by vboxsf 35545 1 |
コンポーネントはソフトウェアの部品で、モジュールもソフトウェアの部品です。
モジュールはある手続き (関数やメソッド) とデータ構造をひとまとめにした部品です。 大抵の場合、モジュール単体でコンパイル可能ですが、動作はしません。 この説明だけだと、クラスとモジュールの違いがわからなくなりますが、一番大きな違いは、クラスはインスタンスとしてオブジェクトを生成しますが、モジュールは生成しない点でしょう。
コンポーネントはある機能を持ったプログラムの部品です。
大抵の場合、コンポーネント単体では動作しません。
非常に漠然とした回答で申し訳ないですが、モジュールを複数組み合わせた位のモノがコンポーネントと思っていただければありがたいです。
粒度的には
プログラム (←これ単体でやっと動く) > コンポーネント > モジュール > クラス
です。
参考:http://okwave.jp/qa/q5956620.html
使用した教材
LPIC101,102
- lpic level1 を自分用にまとめました(インフラエンジニアではないので基本的な事が中心です)
- また、教材(Linux教科書 LPICレベル1 第5版 version3.5対応)の各章と出題範囲の記載順がずれていたので出題範囲順に変更して書いています
101
- システムアーキテクチャ
- ハードウェア設定の決定と構成
- システムのブート
- ランレベルの変更とシステムシャットダウンまたはリブート
- Linuxのインストールとパッケージ管理
- GNUとUnixのコマンド
- コマンド行で操作する
- ファイルを使ってテキストストリームを処理する
- 基本的なファイル管理を行う
- ストリーム、パイプ、リダイレクトを使う
- プロセスを生成、監視、終了する
- プロセスの実行
- 正規表現を使用してテキストを検索する
- viを使って基本的なファイル編集を行う
- デバイス、Linuxファイルシステム階層標準
102
- シェル、スクリプト、およびデータ管理
- ユーザインターフェイスとデスクトップ
- 管理業務
- ユーザアカウント、グループアカウント、および関連するシステムファイルを管理する
- ジョブスケジューリングによるシステム管理業務の自動化
- ローカライゼーションと国際化
- 重要なシステムサービス
- システム時刻を維持する
- システムのログ
- メール転送エージェント(MTA)の基本
- プリンターと印刷を管理する
- ネットワークの基礎
- インターネットプロトコルの基礎
- 基本的なネットワーク構成
- 基本的なネットワークの問題解決
- クライアント側のDNS設定
- セキュリティ
- セキュリティ管理業務を実施する
- ホストのセキュリティ設定
- 暗号化によるデータの保護
練習問題
勉強におすすめのサイト
おすすめの勉強方法
- 「Linux教科書」を読む
- 「Linux教科書」の内容をLinux環境で試す(教材を読むだけだと記憶の定着が弱かったり、勘違いして覚える事がある(VirtualBoxが簡単に環境構築できるのでおすすめ、実務で関われてたらベスト))
- 「徹底攻略 LPI問題集」を解く、間違った部分を繰り繰り返す
- ping-t 101をやる(完璧だと思ってても結構記憶が怪しい部分が見えてきます。選択方式ではなく、入力方式なので記憶に残りやすいです。)
- 間違った部分を「Linux教科書」とLPIC イージスで復習する
- 4~5を繰り返す(正解率が8割以上になれば受かると思います。徹底攻略 LPI問題集やpig-t.comにない問題も2割くらいでます。問題も少し難しい気がします。(過去問では、何々出来るファイルは何?とかの問いに対して、試験はそのファイルの書式まで踏み込んだ質問が多い)試験料が高価なので確実にしましょう。)
合格率
- 合格率は34%程度?(合格率は公表されていないと思うのであくまで予想です、LPICの魅力をデータで見る|IT資格といえば Linux技術者認定試験LPIC)
- 試験の点数は200-800点の間で、500点以上で合格(単純計算だと50%以上取ってれば合格ですが、65%で500点くらいです)
・ 2015年8月時点 国内累計受験者数:260,000人 国内累計認定者数: LPICレベル1 ---- 62,000人 LPICレベル2 ---- 15,000人 LPICレベル3 ---- 11,000人 ---------------------------------- 合計 __________ 88,000人 88000/260000 = 0.34
感想
- Linuxの基本を抑えるのに良い(コマンドやパッケージ、ネットワーク、セキュリティ等自分が知りたい部分が網羅的に学べる)
- 勉強のためにブログを書いたが、勉強時間が2倍位になった気がする(もっとライトに残すべきだった)
- LPIC イージスが非常に分かりやすく書いてあるので、わざわざブログに残す必要なかったかな。。。
- 同じ意味で一部のルールがバラバラで覚えにくかった(設定ファイルが「.conf」だったり「.config」だったり「_config」だったり「ファイル名」だけだったり、削除がrだったりrmだったりdelだったり)
- 試験だけ受かっても、実務で使わないとかなり忘れる。業務とは別に頑張る!