undyingのブログ -9ページ目

bash スクリプトのいろいろ

基本的なことですが、忘れちゃうことあるのでメモ。


ファイル形式のチェック
-b ファイル名 指定したファイルがブロックデバイスファイルなら真である。
-c ファイル名 指定したファイルがキャラクタデバイスファイルなら真である。
-d ファイル名 指定したファイルがディレクトリなら真である。
-f ファイル名 指定したファイルが通常ファイルなら真である。
-L ファイル名 指定したファイルがシンボリックリンクなら真である。
-p ファイル名 指定したファイルが名前付きパイプなら真である。
-S ファイル名 指定したファイルがソケットなら真である。

ファイルパーミッションのチェック
-g ファイル名 指定したファイルにSGIDがセットされていれば真である。
-k ファイル名 指定したファイルにスティッキービットがセットされていれば真である。
-r ファイル名 指定したファイルが読み取り可能なら真である。
-u ファイル名 指定したファイルにSUIDがセットされていれば真である。
-w ファイル名 指定したファイルが書き込み可能なら真である。
-x ファイル名 指定したファイルが実行可能なら真である。

その他のファイルのチェック
-e ファイル名 指定したファイルが存在すれば真である。
-s ファイル名 指定したファイルのファイルサイズが0より大きければ真である。

文字列のチェック
-n 文字列 文字列の長さが0より大きければ真である。
-z 文字列 文字列の長さが0であれば真である。
文字列1 = 文字列2 2つの文字列が等しければ真である。
文字列1 != 文字列2 2つの文字列が等しくなければ真である。

数値のチェック
数値1 -eq 数値2 2つの数値が等しければ真である。
数値1 -ge 数値2 数値1が数値2以上であれば真である。
数値1 -gt 数値2 数値1が数値2より大きいのであれば真である。
数値1 -le 数値2 数値1が数値2以下であれば真である。
数値1 -lt 数値2 数値1が数値2未満であれば真である。
数値1 -ne 数値2 2つの数値が等しくなければ真である。

論理結合
!条件 条件が偽であれば真である。
条件1 -a 条件2 条件1と条件2の両方が真であれば真である。
条件1 -o 条件2 条件1と条件2のどちらかが真であれば真である。


変数

$n nは数字であり、$0はシェルスクリプト名、以降$1、$2…は第1引数、第2引数…である。第10引数以降は${10}、${11}…で参照する。

$# 与えられた引数の個数

$@ $0以外の全ての引数("$@"のようにダブルクォーテーションで囲んだ場合"$1" "$2" …"のように個別に展開される。)

$* $0以外の全ての引数("$@"のようにダブルクォーテーションで囲んだ場合"$1 $2 …"のように展開される。)

$? 最後に実行したコマンドの終了ステータス $! 最後に実行したバックグラウンドコマンドのPID

$$ シェルのPID

$- 現在のオプションフラグ


演算子

< より小さい
> より大きい
<= 以下
>= 以上
== 等しい
!= 等しくない
&& かつ
|| または

カーネルモジュールのドライバディスク作成

当然のことカーネルモジュールはカーネルバージョンによって変わる。


各HWベンダのHPにカーネルモジュールはアップされているが、

自身のOSのカーネルバージョンがないことがある。


OSインストール時に同時にカーネルモジュールをインストールしたい場合

以下のようにドライバディスクを作成してインストール。

※ドライバディスクがない場合、OSインストールできないことがある。


■やり方1 (カーネルのマイナーバージョンの違いで、そんなに違いないかなとおもったとき)

1.ベンダのHPからドライバをDL。

2.FDに焼く。

3.modules.cgzというファイルがあるのでローカルにコピーして

  gzip -dc modules.cgz | cpio -id で解凍する。

4.解凍したらカーネルバージョンのフォルダがあるので

  インストールしたいOSのカーネルバージョンに変更する。

5.カーネルバージョンのひとつしたのフォルダを

  インストールしたいOSのタイプ(i386 や x86_64など)に変更する

6.find -name *.ko | cpio -oH crc | gzip -9 > modules.cgz

  で固める

7.できたmodules.cgzをFDにコピー


■やり方2 (上記だとまずいんじゃないか、間違いなく動作するものを作りたい)

1.別のサーバにまず希望のOSをインストールする(もちろん作成したいカーネルバージョンで)

2.ドライバのソースを持ってくる。

3.インストールしたOSでコンパイルして*.koなどを作成

4.find -name *.ko | cpio -oH crc | gzip -9 > modules.cgz

  で固める

5.ベンダのHPからドライバをDL。

6.FDに焼く。

7.作成したmodules.cgzをFDにコピー



ちなみにFDはmount /dev/fd0 /mnt or mount /dev/sd* /mnt などでマウントする。


statsの内容

success   成功した問い合わせの数(参照先以外の応答を返したもの)
referral   結果として参照先を返した問い合わせの件数。
nxrrset   要求されたタイプのレコードが定義されていないドメイン名に関する問い合わせの件数。
nxdomain  存在しないドメインネームを問い合わせた数。
recursion   ゾーン内のドメイン名に関する再帰的問い合わせの内、ネームサーバが更に問い合わせをしなければいけなかった件数。
failure    NXDOMAIN以外で失敗した問い合わせの数。