amarron2’s blog

linuxや資格関係の記事を書きます。基本自分用のメモです。

102-1. シェル、スクリプト、およびデータ管理

  1. シェル環境のカスタマイズと使用
    • 変数は、環境変数とシェル変数の2種類
    • 「set」コマンドで変数の確認が出来る
      • set:環境変数、シェル変数一覧表示
      • set -o:設定されているオプション一覧表示
      • set +o オプション名:オプションを有効
      • set -o オプション名:オプションを無効
    • 「alias」コマンドでエイリアスを設定できる(alias ls='ls -l')
    • 「function」コマンドで独自の関数を定義できる
    • bashの設定ファイルに設定を書き込むと自動でsetやalias、function等の設定が有効になる
  2. 簡単なスクリプトをカスタマイズまたは作成する
    • 「source シェル名」でシェルを実行できる(「source」は「.」でも実行可能)
    • testで条件式(「test 条件式」は、「[条件式]」と同じ)
    • if,case,for,while,read等の構文がある
  3. SQLデータ管理
    • 表の操作には「DDL」と「DML」がある
      • DDL(Data Definition Language):データ定義(CREATE,DROP,ALTER等)
      • DML(Data Manipulation Language):データ操作(SELECT,INSERT等)

1. シェル環境のカスタマイズと使用

環境変数とシェル変数

  • シェルは、ユーザー毎に異なる環境を用意できる
  • 変数は、環境変数とシェル変数の2種類がある
    • 環境変数:シェル自身とそのシェルから起動される全てのプロセスで有効(PATH,HOME等(printenvコマンドで確認出来る))
    • シェル変数:そのシェル内のみで有効(setコマンドで環境変数とシェル変数が確認できる)

シェルのオプション

  • シェルには様々なオプション機能があり、「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]$ 

エイリアス

  • エイリアスとは、コマンドに別名つけたりコマンドとオプションをひとまとめにして新しいコマンドのようしたりできる
    • 「alias」コマンドでエイリアスを作成できる
    • 「unalias」コマンドでエイリアスを解除できる
    • 一時的にエイリアスを使用しないで実行したい場合、「\」をつけて実行する
エイリアスの使用例)
[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の設定ファイル

  • シェルを起動するたびに、環境変数エイリアス、関数などを定義するのは非効率
  • 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データ管理

  • データを表計算ソフトのような表(テーブル)に保存出来る
    • 表自体は、テーブル
    • 表の縦列は、フィールド
    • 表の横列は、レコード
    • 表の項目名は、カラム
  • 表の操作には「DDL」と「DML」がある
    • DDL(Data Definition Language):データ定義(CREATE,DROP,ALTER等)
    • DML(Data Manipulation Language):データ操作(SELECT,INSERT等)

DML

「SELECT」文でレコードを参照

SELECT カラム名 FROM テーブル名

  • 「WHERE 条件」で参照するレコードを絞れる
  • 「ORDER BY カラム名」で表示順を指定できる
  • 「GROUP BY カラム名」でグループ化できる
  • 「JOIN」でテーブルを結合できる

「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!

使用した教材

LPIC101,102

101-4. デバイス、Linuxファイルシステム階層標準

  1. パーティションとファイルの作成
  2. ファイルのシステムの整合性を保持する
    • 「df,du」コマンドで利用状況や容量を確認できる
    • fsck」コマンドでディスクのチェックや修復ができる
    • 「tune2fs」コマンドでext2/ext3/ext4ファイルシステムのパラメータを調整できる
  3. ファイルのマウントとアンマウントをコメントロールする
    • 「mount」コマンドでファイルシステムをマウントができる
    • 「umount」コマンドでファイルシステムをマウント解除ができる
    • SUID(u+s)、SGID(g+s)で実行権限を所有者またはグループ者が実行したことにできる
    • スティッキービット(o+t)で所有者以外は削除できなくできる
  4. ディスククォータを管理する
    • ハードリミット、ソフトリミットがある
    • 「quota」コマンドでユーザごとのディスク使用量とクォータの状況を確認できる
  5. ファイルのパーミッションと所有者を管理する
    • 「chmod,chgrp」コマンドで権限が変更できる
    • 「chown」コマンドで所有者が変更できる
    • 「umask」コマンドでumask値の確認や変更が出来る
  6. ハードリンクとシンボリックリンクを作成・変更する
  7. システムファイルを見つける、適切な位置にファイルを配置する
    • 「find」コマンドでファイルを検索できる

note

f:id:Amarron:20150816114455p:plain

1. パーティションとファイルの作成

パーティション

f:id:Amarron:20150714075140p:plain

fdisk [-l] デバイス名
実行モードコマンド 説明
l パーティションタイプを一覧表示
n パーティションを作成
d パーティションを削除
p パーティショテーブルを表示
w パーティションテーブルを保存して終了
q パーティションテーブルを保存しないで終了
m ヘルプメニューを表示

ハードディスク

  • 様々な接続形態があり、現在では「SATA」がPC標準になっている

f:id:Amarron:20150726122715j:plain

デバイスファイル

  • デバイスファイルとは、ハードディスクや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」:デバイスファイル

f:id:Amarron:20150714075316p:plain

ファイルシステム

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 詳細な情報を表示

クォータの適用手順

  1. 「/etc/fstab」ファイルにマウントオプションの指定に「usrqouta」を追加する
  2. 対象のディレクトリをマウントし直す
  3. 対象のディレクトリ直下に「aquota.user」ファイルを作成しアクセス権(600)を設定する
  4. 「quotacheck」コマンドでデータベースを初期化する([quotacheck ディレクトリ名])

    • 「quotacheck」コマンドは、ファイルシステムを調べディスク使用量をチェックする。「aquota.user」「aquota.group」に保存される。
  5. 「qauotaon」コマンドでクォータを有効にする([qauotaon ディレクトリ名])

  6. 「edquota」コマンドでユーザーごとのクォータを設定する([edquota ユーザー名])(viエディタが起動する)

  7. 「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 ユーザ名 ファイルの所有者で検索

使用した教材

LPIC101,102

101-3. GNUとUnixのコマンド

  1. コマンド行で操作する
    • シェルでコマンドを実行でき、変数にはシェル変数と環境変数がある
  2. ファイルを使ってテキストストリームを処理する
    • 「cat,head,tail等」コマンドでファイルを扱える
    • リダイレクト(>)で出力結果をファイルへ書き込める
  3. 基本的なファイル管理を行う
    • 「ls,cp,mv,file等」コマンドでファイルの確認や操作が出来る
    • 「tar」コマンドアーカイブ、「gzip,gunzip,bzip2」で圧縮・解凍
  4. ストリーム、パイプ、リダイレクトを使う
    • データをストリームとして扱うための3つインターフェイス(標準入力・標準出力、標準エラー出力
    • パイプは、「|」で実行結果を標準入力へ送る
    • リダイレクトは、「>」で実行結果をファイルへ出力する
  5. プロセスを生成、監視、終了する
    • 「ps,top」コマンドでプロセスを監視できる
    • 「kill」コマンドでプロセスを終了できる
    • 「&」でバックグランド実行、「nohup」でログアウト中も実行
    • 「jobs」コマンドで実行中ジョブの確認(「fg ジョブ番号」「bg ジョブ番号」でバックグラウンドとフォアグラウンドを切り替え)
  6. プロセスの実行
    • 「nice」コマンドでプロセスの優先度が指定できる
    • 実行中のプロセスは「renice」コマンドで優先度を変更できる
  7. 正規表現を使用してテキストを検索する
    • ^[0-9].*[a-z]$:行頭が「0〜9」、行末が「a~z」
  8. 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」コマンドでファイルの圧縮・解凍ができる
    • オプションを指定しなかった場合、指定したファイルが直接圧縮される
    • 圧縮されたファイルの拡張子は「.gz」
    • 「.gz」拡張子は「gunzip」コマンドでも解凍出来る
    • 「.bz2」拡張子は「bunzip2」コマンド

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 ジョブ番号」でフォアグラウンドで実行中ジョブをバックグラウンドへ
    • 手順例
      1. コマンド実行
      2. 「Ctr+z」で処理一時停止
      3. 「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 (移動全般)
    • モーション: 対象範囲を指定する
例)「dw」(カーソル文字から次の単語までまとめて削除)は、dがオペレータでwがモーション
  他にも、「yw」で単語コピー出来たり組合せ色々
  • 入力モードとコマンドモード以外にビジュアルモード(vキー)もある
  • 範囲指定してコピーしたいときなど、ビジュアルモードで範囲指定してyキーでコピーが出来る

使用した教材

LPIC101,102

101-2. Linuxのインストールとパッケージ管理

  1. ハードディスクのレイアウト設計
    • 「/home,/var,/usr,/boot,/,スワップ領域」の6つでパーテションがレイアウトされているのが一般的
  2. ブートマネージャのインストール
  3. 共有ライブラリを管理する
    • 静的ライブラリと共有ライブラリがある
    • 「ldd」コマンドで共有ライブラリを調べられる
    • /etc/ld.so.confファイルを変更し、「ldconfig」コマンドで読み込む共有ライブラリが変更できる
  4. Debianパッケージ管理を使用する
    • 「dpkg」「apt-get」がある
    • 「dpkg -i パッケージ名」でインストール、「dpkg -q パッケージ名」で設定ファイルも含めアンインストール
    • 「apt-get install パッケージ名」でインストール、「apt-get update」でパッケージのDB更新、「apt-get upgrate」で全パッケージアップグレード
    • 他にも「apt-cache」「aptitude」がありパッケージの照会が出来る
  5. RPMおよびYUMパッケージ管理を使用する
    • rpm」「yum」がある
    • rpm -i パッケージ名」でインストール、「rpm -e パッケージ名」でアンインストール
    • yum install パッケージ名」でインストール、「yum remove パッケージ名」でアンインストール

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

  • GRUB Legacyの設定ファイルは「/boot/grub/menu.lst」(直接ファイルを編集して設定を変更)

GRUB2

  • GRUB2の設定ファイルは「/boot/grub/grub.cfg」(直接ファイル編集できない)
  • 「update-grub」コマンドで設定変更

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」コマンドで共有ライブラリを調べられる
  • 共有ライブラリのロードするライブラリを変更する方法はつぎの通り
    1. 「/etc/ld.so.conf」ファイルに変更したい共有ライブラリ設定
    2. 「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つにまとめたもの

f:id:Amarron:20150801235409j:plain

パーテーションの分割例

パーテーション ファイルサーバ(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

使用した教材

LPIC101,102

101-1. システムアーキテクチャ

  1. ハードウェア設定の決定と構成
    • ハードウェアの種類、proc以下でデバイス情報を確認できる
  2. システムのブート
  3. ランレベルの変更とシステムシャットダウンまたはリブート

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. ランレベルの変更とシステムシャットダウンまたはリブート

ランレベル

システムのシャットダウン

# shutdown [オプション] 時間 [メッセージ]
オプション 説明
-h 停止
-r 再起動
-f 次回起動時fsckをスキップ
-F 次回起動時fsckを実行
-k 停止せず、警告のみ
-c 停止をキャンセル

おまけ

pci

  • PCIとは、パソコン内部の各パーツ間を結ぶバス(データ伝送路)の規格

f:id:Amarron:20081015143114j:plain - PCIバス(マザーボードにある白い部分) f:id:Amarron:20050224012434j:plain - 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

LPIC101,102

f:id:Amarron:20150719223518j:plain

  • lpic level1 を自分用にまとめました(インフラエンジニアではないので基本的な事が中心です)
  • また、教材(Linux教科書 LPICレベル1 第5版 version3.5対応)の各章と出題範囲の記載順がずれていたので出題範囲順に変更して書いています

www.lpi.or.jp

101

  1. システムアーキテクチャ
    1. ハードウェア設定の決定と構成
    2. システムのブート
    3. ランレベルの変更とシステムシャットダウンまたはリブート
  2. Linuxのインストールとパッケージ管理
    1. ハードディスクのレイアウト設計
    2. ブートマネージャのインストール
    3. 共有ライブラリを管理する
    4. Debianパッケージ管理を使用する
    5. RPMおよびYUMパッケージ管理を使用する
  3. GNUとUnixのコマンド
    1. コマンド行で操作する
    2. ファイルを使ってテキストストリームを処理する
    3. 基本的なファイル管理を行う
    4. ストリーム、パイプ、リダイレクトを使う
    5. プロセスを生成、監視、終了する
    6. プロセスの実行
    7. 正規表現を使用してテキストを検索する
    8. viを使って基本的なファイル編集を行う
  4. デバイス、Linuxファイルシステム階層標準
    1. パーティションとファイルの作成
    2. ファイルのシステムの整合性を保持する
    3. ファイルのマウントとアンマウントをコメントロールする
    4. ディスククォータを管理する
    5. ファイルのパーミッションと所有者を管理する
    6. ハードリンクとシンボリックリンクを作成・変更する
    7. システムファイルを見つける、適切な位置にファイルを配置する

102

  1. シェル、スクリプト、およびデータ管理
    1. シェル環境のカスタマイズと使用
    2. 簡単なスクリプトをカスタマイズまたは作成する
    3. SQLデータ管理
  2. ユーザインターフェイスとデスクトップ
    1. X11のインストールと設定
    2. ディスプレイマネージャの設定
    3. アクセシビリティ
  3. 管理業務
    1. ユーザアカウント、グループアカウント、および関連するシステムファイルを管理する
    2. ジョブスケジューリングによるシステム管理業務の自動化
    3. ローカライゼーションと国際化
  4. 重要なシステムサービス
    1. システム時刻を維持する
    2. システムのログ
    3. メール転送エージェント(MTA)の基本
    4. プリンターと印刷を管理する
  5. ネットワークの基礎
    1. インターネットプロトコルの基礎
    2. 基本的なネットワーク構成
    3. 基本的なネットワークの問題解決
    4. クライアント側のDNS設定
  6. セキュリティ
    1. セキュリティ管理業務を実施する
    2. ホストのセキュリティ設定
    3. 暗号化によるデータの保護

練習問題

勉強におすすめのサイト

おすすめの勉強方法

  1. Linux教科書」を読む
  2. Linux教科書」の内容をLinux環境で試す(教材を読むだけだと記憶の定着が弱かったり、勘違いして覚える事がある(VirtualBoxが簡単に環境構築できるのでおすすめ、実務で関われてたらベスト))
  3. 「徹底攻略 LPI問題集」を解く、間違った部分を繰り繰り返す
  4. ping-t 101をやる(完璧だと思ってても結構記憶が怪しい部分が見えてきます。選択方式ではなく、入力方式なので記憶に残りやすいです。)
  5. 間違った部分を「Linux教科書」とLPIC イージスで復習する
  6. 4~5を繰り返す(正解率が8割以上になれば受かると思います。徹底攻略 LPI問題集やpig-t.comにない問題も2割くらいでます。問題も少し難しい気がします。(過去問では、何々出来るファイルは何?とかの問いに対して、試験はそのファイルの書式まで踏み込んだ質問が多い)試験料が高価なので確実にしましょう。)

合格率

・ 2015年8月時点

国内累計受験者数:260,000人
国内累計認定者数:
LPICレベル1 ---- 62,000人
LPICレベル2 ---- 15,000人
LPICレベル3 ---- 11,000人
----------------------------------
合計 __________ 88,000人

88000/260000 = 0.34

f:id:Amarron:20151004173104p:plain

感想

  • Linuxの基本を抑えるのに良い(コマンドやパッケージ、ネットワーク、セキュリティ等自分が知りたい部分が網羅的に学べる)
  • 勉強のためにブログを書いたが、勉強時間が2倍位になった気がする(もっとライトに残すべきだった)
  • LPIC イージスが非常に分かりやすく書いてあるので、わざわざブログに残す必要なかったかな。。。
  • 同じ意味で一部のルールがバラバラで覚えにくかった(設定ファイルが「.conf」だったり「.config」だったり「_config」だったり「ファイル名」だけだったり、削除がrだったりrmだったりdelだったり)
  • 試験だけ受かっても、実務で使わないとかなり忘れる。業務とは別に頑張る!

使用した教材