UbuntuをVirtualBoxで動かしてみた

最近Linuxを全然触っていないので適当なディストリビューションの最新版を触ろうと思い立ちました。適当に眺めていたところUbuntuが .vhd でOSイメージを配布しているしVirtualBoxでの起動方法について公開してくれていたので未だ現役稼動中のXPマシンにインストール決定です。

詳細についてはサイトを参照した方が早いので気が付いたところだけ覚書。
続きを読む UbuntuをVirtualBoxで動かしてみた

OS: hosts でDNS参照回避

バックアップサーバとの通信などの理由で同じAD上にいるサーバに対してセカンダリのセグメントで通信を行いたい場合の設定。hostsに書けば良いのは当たり前の話なんだけれど、ロングホストネームで通信を取りに行くケースが十分考えられるので、こんな風にしてみた。

コンピュータ名(ロング)
foo.hogehoge
プライマリIPアドレス
192.168.100.10
セカンダリIPアドレス
192.168.200.10

これでhostsを登録する場合はこんな感じ。ショートでは登録しない。また相互に通信する必要がある事が大半だし、行きと帰りの経路が一致しないのも気持ち悪いので相手側のサーバにも確りと書いて置くことが必要。

192.168.200.10	foo.hogehoge

こうするとpingで確認してみた場合もこんな感じになる。尚、登録サーバ相手にのみ 192.168.200 のネットワークで通信を行うので、それ以外のAD上のサーバには 192.168.100 のネットワークで通信する。

C:UsersAdministrator>ping foo.hogehoge

foo.hogehoge [192.168.200.10]に ping を送信しています 32 バイトの
データ:
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128

192.168.200.10 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

C:UsersAdministrator>ping foo

foo.hogehoge [192.168.200.10]に ping を送信しています 32 バイトの
データ:
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.200.10 からの応答: バイト数 =32 時間 <1ms TTL=128

192.168.200.10 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

逆にショートの場合だけセカンダリを通すというのもアリだけれど、最近のMS系ソフトだとAD認証を使ってアプリケーション上での動作を承認したりするので、上のようなやり方の方が良いと思う。

AIX 5L: resolv.confの登録方法

AIX って resolv.conf も smitty から作らなければいけないのね…という事で覚書。

# smitty resolv.conf

こんな感じでCUIを起動すると、次の様な画面が出てくるんですね。

                          ドメイン・ネームサーバー (/etc/resolv.conf)

カーソルを選択したい項目に移動して、ENTER キーを押してください。

  ネームサーバーの使用の開始
  ネームサーバーをすべてリスト
  ネームサーバーの追加
  ネームサーバーの除去
  ネームサーバーの使用の停止
  -------------------------------
  ドメインの設定/表示
  ドメインの除去
  ドメイン検索リストの設定/表示
  ドメイン検索リストの除去

初期の場合は “ネームサーバーの使用の開始” から “新規 /etc/resolv.conf ファイルの作成” を選択するとファイルを作成してくれた上に domain 句と nameserver 句の入力を促されます。

まあ、便利って言えば便利なんですがこのあたりはサクッと vi あたりで済ませたいな…と思うのは私だけでしょうか。

RHEL3: gssftpを起動する

RHEL3をインストールした際に一緒に導入されるgssftpを、セキュリティとか余り気にしないでパッと上げてしまいます。
限られたイントラとか期間限定とかでない限りはオススメできません。

検索すればいくらでも引っかかるでしょうが、一応覚書という事で。

  1. /etc/xinetd.dを編集
    # diff gssftp.org gssftp
    6c6
    <       disable = yes
    ---
    >       disable = no
    12c12
    <       server_args     = -l -a
    ---
    >       server_args     = -l
  2. xinetdの再起動
    # /etc/rc.d/init.d/xinetd restart

これで通常のFTPサーバとして稼動する筈。

Tru64: IPを使いまわそうとしたらpingが飛ばない

使用しなくなったIPを他の端末に割り当てるなんて事は職場なんかだとよくあります。その際にpingが飛ばないなんて事態が発生したらルーティングテーブルをチェックしてみよう!という話。

# netstat -r
Routing tables
Destination      Gateway            Flags     Refs     Use  Interface

Route Tree for Protocol Family 26:

Route Tree for Protocol Family 2:
default          192.168.10.100     UGS        18 92221806  nr0
loop             localhost          UR          0       14  lo0
localhost        localhost          UHL         5 183093066  lo0
192.168.10.110   xxxxxx01           UGHS        0      161  nr1

例えば、192.168.10.110を振った新しい機器がxxxxxx02だとすると、xxxxxx01が邪魔してうまく参照できない状態になっていたりするかも。そんな時はルーティングテーブルからエントリを削除します。

route delete -net 192.168.10.110 xxxxxx01

そうすると新しいエントリが登録されてめでたしめでたし。

BSD: PIDを用いた自己監視スクリプト

業務上でスクリプトが想定を上回る実行時間となった場合にメッセージを出力する仕組を考える必要がありました。基本的には次の流れで監視を行います。

  • 親プロセスから監視用の子プロセスを生成する
  • 子プロセスはバックグラウンドで動作させる
  • 親プロセスのPIDをファイルで保存する
  • 子プロセスはPIDファイルの内容が存在するかを確認する

今回の監視パターンは常駐型ではなくて時限式です。ある一定の時間が経過した際に親プロセスが存在するかどうかを確認するような形式になります。

今回使用したスクリプトを2本掲載します。あくまでも実験用ですので本番稼動中のシステムでそのまま利用するような事はしないように!安全性を考えると実際には稼動しているプロセスの詳細情報も組み入れる必要があります。

$ cat getpid.ksh
#!/bin/ksh
pidfile=getpid`date +%Y%m%d%H%M%S`.pid
logfile=killpid.log
export pidfile logfile
 
echo $$ > $pidfile
date >> $logfile
ksh -x killpid.ksh >> $logfile &
 
sleep 10
 
exit
$ cat killpid.ksh
#!/bin/ksh
 
sleep 5
 
echo $pidfile
ps `cat $pidfile`
if [ $? -eq 0 ]; then
echo PID `cat $pidfile` exist.
else
echo PID `cat $pidfile` not exist.
fi
rm -f $pidfile
exit

getpid.ksh が親プロセスで killpid.ksh が子プロセスになります。双方に入っている sleep は大小を逆転する事でプロセスが “存在する場合” “存在しない場合” を確認する為のものです。正直なところ見所は変数 $$ を用いたPIDの取得だけですが、興味のある方は一度試してみてください。思わぬ所で役に立つかも。

AIX : smitty user でのumask設定値

通常 .profile などで umask を実行するものですが、AIXの場合は smitty user から umask の値が設定できるんですね。便利だなあ。

  1. smitty user
  2. Change / Show Characteristics of a User
  3. ユーザ名指定
  4. File creation UMASK 値の設定

この設定変更は /etc/security/user に反映されます。全ユーザの設定パラメタが拾えるのでユーザ管理の際には手っ取り早くて良いかも。

因みに umask の利用についてですが umask 000 のような事は行わないほうが良いでしょう。指定しなければ何でもかんでもオープンというのは宜しくありません。ファイルであれば chmod でディレクトリであれば mkdir -m Mode でその度に権限設定をした方が良いと思われます。

AIX 5L 5.3版tarの上限値

同僚が引っかかっていた事象です。10GBのファイルをtarでテープに落とそうとするとエラーで蹴られたとの事。今後も何かと引っかかるかもしれないので覚え書き。

AIX5Lからmindオプションがデフォルトで指定されているので、 524288 個のファイルを扱うことができます。
tarコマンドで524288 個以上のファイルを扱うと、 ENOMEM エラーがでます。

8GBを超えるファイルを扱う場合のはbackup/restoreコマンド、dd コマンド、または、paxコマンドを使ってください。

ファイル数の上限は滅多な事が無い限り問題ないとは思いますが、8GBの制限は辛いなあ。少々大きなDBになると8GBなんて超えちゃうケースなんてざらにあるような気がするのですが。

参考URL
IBM – AIXにおけるtarコマンドの仕様について

サブディレクトリのオーナーを一括変更する

今更ではあるけれど、便利だなと思ったオプション。

$ chown -R foo:hoge *

これでサブディレクトリ内も含めて一気にオーナー変更をかけられます。この-R は chmod や chgrp でも利用可能です。FTPで転送したファイル群のパーミッションをフルにしたい場合なんかは、かなり使えるのではないかなと。

因みにグループを含めた変更を行う際に使う “:” ですが、私はこれまで “.” を使い続けてきました。マニュアルによってはどちらでも良いような感じで書いてあるものもあるようですが、 “:” の方が標準ぽいですね。これから気をつけて入力するようにします。

xargsを使って引数の制限を無視してみる

以前ファイルディスクリプタの罠というエントリをあげましたが、無差別に処理したいならこっちの方が使えるかも。

% echo * | xargs rm -f

このxargsがなかなかの曲者。引数の上限値に併せて処理を分けてくれるらしいので、結果制限値を無視して処理ができます。でも、findを使ってフィルタリングする場合には、-execで実行してしまっても良いのかな。