ここは個人的な備忘録です。テキトーかつ適当が目標。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Amazon AWS,EC2 のメモ.


2011-03-26 Amazon EC2の使い方(nishio.densankenの日記 様)
http://d.hatena.ne.jp/nishio-dens/20110326/1301135766
丁寧に手順が書いてあって助かりました.


アマゾン(AWS)の無料クラウドと LotusLive API 公開 (プログラマーですが何か?様)
https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgmrk/entry/_e3_82_a2_e3_83_9e_e3_82_be_e3_83_b3_aws__e3_81_ae_e7_84_a1_e6_96_99_e3_82_af_e3_83_a9_e3_82_a6_e3_83_8911?lang=ja

Amazon Web Services の無料ティアを使う(1)(プログラマーですが何か?様)
https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgmrk/entry/amazon_web_services__e3_81_ae_e7_84_a1_e6_96_99_e3_83_86_e3_82_a3_e3_82_a2_e3_82_92_e4_bd_bf_e3_81_862?lang=ja
AWSの無料サーバーの利用方法の手順(AWSアカウント取得以降の作業)


ハイパフォーマンス コンピューティング(HPC)(Amazon web service)
http://aws.amazon.com/jp/hpc-applications/

2010/07/22 Amazon EC2性能検証!気になるパフォーマンスをインスタンスタイプやリージョン毎に計測・比較してみた(RX-7乗りの適当な日々 様)
http://d.hatena.ne.jp/rx7/20100722/p1

9種類のインスタンス(サーバ)のディスク・CPUパワーの性能や、4ヶ所のリージョンで性能に差異があるかを確認しました。

とてもおもしろい.

2010/07/15 Amazon EC2の「Cluster Compute Instances」を使ってみた(High Performance Computing向け)(RX-7乗りの適当な日々 様)
http://d.hatena.ne.jp/rx7/20100715/p1
「Cluster Compute Instances」を利用するにはどのOSを選べばいいのか分からなかったところなので助かりました.

Amazon EC2/S3を使ってみた - まとめ (Amazon Web Services関連エントリ目次)(RX-7乗りの適当な日々 様)
http://d.hatena.ne.jp/rx7/20080528/p1
うーん,この方すごいな.漏れはもっと精進しる.



無料ティアの仮想マシンだと,FFTWのコンパイル(と make test)に何時間もかかったが,さすがに Cluster Compute Instances は高速.





自分用メモ.開発環境が入っているとは限らないので,ある程度インストールする必要がある.

無料ティアのマシンにはgccもg++も入っていなかった.Cluster Compute Instancesにはgcc は入っていた
が,g++は入っていない.

yum install svn
yum install subversion.x86_64

yum install gcc
yum install make
yum install emacs
yum install gcc.x86_64 gcc-c++.x86_64




さらに,次のようなスクリプトを走らせて,fftwやgmpをインストール.

#!/bin/bash
homedirname=$(pwd)
mkdir temp
pushd temp

wget --no-clobber http://fftw.org/fftw-3.3.tar.gz
wget --no-clobber ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.2.tar.gz

find ./ -name '*.tar.*' | xargs -n 1 tar xvf

cd fftw-3.3/; ./configure --prefix=${homedirname}/sw/fftw-3.3 --enable-sse2 --enable-openmp --enable-threads; make clean; make -j 16; make -j 16 check; make install; cd ../

cd gmp-5.0.2/;./configure --prefix=${homedirname}/sw/gmp-5.0.2/ --enable-cxx ;make clean; make -j 16; make -j 16 check; make install; cd ../

popd
スポンサーサイト
シェルスクリプトが楽しいのでググって回っていた.

Tipsを書いてくださっている方がたくさんいらっしゃるので勉強中.

自分用にインデックスをまとめる.中身の説明はリンク先で.


UNIX の小技
www.connect-i.co.jp/tipsblog/
  • pv: パイプラインの速度表示
  • bash のプロセス置換
    • >(list) :teeとあわせてパイプラインの分岐.
    • <(list) :プロセスの出力をファイルとして読む.一時ファイル省略.標準入力受付不可コマンドに流し込む.普通のパイプ処理もプロセス置換で.
    • プロセス置換は名前付きパイプで実装されているらしい.
  • gzip
    動作が決定的/非決定的なる条件の話
  • dd
    パイプライン中でのddの動作


[Tips] シェル(rc)スクリプトを書くときのTips
d.hatena.ne.jp/oraccha/20080902/1220368128
  • `{command}

    コマンド置換.
  • <{command}、>{command}

    プロセス置換.非線形なパイプラインを作れる!これは便利.join で重宝.

シェル(bash)スクリプトを書くときのTips
labs.unoh.net/2008/09/bashtips.html
  • $(...)

    ネストできて便利
  • ((...)), $((...))

    exprと比べて処理が速い(内部コマンドのため)
  • read

    for f in $(find ...); do より find ... | xargs command の方が大量処理向きだが,
    複数コマンドを実行したいときには find ... | while read f; do が便利.



Linux テキスト・ユーティティーでデータ抽出を簡易化する
www.ibm.com/developerworks/jp/linux/library/l-textutils/index.html
  • 正規表
  • grep
  • fgrep
  • egrep
  • cut
  • paste
  • join
    # join -1 4 -2 3 -o 1.1 -o 2.1 -o 1.6 -t":" /etc/passwd /etc/group
  • awk
    awk '/pattern/ {action}' file
    awk -F: '{OFS="-"}{print $1,$6}' /etc/passwd
  • head
  • tail

参考文献の引用:

参考文献

学ぶために




貧相コマンドライン生活 テキストを表示するコマンド
ayapin.film.s.dendai.ac.jp/~matuda/TeX/PDF/11th.pdf
  • colrm 指定カラムを取り除く
  • fold
これは"Linux Japan 連載記事「もう少しだけLinux」"(http://ayapin.film.s.dendai.ac.jp/~matuda/TeX/lj.html)の記事のうちの一つ.



UNIX & Linux コマンド・シェルスクリプト リファレンス
http://shellscript.sunone.me/
コーディングスタイルからデバッグまで.細やかかつわかりやすい.この中から気になったものをピックアップ:

複数行の一括コメントアウト
http://shellscript.sunone.me/tips.html
トリッキーだが,ヒアドキュメントを用いることにより,複数行に渡るコメントアウト可能

: <<'#__COMMENT_OUT__'
hoge
#__COMMENT_OUT__

bash ではパイプで結合したその先がサブシェルで実行される、という仕様(バグ?)が存在している。 先日、シェルスクリプト初心者から、「なぜか変数に値が設定されない」という相談を受けたが、原因はまさにこの仕様であった。

(中略)

今回のような場合、問題を回避するには、パイプではなくリダイレクトを使用するとよい。

(中略)

リダイレクトであれば while ループ内はカレントシェルのままとなるため、期待通りの結果(「bar bar」が出力される)となる。

(中略)

この問題に関しては、以下のサイトに詳しくまとめられている。

Solarisの/bin/shの変数の挙動について(サブシェルの問題)



サブシェルの件はUNIX FAQに載っていた:
http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.8.html


複数コマンドのリダイレクトとパイプ
http://shellscript.sunone.me/input_output.html#io-5

スマートに複数コマンドの出力をリダイレクトするには "{}" によるコマンドのグルーピング機能を使用する。

(中略)

もしくは cat コマンドとヒアドキュメントを使用してもよい。


グルーピング機能と同様のもの:
  • for 文の do ~ done ブロックの出力をまとめてリダイレクト
  • 他の制御文も同様にリダイレクト可能
  • 関数全体をリダイレクト
  • 複数コマンドの出力をまとめてパイプに流す




いまさらxargsの便利さを主張してみる
http://openlab.dino.co.jp/2008/02/20/133431188.html
いまさら findと xargsと parallelの便利さを主張してみる
http://d.hatena.ne.jp/hujikojp/20080220/xargs

シェルスクリプトのセキュリティーを高める
http://tm.root-n.com/programming:shell_script:etc:security



[シェルスクリプト Tipsまとめ]の続きを読む
joinコマンドでハマった.

結合のjoinフィールドのソートをうっかり数値順でやっていて,
「join: ファイル 1 はソートされていません」
というエラーに遭遇していた.

参考ページ:
http://manpages.ubuntu.com/manpages/gutsy/ja/man1/join.1.html

FILE1 と FILE2 は実行前に join フィールドの昇順に
ソートしておかなければならない(数値順のソートはだめ)。


http://linuxjm.sourceforge.jp/html/GNU_textutils/man1/join.1.html

file1 と file2 はあらかじめ join フィールドの昇順にソートしておく必要がある (ソートは数値順ではなく、文字列順に行うこと)。



感謝トントン
UNIXのフィルタでSQLみたいなことをしてみたくなった.

CodeZineに記事があったのでまとめ:
業務で楽するためのUNIXテクニック集 (保田和隆氏)

第3回のp.2に paste コマンドの説明が.
他にも具体的なコマンドがたくさんあるので,それを改造すればいろいろできそう.


本体を見るためのポインタ作りをしてみた.すなわち見出しをまとめてみた.


第0回 まずはおさらい、シェル制御構造と正規表現の基礎
  • パイプライン:コマンド1 | コマンド2 | ...
  • コマンドリスト:
    • コマンド1 ; コマンド2 ; ...
    • コマンド1 && コマンド2
    • コマンド1 || コマンド2
  • コマンド置換
    • bashでは `` で囲うことも $() で囲うこともできる
  • ブレース展開
    • 「,」カンマで区切った複数の文字列を「{}」ブレース(中括弧)で囲む
  • シェルの変数展開
    • ${パラメータ#パターン}
    • ${パラメータ##パターン}
    • ${パラメータ%パターン}
    • ${パラメータ%%パターン}
  • for文
    • for 変数 in リスト; do コマンド; done
    • for((i=0; i<5; i++)); do echo "$i"; done
    • for((i=1; i<5; i++)){ echo "$i"; }
    • for file in *; { mv -i "$file" "$file.bak"; }
  • while文
    • while 条件;do コマンド;done
    • find ./ -type f | while read file; do wc -l "$file"; done
  • if文
    • if コマンド1;then (終了コード0)コマンド; elif コマンド2; then コマンド;else コマンド;fi
    • for dir in *; { if [ -d "$dir" ] ; then echo "$dir:"; ls "$dir" | wc -l; fi; }
    • for dir in *; { [ -d "$dir" ] && (echo "$dir:"; ls "$dir" | wc -l); }
  • 理解しておくと便利な正規表現(sed、grep、exprはデフォルトでは基本正規表現)
    • ls * | sed 's/?.[^.]*$//'


第1回 find/grep/xargsコマンドを使いこなす 「検索」編
  • テキストファイルを検索する(grepコマンド)
    • 複数の検索文字を指定して検索(OR検索)する
    • 複数の検索文字を指定して検索する(AND検索)
  • 複雑な条件でファイル・ディレクトリを検索する(findコマンド)
    • findコマンドの代表的なオプション(-follow -maxdepth n -mindepth n)
    • findコマンドの代表的な判別式 
      • 基本:(-name [pattern] -path [pattern] -regex [pattern] -type [filetype] -group [group] -user [user])
      • 日時:(-atime (+/-)n -mtime (+/-)n -mmin (+/-)n -newer [file name])
      • サイズ:(-empty -size n[c/k/b])
      • アクセス権:(-perm mode -perm -mode -perm +mode)
    •  findコマンドの代表的な演算子
      • (\( 判別式 \) ! 判別式 判別式1 -a 判別式2「判別式1 -and 判別式2」「判別式1 判別式2」 判別式1 -o 判別式2)
    •  findコマンドの代表的なアクション
      • (-print -fprint ファイル名 -exec コマンド '{}' \; -exec コマンド '{}' + -ok コマンド \;)
  • 検索結果に対するコマンドの実行(find -exec/xargsコマンド)
    • find . -type f -exec コマンド '{}' \;
    • find . -type f -print0 | xargs -0 コマンド
    • find … -exec bash -c 'シェルコマンド文字列' \;
  • findコマンドを利用した便利なUNIXテクニック例
    • core、#*、*~を一括削除する
    • ユーザーが所有するファイルのみを検索して削除する
    • 検索して見つかった全ファイルを移動する
    • 検索して見つかった全ファイルをディレクトリ構造ごとコピーする
    • サイズと拡張子を条件にファイルを検索し、結果を別のファイルに書き込む
    • findコマンドの「許可がありません」を表示しない

第2回 ファイル・ディレクトリ名の一括置換/一括作成
  • 空のファイルを作成する
    • :,echo,cp を用いた方法に加え,mktemp.touchも.
  • ファイル・ディレクトリの一括作成
    • ディレクトリを一度に複数作成する
    • シェルの制御構文を利用してディレクトリを一度に複数作成する
    • ゼロパディングした名前のディレクトリを一度に複数作成する
    • シンボリックリンクのファイルを一括で作成する
  • ファイル名・ディレクトリ名の一括置換
    • 同一階層内のすべてのファイル・ディレクトリ名に拡張子を付ける
    • サブディレクトリに渡るすべてのファイル名から拡張子を取り除く
  • ファイル名置換に関する便利なUNIXテクニック例
    • サブディレクトリに渡るすべてのファイル名だけに拡張子「.bak」を付ける
    • 同一階層内のすべてのディレクトリ・ファイル名から拡張子「.bak」を取り除く
    • 同一階層の複数のファイル名の拡張子「.text」を「.txt」に置き換える
    • サブディレクトリに渡るすべてのファイルの拡張子「.text」を「.txt」に置き換える
    • サブディレクトリに渡るすべてのファイルの拡張子を「.txt」に変更する
    • サブディレクトリに渡る拡張子のないすべてのファイルに「.txt」を付ける
    • 同一階層のすべてのファイル名の先頭に「日付-」を加える
    • サブディレクトリに渡るすべてのファイル名の拡張子の前に「日付-」を加える

第3回「並べ替え」編 cut、head、tail、sort・・・定番のフィルタコマンドを使いこなす!
  • ファイル内文字列の分割(cut)
    • 例)「/etc/passwd」ファイルからユーザー一覧を出力
    • 例)カンマ区切りの2列目以降を切り出す
    • 例)1文字目と3文字目を切り出す
    • 例)スペース区切りの1列目と3列目を切り出す
    • 注:空白区切りの列を切り出すにはawk、sedなど
  • ファイル内文字列の結合(paste)
    • 例)2つのファイルの内容を結合して出力する
    • 例)lsコマンドの結果を3列で表示する
  • ファイル内文字列のソート
    • sort 例)CSV形式のファイルの2列目をソート対象として、昇順で並び替える
    • uniq 例)ファイルの重複行を1行にまとめ、同一行の数を出力
  • ファイル内の一部分を出力
    • head 例)1番最近更新されたファイルを表示する
    • tail 例)システムのログファイルをリアルタイムに表示する
  • ファイル内容の要約
    • wc 例)サブディレクトリを含むすべてのファイル数を数える
  • フィルタコマンドに関する便利なUNIXテクニック例
    • ディレクトリを「:(コロン)」で区切ってリストにする
    • 隠しファイル(.ファイル)を含むディレクトリ・ファイルのサイズを出力する
    • ランダムな文字列を出力する
    • IPアドレスをソートする
    • N行目からM行目を表示する
    • 末尾N行を削除して表示する
    • メモリを多用しているプロセス順に表示する
    • C言語ソースコードのステップ数(行数)をカウントする
    • よく利用するコマンドのリストを表示する
    • アクセスログから、アクセス数の多いIPアドレス順に並べる
    • アクセスログから、アクセスしたIPアドレスのホスト名一覧を取得する
    • 特定のディレクトリにアクセスした IP アドレス一覧を表示する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。