SlideShare a Scribd company logo
1 of 109
Download to read offline
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




                         インターリンク株式会社
                         ICTサービス事業部 ネットワーク課
                                      濱田 康貴


           インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


自己紹介

名前:      濱田 康貴 (はまだ やすたか)
所属:      インターリンク株式会社
         http://www.interlink.ne.jp/

職業:      インフラエンジニア
趣味:      Linux、自転車、勉強会参加とか運営とか
7つ道具:    vim bash パワポ netstat ps grep awk
将来の夢:    GEEK団地(データセンタ併設住宅) 建設


                        インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


今日のおしながき

1. シェルスクリプトの基礎知識 ~ どんなことができるの? ~
2. シェルスクリプトのおやくそく
3-1. テキスト処理の効率化とログ解析サンプル
3-2. 簡単なルーチンワークと監視プログラム
4. 質疑応答
5. 懇親会 (希望者のみ)



                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




  1. シェルスクリプトの基礎知識
     ~ どんなことができるの? ~




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




  シェルって何?


          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




 shell = 貝殻?


          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


•   シェル(殻)とは、ユーザから入力されたコマンドを解釈し、プロ
    グラムを起動するアプリケーションであり、OSの機能を実装してい
    るカーネル(中心核)を貝殻のように覆うようにして動作する。


    今何時かな?                                              shell
                      date

                             命令応答
                                                Unix
                                               Linux
                                               Kernel
                Thu Apr 21 11:53:44 JST 2011




                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




      カーネルと
      シェルの
       役割
          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~



 カーネルのおしごと


 1. シェルから渡されたコンピュータへの命令を実行する

 2. CPUに計算させたりメモリに一時記憶したりハードディスクや
   SSDに記録したり・・・




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルのおしごと
 1. ユーザが入力したコマンドをカーネルに伝える(シェルは人の命
    令を仲介しOSに実行させる)
 2. プログラムを終了させたり、フォアグラウンド・バックグラウンドを
    切り替えたりする
 3. まとまった一連の入力をシェルスクリプトとして実行する
 4. プログラムの出力をファイルにリダイレクトしたり、パイプに
    渡すことで他のプログラムの入力としたりする
 5. 変数や他のコマンドの出力結果を取り込んで加工し、出力
    する


             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルスクリプトで何ができるの?
 - コマンドを並べて順に実行する
 - リダイレクトを使ってコマンド実行結果をファイルに書きだす
 - パイプを使って次のコマンドに出力結果を渡す
  (コマンド実行結果をメールで飛ばすなど)

  - シェルスクリプトをcron実行することで、定時作業の省力化が
    できる
など、作業品質の一定化と省力化を図ることができます。



                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルスクリプトってどうやって書くの?
 - シェルスクリプトを動かしたいコンピュータへSSHやtelnetなどで
   ログインし、viなどのエディタを使ってシェルスクリプトを書く
 - 手元のコンピュータでシェルスクリプトを書いてFTPやSCPなど
   を使い、シェルスクリプトを動かしたいコンピュータへアップロード
   する (文字コードや改行コードの違いに注意)
 - chmodコマンドを使い書き終わったシェルスクリプトへ実行権を
   つけて実行する




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




  2. シェルスクリプトのおやくそく




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




シェルスクリプトには、いくつか約束ごとがあります。

 1 シェルスクリプトを書いて実行する際のお約束
 2 出力結果をリダイレクトする際のお約束
 3 他コマンドの出力結果を取り込む際のお約束
 4 変数を設定する際のお約束




             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


1 シェルスクリプトを書いて実行する際のお約束

シェルスクリプトの先頭1行目には、スクリプトを読み込むインタプ
リタを「#!」から始まる書き出しで記述します。

   例)
                          これらを「シバン (she-
   #!/bin/sh              bang)」と呼びます
   #!/bin/bash
   #!/bin/csh


                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルスクリプト内でコメントアウトするときは「#」を使います。

   例)
   #!/bin/sh   ← これはコメント行ではありません


   # ここで変数を設定する               赤く囲った箇所
                              (#より右側)は
   hoge=fuga                  実行されません

   # 変数「hoge」を表示させる

   echo ${hoge} # ← fugaと表示される

                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルスクリプトを動かすために、実行権をつけるか sh コマンドの
引数にスクリプトの名前を渡してあげる必要があります。

スクリプトに実行権をつけるには

chmod 755 hoge.sh

のように、chmodコマンドで実行権を付与します。




                    インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


実行権がないシェルスクリプトを実行しようとするとこうなります。
sh-3.2$ cat bin/hoge.sh
#!/bin/bash
basename ${0}

sh-3.2$ ls -l bin/hoge.sh
-rw-r--r-- 1 oresama oresama 26 May 11 15:33 bin/hoge.sh

sh-3.2$ hoge.sh
sh: /home/oresama/bin/hoge.sh: Permission denied



                          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルスクリプトを実行するには2つの方法があります。
sh-3.2$ cat bin/hoge.sh
#!/bin/bash                             実行権をつける
basename ${0}

sh-3.2$ chmod 755 bin/hoge.sh

sh-3.2$ ls -l bin/hoge.sh
-rwxr-xr-x 1 oresama oresama 26 May 11 15:33 bin/hoge.sh

sh-3.2$ hoge.sh
hoge.sh

                          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


シェルスクリプトを実行するには2つの方法があります。
sh-3.2$ cat bin/hoge.sh
#!/bin/bash
basename ${0}

                               実行権 (x) がついていない
sh-3.2$ ls -l bin/hoge.sh
-rw-r--r-- 1 oresama oresama 26 May 11 15:33 bin/hoge.sh

sh-3.2$ sh hoge.sh
hoge.sh



                          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


2 出力結果をリダイレクトする際のお約束

シェルスクリプトの出力結果は、標準出力または標準エラー出力
に表示されます。ファイルやコマンドにリダイレクトしない場合は、コ
ンソールやSSHクライアントに表示されます。

シェルスクリプトのリダイレクトは、主に次の3つを使います。




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




|   「パイプ」と呼ばれる。パイプ左辺で実行されたコマンドを
    パイプ右辺のコマンドへ渡す役割を担う。

>   hoge.sh > file.txt と実行することにより、出力結果
    が file.txt に上書きされる。

>> hoge.sh >> file.txt と実行することにより、出力結
   果が file.txt に追記される。



              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


3 他コマンドの出力結果を取り込む際のお約束

シェルスクリプトでは、他のコマンドを実行した結果を取り込むこと
ができます。スクリプト内でコマンドを「``」で囲むか「$()」で囲むこと
で実現できます。

例
#!/bin/sh
echo "`date +%Y/%m/%d` $(uptime) "



                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




4 変数を設定する際のお約束

シェルスクリプトで変数を設定する際、以下の文法で行います。

hoge=fuga

※ 「=」の両側にスペースをあけないでください



                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

変数に格納された値を参照する際、変数の先頭に「$」をつけます。


sh-3.2$ hoge=fuga

sh-3.2$ echo ${hoge}
fuga



                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




※ シェル変数について

シェルスクリプト中で使うと便利な変数を、
付録「付帯資料 #1 シェル変数」にまとめました。
スクリプト名などを決め打ちで書くよりも
保守性が高くなりますので、非常に便利です。




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




簡単な実例

          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




example1
「CentOSでrpmパッケージの更新をyumコマンドで確認し、その結
果をroot宛にメールする」




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example1


sh-3.2$ cat bin/yum-check   先頭行に「シバン(shebang)」を書き
                            「これから書くスクリプトは、bashで動
                            きます」と宣言します。

#!/bin/bash
/usr/bin/yum check-update | ¥
mail -s " `uname -n` `date` YUM CHECK " root@localhost




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example1


sh-3.2$ cat bin/yum-check   yumコマンドの「check-update」オプ
                            ションで、既に゗ンストールされている
                            パッケージがupdateリポジトリにあるか
                            確認する
#!/bin/bash
/usr/bin/yum check-update | ¥
mail -s " `uname -n` `date` YUM CHECK " root@localhost




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example1


sh-3.2$ cat bin/yum-check   yum check-updateコマンドで取得した
                            ゕップデート有無結果を次のmailコマン
                            ドに渡しています

#!/bin/bash
/usr/bin/yum check-update | ¥
mail -s " `uname -n` `date` YUM CHECK " root@localhost




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example1


sh-3.2$ cat bin/yum-check
                            コマンドの1行が長くなる場合、「¥」で
                            折り返すことができます

#!/bin/bash
/usr/bin/yum check-update | ¥
mail -s " `uname -n` `date` YUM CHECK " root@localhost




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example1


sh-3.2$ cat bin/yum-check   バッククォートで文字列をくくると、そ
                            の中をコマンドとして実行し、標準出力
                            に出力されます

#!/bin/bash
/usr/bin/yum check-update | ¥
mail -s " `uname -n` `date` YUM CHECK " root@localhost




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example1


sh-3.2$ cat bin/yum-check   バッククォートで文字列をくくると、そ
                            の中をコマンドとして実行し、標準出力
                            に出力されます

#!/bin/bash
/usr/bin/yum check-update | ¥
mail -s " `uname -n` `date` YUM CHECK " root@localhost




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




example2
「CentOSでrpmパッケージの更新をyumコマンドで確認し、その結
果をログファイルに残す」




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2

sh-3.2$ cat bin/yum-check2       ここで環境変数を指定しています。
                                 ${HOME} とは、/etc/passwd フゔ゗ルに
#!/bin/bash                      書かれている、ユーザのホームデゖレク
LOGDIR=${HOME}/logs              トリを指しています。

/usr/bin/yum check-update >> ¥
${LOGDIR}/$(date +%Y-%m-%d-%H-%M-%S)_$(basename ${0}).log




                             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2

sh-3.2$ cat bin/yum-check2
                                 「>>」により、yum check-update の結
#!/bin/bash                      果をフゔ゗ルにリダ゗レクトされます
LOGDIR=${HOME}/logs
/usr/bin/yum check-update >> ¥
${LOGDIR}/$(date +%Y-%m-%d-%H-%M-%S)_$(basename ${0}).log




                             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2

sh-3.2$ cat bin/yum-check2
                                 「$( )」で囲まれたコマンド実行結果を
#!/bin/bash                      フゔ゗ル名にします
LOGDIR=${HOME}/logs
/usr/bin/yum check-update >> ¥
${LOGDIR}/$(date +%Y-%m-%d-%H-%M-%S)_$(basename ${0}).log




                             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




でも、よくわかんないですよね?




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2

sh-3.2$ cat bin/yum-check2
#!/bin/bash                            この辺とか
LOGDIR=${HOME}/logs
/usr/bin/yum check-update >> ¥
${LOGDIR}/$(date +%Y-%m-%d-%H-%M-%S)_$(basename ${0}).log




                             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2

sh-3.2$ cat bin/yum-check2
#!/bin/bash                            この辺とか
LOGDIR=${HOME}/logs
/usr/bin/yum check-update >> ¥
${LOGDIR}/$(date +%Y-%m-%d-%H-%M-%S)_$(basename ${0}).log




                             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




こういうときは、バッククォートや
$( ) に囲まれたコマンドをじっくり
観察します




           インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2-2 解説 (dateコマンド出力例)

sh-3.2$ date +%Y-%m-%d-%H-%M-%S
2011-04-24-08-40-48
コマンドをバッククォートで囲むこ          %Y   4桁の西暦
とで、その部分は実行結果に置き換
わることは先ほど説明しました。           %m   ゼロパディングされた月

ここでは、dateコマンドのオプショ        %d   ゼロパディングされた日付
ンを見てみましょう。右の表にある
                          %H   ゼロパディングされた時間(24h)
以外にもオプションはあるので、
「man date」コマンドを実行して       %M   ゼロパディングされた分
その他のオプションも応用してみる
のもよいでしょう。                 %S   ゼロパディングされた秒




                   インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2-3 解説 (basenameコマンドを使ってみる例 1)


                                    変数 ${HOME} は
                                    /home/test1
                                    というディレクトリ名に
                                    展開される



                                    catコマンドで
                                    シェルスクリプトの
                                    中身を見てみる


                                    シェルスクリプト「hoge」を
                                    実行すると、画面に
                                    「hoge」と表示される



                      インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~

example2-3 解説 (basenameコマンドを使ってみる例 2)
                                           hoge を fuga に
                                           リネームしてみる




                                    catコマンドで
                                    シェルスクリプトの
                                    中身を見てみる



                                    シェルスクリプト「fuga」を
                                    実行すると、画面に
                                    「fuga」と表示される




                      インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




  ここまでのまとめ


          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




               みんな、わかったカナ?
               リンくまは、ちょっと
               疲れちゃったなー。

               少し休憩しようよー。




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




 3-1. テキスト処理の効率化とログ解析サンプル




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




sample3-1

テキスト処理の効率化とログ解析サンプル
~Apacheのゕクセスログを見てみよう~




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




シェルスクリプトは手軽にテキスト処
理を行うことができます。次のページ
に示すコマンドを押さえておくことで、
多様な処理が可能になるでしょう。




           インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


cat     1つ または 複数のフゔ゗ルを出力する

*grep   パターンにマッチする行を表示する (grep egrep fgrep)

head    フゔ゗ルの先頭を表示する (標準で先頭10行)

tail    フゔ゗ルの末尾を表示する (標準で末尾10行)

wc      フゔ゗ルのバ゗ト数、単語数、行数を表示する

sed     基本的なテキスト置換を行う

awk     テキスト整形、置換、計算など非常に多機能なスクリプト言語

cut     テキストを切り出す

sort    文字列をソートする

uniq    連続する同じ行を1行にまとめる

                      インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-1
WEBサーバに接続しにきたクラ゗ゕント一覧を出力する


sh-3.2$ cat bin/example1-1.sh
1   #!/bin/bash
2
3   LOGDIR=/home/logs/blogcube.info/nullpopopo
4   LOGFILE=${LOGDIR}/access_log
5
6   awk '{print $1}' ${LOGFILE} | sort | uniq -c | sort -n




                                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-1
WEBサーバに接続しにきたクラ゗ゕント一覧を出力する

スクリプト中で使っているコマンド

   awk # テキストの特定の列を抜き出す
   sort # テキストの並べかえを行う
   uniq # 重複を除外する




             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-1
WEBサーバに接続しにきたクラ゗ゕント一覧を出力する




             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-2
WEBサーバに接続しにきたクラ゗ゕントのトップ10を出力する


sh-3.2$ cat bin/example1-2.sh
1   #!/bin/bash
2
3   LOGDIR=/home/logs/blogcube.info/nullpopopo
4   LOGFILE=${LOGDIR}/access_log
5
6   awk '{print $1}' ${LOGFILE} | sort | ¥
7   uniq -c | sort -nr | head


                                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-2
WEBサーバに接続しにきたクラ゗ゕントのトップ10を出力する

スクリプト中で使っているコマンド

   awk    # 特定の列を抜き出す
   sort   # 並べかえを行う
   uniq   # 重複を除外する
   head   # 先頭行を表示する




               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-2
WEBサーバに接続しにきたクラ゗ゕントのトップ10を出力する




             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-3
人気コンテンツのトップ10を出力する


sh-3.2$ cat bin/example1-3.sh
1   #!/bin/bash
2
3   LOGDIR=/home/logs/blogcube.info/nullpopopo
4   LOGFILE=${LOGDIR}/access_log
5
6   awk '{print $7}' ${LOGFILE} | sort | ¥
7   uniq -c | sort -nr | head


                                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-3
人気コンテンツのトップ10を出力する

スクリプト中で使っているコマンド

   awk    # 特定の列を抜き出す
   sort   # 並べかえを行う
   uniq   # 重複を除外する
   head   # 先頭行を表示する




               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-3
人気コンテンツのトップ10を出力する




             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-4
人気コンテンツのトップ10を出力する (重複対応版)


sh-3.2$ cat bin/example1-4.sh
1   #!/bin/bash
2
3   LOGDIR=/home/logs/blogcube.info/nullpopopo
4   LOGFILE=${LOGDIR}/access_log
5
6   awk '{print $7}' ${LOGFILE} | sed -e 's/¥?.*//g' | ¥
7   sort | uniq -c | sort -nr | head


                                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-4
人気コンテンツのトップ10を出力する (重複対応版)

スクリプト中で使っているコマンド

    sed    # 文字列を置換する
    awk    # 特定の列を抜き出す
    sort   # 並べかえを行う
    uniq   # 重複を除外する
    head   # 先頭行を表示する



                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-4
人気コンテンツのトップ10を出力する (重複対応版)




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-4
人気コンテンツのトップ10を出力する (重複対応版)

重複対応版では sed -e 's/¥?.*//g' という処理を入れてい
ることで、URLの後ろにくっついている?以降の文字列
を正規表現で削除し、同じURLとしてカウントします。

例)
http://nullpopopo.blogcube.info/
http://nullpopopo.blogcube.info/?p=142



                     インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-5
人気コンテンツのトップ10を出力する (重複対応・拡張子指定版)


sh-3.2$ cat bin/example1-5.sh
1   #!/bin/bash
2
3   LOGDIR=/home/logs/blogcube.info/nullpopopo
4   LOGFILE=${LOGDIR}/access_log
5
6   awk '{print $7}' ${LOGFILE} | sed -e 's/¥?.*//g' | ¥
7   egrep -iv '(js$|xml$|jpg$|gif$|png$|css$|ico$|robots.txt$)' | ¥
8   sort | uniq -c | sort -nr | head

                                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-5
人気コンテンツのトップ10を出力する (重複対応・拡張子指定版)

スクリプト中で使っているコマンド

   awk      # 特定の列を抜き出す
   egrep    # 特定文字列を含む行を抜き出す
   sort     # 並べかえを行う
   uniq     # 重複を除外する
   head     # 先頭行を表示する



              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-5
人気コンテンツのトップ10を出力する (重複対応・拡張子指定版)




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-1-5
人気コンテンツのトップ10を出力する (重複対応・拡張子指定版)

重複対応・拡張子指定版では
egrep -iv '(js$|xml$|jpg$|gif$|png$|css$|ico$|robots.txt$)' とい
う処理を入れていることで、拡張子がjsで終わるもの、
xmlで終わるもの、以下、JPG、GIF、PNG、CSS、ICO、
そしてrobots.txtを大文字小文字関係なしに除外していま
す。

egrep -i ~~~ ※ 大文字小文字を問わない
egrep -v ~~~ ※ 引数に与えられた文字列を除外する



                          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




 3-2. 簡単なルーチンワークと監視プログラム




          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




sample3-2

簡単なルーチンワークと監視プログラム
~サーバの監視をしてみよう~




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する
sh-3.2$ cat bin/DFCSV

 1   #!/bin/bash

 2   LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')

 3   LOGDIR=${HOME}/logs

 4   LOGFILE=${LOGDIR}/$(basename${0})_$(date +%Y%m%d).csv

 5

 6   df -kP | egrep -v '(^Filesystem|/dev/shm$)' | ¥

 7   sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g" >> ¥

 8   ${LOGFILE}


                                     インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

スクリプト中で使っているコマンド

   basename   # コマンドのフルパスから
                デゖレクトリを除いて表示する
   date       # 時刻を表示する
   df         # デゖスク容量を表示する
   egrep      # 特定文字列を含む行を抜き出す
   sed        # 文字列を置換する


               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')


変数「LOGDATE」に、dateコマンドで YYYY/MM/DD HH:MM:SS 形式の日付を代入
します。実際にコンソール上で「/bin/date '+%Y¥/%m¥/%d %H:%M:%S'」を実行して
みることで、どのように出力されるか事前に確認するとよいでしょう。


例)
sh-3.2$ /bin/date '+%Y¥/%m¥/%d %H:%M:%S'
2011¥/05¥/22 22:57:48



                              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

LOGDIR=${HOME}/logs


変数「LOGDIR」には、シェル変数「${HOME}/logs」が代入されます。変数${HOME}
に何が代入されるかは、以下のコマンドで確認することができます。


例)
sh-3.2$ echo ${HOME}
/home/oresama




                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

LOGFILE=${LOGDIR}/$(basename ${0})_$(date +%Y%m%d).csv


変数「LOGDIR」は、/home/oresama/logs デゖレクトリであることがわかりました。
変数「$(basename ${0})」は、実行したスクリプト自身の名前になります。
basename コマンドをつけているのは、「sh DFCSV 」で実行した際に、意図せぬ
フゔ゗ル名にならないようにするためです。スクリプトの名前が
「DFCSV」だとして、ログフゔ゗ルは以下に出力されます。



       /home/oresama/logs/DFCSV_20110529.csv

                            インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

コマンド解説 (df)


dfコマンドのオプションは以下の通りです。




 -k   容量をキロバ゗ト単位で表示する。


      フゔ゗ルシステムの情報を常に1行で表示させるため、POSIX出力形式を用
 -P   いる。LVMのボリューム配下やNFSマウントされている領域で改行されない。



                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (df) - 出力例

sh-3.2$ df -kP

Filesystem         1024-blocks      Used Available Capacity Mounted on
/dev/mapper/VolGroup00-LogVol00 519423712 159664828 332948108      33% /
/dev/vda1               101086     33062     62805      35% /boot
tmpfs                   254632         0    254632       0% /dev/shm




                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (df) - 出力例

sh-3.2$ df -k

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                     519423712 159664828 332948108 33% /
/dev/vda1               101086     33062     62805 35% /boot
tmpfs                   254632         0    254632   0% /dev/shm




                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

コマンド解説 (egrep)



egrep -v '(^Filesystem|/dev/shm$)'
で、先頭が「 Filesystem」の行と「/dev/shm」で終わる行を表示しないようにしてい
ます。




                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (egrep) - 出力例

sh-3.2$ df -kP | egrep -v '(^Filesystem|/dev/shm$)'

/dev/mapper/VolGroup00-LogVol00 519423712 159664892 332948044       33% /
/dev/vda1               101086     33062     62805      35% /boot




                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

コマンド解説 (sed)



sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g"
で、先頭出力結果の先頭を日付に、連続したスペースをカンマに置換しています。
複数回のsedは、以下のようにまとめることができます。


sed -e "s/hoge/fuga/g;s/ABC/DEF/g"
( sed -e "s/hoge/fuga/g" | sed -e "s/ABC/DEF/g" と同じ出力結果)




                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (sed) - 出力例


sh-3.2$ df -kP | egrep -v '(^Filesystem|/dev/shm$)' | ¥
> sed -e "s/^/$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S') /g;s/¥s¥s*/,/g"

2011/05/22,23:58:13,/dev/mapper/VolGroup00-LogVol00,519423712,159664920,332948016,33%,/
2011/05/22,23:58:13,/dev/vda1,101086,33062,62805,35%,/boot




                                   インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-1
デゖスク容量を監視し、CSVフゔ゗ルへ記録する
ログ(CSVフゔ゗ル) 出力例




                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する
sh-3.2$ cat bin/FREECSV (前半)

 1   #!/bin/bash

 2   LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')

 3   LOGDIR=${HOME}/logs

 4   LOGFILE=${LOGDIR}/$(basename${0})_$(date +%Y%m%d).csv

 5

 6   FKMEM=$(free -k | egrep '(^Mem)' | awk '{print $1,$2}')

 7   FKPLM=$(free -k | egrep '(^-/+)' | awk '{print $3,$4}')

 8


                                      インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する
sh-3.2$ cat bin/FREECSV (後半)

 9   free -k | egrep '(^Mem:)' | awk '{print $1,$2,$3,$4,$5,$6,$7}' | ¥

10   sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g" >> ${LOGFILE}

11

12   free -k | egrep '(^Swap:)' | awk '{print $1,$2,$3,$4}' | ¥

13   sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g" >> ${LOGFILE}

14

15   echo $(echo -n ${FKMEM} ; echo ${FKPLM} | sed -e s/^/" "/g) | ¥

16   sed -e "s/^/$(echo ${LOGDATE}) /g;s/Mem/Total/g;s/¥s¥s*/,/g" >> ${LOGFILE}


                                       インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

スクリプト中で使っているコマンド
   date       # 時刻を表示する
   basename   # コマンドのフルパスから
                デゖレクトリを除いて表示する
   free       # メモリ使用量を表示する
   egrep      # 特定文字列を含む行を抜き出す
   awk        # 特定の列を抜き出す
   echo       # 文字列を表示する




                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (free -k) - 出力例


sh-3.2$ free -k

             total     used      free   shared   buffers   cached
Mem:        509268   356712    152556        0     35864   233108
-/+ buffers/cache:    87740    421528
Swap:       524280       68    524212




                              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (awkで実メモリの表示行を抜き出す) - 出力例


sh-3.2$ LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')

sh-3.2$ free -k | egrep '(^Mem:)' | awk '{print $1,$2,$3,$4,$5,$6,$7}' | ¥
> sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g"

2011/05/29,12:39:26,Mem:,509268,351732,157536,0,31228,232560




                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (awkでSWAPの行を抜き出す) - 出力例


sh-3.2$ LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')

sh-3.2$ free -k | egrep '(^Swap:)' | awk '{print $1,$2,$3,$4}' | ¥
> sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g"

2011/05/29,13:51:35,Swap:,524280,68,524212




                                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量 ※別途資料参照) - 出力例

sh-3.2$ LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')
sh-3.2$ FKMEM=$(free -k | egrep '(^Mem)' | awk '{print $1,$2}')
sh-3.2$ FKPLM=$(free -k | egrep '(^-/+)' | awk '{print $3,$4}')
sh-3.2$ echo $(echo -n ${FKMEM} ; echo ${FKPLM} | sed -e s/^/" "/g) | ¥
> sed -e "s/^/$(echo ${LOGDATE}) /g;s/Mem/Total/g;s/¥s¥s*/,/g"

2011/05/29,13:59:03,Total:,509268,88128,421140




                             インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 変数解説 - FKMEM -

sh-3.2$ FKMEM=$(free -k | egrep '(^Mem)' | awk '{print $1,$2}')
sh-3.2$ echo ${FKMEM}

Mem: 509268


                  freeコマンドの出力結果より、実メモリの総容量(egrepで先頭
                  がMemである行)を抜き出し、1フゖールド目と2フゖールド目を
                  切り出した結果。




                             ゗ンターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 変数解説 - FKPLM -

sh-3.2$ FKPLM=$(free -k | egrep '(^-/+)' | awk '{print $3,$4}')
sh-3.2$ echo ${FKPLM}

88268 421000

                   freeコマンドの出力結果より、メモリの「usedからバッフゔ
                   キャッシュ( buffers )・フゔ゗ルキャッシュ( cached )を差し
                   引いた量(内容を捨てるわけにいかないメモリ)と、freeにバッ
                   フゔキャッシュ・フゔ゗ルキャッシュを加えた量(必要があれ
                   ば使えるメモリ)を切り出した結果。



                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量ログフゔ゗ル) - 出力例

sh-3.2$ grep Total ${HOME}/logs/FREECSV_20110529.csv | tail

2011/05/29,13:35:01,Total:,509268,91380,417888
2011/05/29,13:40:02,Total:,509268,90864,418404   実メモリ総容量
2011/05/29,13:45:01,Total:,509268,90244,419024
2011/05/29,13:50:01,Total:,509268,88956,420312
2011/05/29,13:55:01,Total:,509268,88848,420420
2011/05/29,14:00:02,Total:,509268,89196,420072
2011/05/29,14:05:01,Total:,509268,91280,417988
2011/05/29,14:10:02,Total:,509268,89772,419496
2011/05/29,14:15:01,Total:,509268,90088,419180
2011/05/29,14:20:01,Total:,509268,92896,416372
                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量ログフゔ゗ル) - 出力例

sh-3.2$ grep Total ${HOME}/logs/FREECSV_20110529.csv | tail

2011/05/29,13:35:01,Total:,509268,91380,417888
2011/05/29,13:40:02,Total:,509268,90864,418404
2011/05/29,13:45:01,Total:,509268,90244,419024
2011/05/29,13:50:01,Total:,509268,88956,420312
2011/05/29,13:55:01,Total:,509268,88848,420420      メモリ使用量
                                                 ※ バッフゔとキャッシュを含まず
2011/05/29,14:00:02,Total:,509268,89196,420072
2011/05/29,14:05:01,Total:,509268,91280,417988
2011/05/29,14:10:02,Total:,509268,89772,419496
2011/05/29,14:15:01,Total:,509268,90088,419180
2011/05/29,14:20:01,Total:,509268,92896,416372
                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-2
メモリ使用量を監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量ログフゔ゗ル) - 出力例

sh-3.2$ grep Total ${HOME}/logs/FREECSV_20110529.csv | tail

2011/05/29,13:35:01,Total:,509268,91380,417888
2011/05/29,13:40:02,Total:,509268,90864,418404
2011/05/29,13:45:01,Total:,509268,90244,419024
2011/05/29,13:50:01,Total:,509268,88956,420312
2011/05/29,13:55:01,Total:,509268,88848,420420
2011/05/29,14:00:02,Total:,509268,89196,420072
2011/05/29,14:05:01,Total:,509268,91280,417988
2011/05/29,14:10:02,Total:,509268,89772,419496      空きメモリ
2011/05/29,14:15:01,Total:,509268,90088,419180   ※ バッフゔとキャッシュを含む
2011/05/29,14:20:01,Total:,509268,92896,416372
                               インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する
sh-3.2$ cat bin/LACSV

 1   #!/bin/bash

 2   LOGDATE=$(/bin/date '+%Y¥/%m¥/%d %H:%M:%S')

 3   LOGDIR=${HOME}/logs

 4   LOGFILE=${LOGDIR}/$(basename${0})_$(date +%Y%m%d).csv

 5

 6   uptime | awk 'BEGIN {FS="load average:"} {print $NF}' | ¥

 7   sed -e "s/^/$(echo ${LOGDATE}) /g;s/¥s¥s*/,/g;s/,,/,/g" >> ${LOGFILE}




                                     インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する

スクリプト中で使っているコマンド
   date       # 時刻を表示する
   basename   # コマンドのフルパスから
                デゖレクトリを除いて表示する
   uptime     # コンピュータの起動経過時刻を表示する
   awk        # 特定の列を抜き出す
   sed        # 文字列を置換する




                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (uptimeコマンド) - 出力例

sh-3.2$ uptime

15:51:53 up 20 days, 14:22, 1 user, load average: 0.07, 0.09, 0.08


 コマンド解説 (uptimeコマンドからロードゕベレージを抜き出す) - 出力例

sh-3.2$ uptime | awk 'BEGIN {FS="load average:"} {print $NF}'

0.07, 0.09, 0.08


                                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (uptimeコマンド) - 出力例

sh-3.2$ uptime

15:51:53 up 20 days, 14:22, 1 user, load average: 0.07, 0.09, 0.08


 コマンド解説 (uptimeコマンドからロードゕベレージを抜き出す) - 出力例

sh-3.2$ uptime | awk 'BEGIN {FS="load average:"} {print $NF}'
                               文字列
                                                    最後のフゖールドを
                               「load average:」を
0.07, 0.09, 0.08                                    表示する
                               区切り文字に指定する



                                 インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量ログフゔ゗ル) - 出力例

sh-3.2$ tail ${HOME}/logs/LACSV_20110529.csv

2011/05/29,18:00:01,0.56,0.17,0.11       1分間の run queue(CPUに割り当て
2011/05/29,18:05:01,0.58,0.19,0.12       られたジョブが入る待ち行列)にある
2011/05/29,18:10:02,0.64,0.19,0.12       ジョブ数平均値
2011/05/29,18:15:01,0.40,0.15,0.10
2011/05/29,18:20:02,0.72,0.20,0.12
2011/05/29,18:25:02,0.56,0.18,0.11
2011/05/29,18:30:02,0.51,0.19,0.12
2011/05/29,18:35:01,0.48,0.17,0.11
2011/05/29,18:40:02,0.56,0.17,0.11
2011/05/29,18:45:01,0.49,0.16,0.11
                                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量ログフゔ゗ル) - 出力例

sh-3.2$ tail ${HOME}/logs/LACSV_20110529.csv

2011/05/29,18:00:01,0.56,0.17,0.11
2011/05/29,18:05:01,0.58,0.19,0.12
2011/05/29,18:10:02,0.64,0.19,0.12
2011/05/29,18:15:01,0.40,0.15,0.10
                                         5分間の run queue(CPUに割り当て
2011/05/29,18:20:02,0.72,0.20,0.12       られたジョブが入る待ち行列)にある
2011/05/29,18:25:02,0.56,0.18,0.11       ジョブ数平均値
2011/05/29,18:30:02,0.51,0.19,0.12
2011/05/29,18:35:01,0.48,0.17,0.11
2011/05/29,18:40:02,0.56,0.17,0.11
2011/05/29,18:45:01,0.49,0.16,0.11
                                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する

 コマンド解説 (メモリの実質消費量ログフゔ゗ル) - 出力例

sh-3.2$ tail ${HOME}/logs/LACSV_20110529.csv

2011/05/29,18:00:01,0.56,0.17,0.11
2011/05/29,18:05:01,0.58,0.19,0.12
2011/05/29,18:10:02,0.64,0.19,0.12
2011/05/29,18:15:01,0.40,0.15,0.10
2011/05/29,18:20:02,0.72,0.20,0.12
2011/05/29,18:25:02,0.56,0.18,0.11
2011/05/29,18:30:02,0.51,0.19,0.12
2011/05/29,18:35:01,0.48,0.17,0.11       15分間の run queue(CPUに割り当て
2011/05/29,18:40:02,0.56,0.17,0.11       られたジョブが入る待ち行列)にある
2011/05/29,18:45:01,0.49,0.16,0.11       ジョブ数平均値

                                インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


sample3-2-3
ロードゕベレージを監視し、CSVフゔ゗ルへ記録する
ログ(CSVフゔ゗ル) 出力例




                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




    課題
          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~


1   同じ列に複数の項目が並んでいるので、DFCSVや
    FREECSVをグラフ化するのが面倒 だ。

2   *CSVスクリプトでほとんどの変数が共通なので、
    これらを関数化できないか?

3   監視項目の閾値を超えたときにメール発報したい。

4   ログの先頭に項目名をつけたい。




              インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




シェルスクリプトがわかってくると、
こうした悩みが出てくるよね?
次回は、if文 (条件分岐) や for文 (繰返し) 、
関数を使ってスマートなスクリプトを書いて
みよう!




                  インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




4. 質疑応答

          インターリンク株式会社
~ilstudy 第1回 ゆるふわ愛されシェルスクリプト~




ご清聴有難うございました。



           インターリンク株式会社

More Related Content

What's hot

initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略yoku0825
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話Kazuya Wada
 
シェル入門
シェル入門シェル入門
シェル入門ina job
 
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リーリナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リーCODE BLUE
 
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。Satoshi Mimura
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)icchy
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミングlestrrat
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話idkqh7 Nishino
 
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
consul &  consul-alerts を使った監視システム (hbstyle-2015-01-08)consul &  consul-alerts を使った監視システム (hbstyle-2015-01-08)
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)YOSHIKAWA Ryota
 
Deep Dive into Modules
Deep Dive into ModulesDeep Dive into Modules
Deep Dive into ModulesHideki Saito
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションyoku0825
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 

What's hot (20)

Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
Open VZ
Open VZOpen VZ
Open VZ
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
シェル入門
シェル入門シェル入門
シェル入門
 
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リーリナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミング
 
○○大学の本当にあった怖い話
○○大学の本当にあった怖い話○○大学の本当にあった怖い話
○○大学の本当にあった怖い話
 
SystemV IPC
SystemV IPCSystemV IPC
SystemV IPC
 
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
consul &  consul-alerts を使った監視システム (hbstyle-2015-01-08)consul &  consul-alerts を使った監視システム (hbstyle-2015-01-08)
consul & consul-alerts を使った監視システム (hbstyle-2015-01-08)
 
Deep Dive into Modules
Deep Dive into ModulesDeep Dive into Modules
Deep Dive into Modules
 
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーションイルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
 
pecoを使おう
pecoを使おうpecoを使おう
pecoを使おう
 
Em synchrony について
Em synchrony についてEm synchrony について
Em synchrony について
 
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 

Similar to Ilstudy001_20110806

CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
コマンド実行結果のログ取得について
コマンド実行結果のログ取得についてコマンド実行結果のログ取得について
コマンド実行結果のログ取得についてKoji Kawaguchi
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~Preferred Networks
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像Kiwamu Okabe
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたsuper_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたjiro4989
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistranokumachang_LL
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp CodereadingHiro Yoshioka
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0Satoshi Kume
 
20121217 jawsug-yokohama
20121217 jawsug-yokohama20121217 jawsug-yokohama
20121217 jawsug-yokohamaTetsuya Chiba
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器Yukitaka Uchikoshi
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstartHideki Saito
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックEmma Haruka Iwao
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2Masahide Yamamoto
 

Similar to Ilstudy001_20110806 (20)

Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
コマンド実行結果のログ取得について
コマンド実行結果のログ取得についてコマンド実行結果のログ取得について
コマンド実行結果のログ取得について
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたsuper_unkoをスーパーキレイにした
super_unkoをスーパーキレイにした
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0
 
20121217 jawsug-yokohama
20121217 jawsug-yokohama20121217 jawsug-yokohama
20121217 jawsug-yokohama
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
 
Ansible quickstart
Ansible quickstartAnsible quickstart
Ansible quickstart
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 

Ilstudy001_20110806