bash 条件式メモ
■bashの条件式
よく忘れるのでメモ
(man bashよりhttp://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html )
-a file
file が存在すれば真となります。
-b file
file が存在し、かつブロック特殊ファイルならば真となります。
-c file
file が存在し、かつキャラクタ特殊ファイルならば真となります。
-d file
file が存在し、かつディレクトリならば真となります。
-e file
file が存在すれば真となります。
-f file
file が存在し、かつ通常ファイルならば真となります。
-g file
file が存在し、かつ set-group-id されていれば真となります。
-h file
file が存在し、かつシンボリックリンクならば真となります。
-k file
file が存在し、かつ ``sticky'' ビットが設定されていれば真となります。
-p file
file が存在し、かつ名前付きパイプ (FIFO) ならば真となります。
-r file
file が存在し、かつ読み込み可能ならば真となります。
-s file
file が存在し、かつそのサイズが 0 より大きければ真となります。
-t fd
ファイル・ディスクリプター fd がオープンされており、かつ端末を参照していれば真となります。
-u file
file が存在し、かつ set-user-id ビットが設定されていれば真となります。
-w file
file が存在し、かつ書き込み可能ならば真となります。
-x file
file が存在し、かつ実行可能ならば真となります。
-O file
file が存在し、かつ (実行中のシェルの) 実効ユーザ ID に所有されていれば真となります。
-G file
file が存在し、かつ (実行中のシェルの) 実効グループ ID に所有されていれば真となります。
-L file
file が存在し、かつシンボリックリンクならば真となります。
-S file
file が存在し、かつソケットならば真となります。
-N file
file が存在し、かつ前回読み込まれた後に修正されていれば真となります。
file1 -nt file2
file1 が (変更日時に関して) file2 より新しければ真となります。
file1 -ot file2
file1 が file2 より古ければ真となります。
file1 -ef file2
file1 と file2 とでデバイス番号と i-ノード番号が同じならば真となります。
-o optname
シェルオプション optname が有効ならば真となります。後述する組み込みコマンド set に対するオプションの説明中にあるオプション一覧を参照してください。
-z string
string の長さが 0 ならば真となります。
-n string
string
string の長さが 0 でなければ真となります。
string1 == string2
文字列が同じならば真となります。== の代わりに = も使えます。
string1 != string2
2 つの文字列が異なれば真となります。
string1 < string2
現在のロケールにおいて、string1 が string2 よりも辞書順で前にある場合に真となります。
string1 > string2
現在のロケールにおいて、string1 が string2 よりも辞書順で後にある場合に真となります。
arg1 OP arg2
OP は -eq, -ne, -lt, -le, -gt, -ge のいずれかです。
これらの二値演算子が真を返すのはそれぞれ、
-eq arg1 が arg2 に対して等しい場合
-ne 等しくない場合
-lt 小さい場合
-le 小さいか等しい場合
-gt 大きい場合
-ge 大きいか等しい場合です。
arg1 や arg2 には、正または負の整数を使用できます。
xen domain-0へのメモリ割り当て
xenでゲストOSを30台弱起動させたところ
xen_net: Memory squeeze in netback driver.
というメッセージが表示されるようになった。
domain-0へのメモリ割り当てを明示的に指定しないと
メモリがうまく使えずでるらしい。
/etc/grub.confのカーネル行に
kernel /xen.gz-2.6.18-128.el5 dom0_mem=1024M
として1G割り当てるようにした
I/Oスケジューラ
CentOS5からIOスケジューラを変更できるようになった
以下の4種類から選べる
1.deadline
read/write それぞれに時間制限を設けて、一定時間以上処理されていなければ
それを最優先で処理させるようにする
一定時間のデフォルト値はreadが500ミリ秒、writeが5000ミリ秒
2.noop
キューにたまったI/O要求を物理的な配置上に並べ替える以外の特別なスケジューリングはしない
のでオーバーヘッドは少ない。
シーク待ちが発生しないディスク等に向いている
3.cfq
Completely Fair Queuingの略
特定のプロセスやスレッドにI/Oが偏るのを防ぐ。
多くのLinuxのデフォルトのスケジューラ
4.anticipatory
発行されたI/O要求から未来のI/O要求を予測する
一部の離れたI/O要求の処理を止めて近くのI/O要求を処理することによって
シーク待ち時間を短くする
スケジューラの確認
cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
キューサイズの確認
cat /sys/block/sda/queue/nr_requests
128
変更は以下のように実施。
echo noop > /sys/block/sda/queue/scheduler