AIX

アカウントロック解除
CR改行コード削除
MACアドレスを表示
【awk】改行区切りのデータを扱う
evalの使い方 その2 必要な変数だけセットする
evalの使い方 その1 動的に変数を作る
AIXファイルシステム系各種上限
DNS設定の大枠
ユーザー・グループの追加
リンク(Fixダウンロードとか相性とか)
rootvgミラーディスク交換
シェルの関数のトレースを取る時
syslogの設定
kshで配列
ksh93で連想配列
ネットワーク使用率の取り方
カーネルモード(NN bit)表示
パターン適合演算子
bcで16進数変換
KSHのIF文の基本
tar (リストファイルで固める)
xargs基本の基本(必要にして十分?)
AIX起動時のログ確認


アカウントロック解除

unsuccessful_login_count が loginretriesカウント(@/etc/security/user default:5)を超えるとログイン不可となります。

lsuser -a unsuccessful_login_count hoge_user
chuser unsuccessful_login_count=0 hoge_user


改行コードを削除

tr -d '\015' < input.txt > output.txt


MACアドレスを表示

lscfg -vl ent0



【awk】改行区切りのデータを扱う

grep -v '\*' /etc/security/user | 
awk 'BEGIN{RS="";FS="\n"}{gsub("\n",""); print  }'

(でもEXCELにコピペして「行列を逆に入れ替える(E)」ペーストした方が速い罠)


evalの使い方 その2 必要な変数だけセットする

変数をenvファイルに一括指定できて読みやすいです。数個~十個までの変数を切り替えるなら、このやり方がいいかもしれません。
(それより多い変数を扱うのであればENVファイルを複数作って切り替えた方がいいかも)

$ cat b.txt
HOGE=PIYO1;FOO=BAR1; # Setting of AAA
HOGE=PIYO2;FOO=BAR2; # Setting of BBB
export HOGE FOO # AAA BBB

$ grep AAA b.txt
HOGE=PIYO1;FOO=BAR1; # Setting of AAA
export HOGE FOO # AAA BBB

$ eval `grep AAA b.txt`

$ echo $HOGE
PIYO1



evalの使い方 その1 動的に変数を作る

ややマニアックですが、連想配列っぽく(柔軟じゃないけど)使えます。
あるいはcase文を使うよりもタイプ量が減るとか。
ただし、やや難読性が高まるかな・・・。

$ cat a.sh
#!/bin/sh

hoge_a=1
hoge_b=2
hoge_c=3

list="a b c"

for val in $list
do
echo '$hoge_'$val
eval echo '$hoge_'$val
tmp=`eval echo '$hoge_'$val`
# $tmp の値を見て処理を切り替え
done

$ ./a.sh
$hoge_a
1
$hoge_b
2
$hoge_c
3


AIXファイルシステム系各種上限

いろいろあるのでメモ。
実際に下記制限に抵触する可能性があるシステムであれば、サポート等に裏を取っておく必要がありそう。
/etc/limitsのfsize=-1 前提。

■ JFS2
- 最大ファイルシステムサイズは16TB(推奨値)
-最大ファイルサイズは16TB
そんなファイルとは当面縁がないと思いたい。(運用できないし・・・)

■ JFS(ラージファイルイネーブル)
- 最大ファイルシステムサイズは1TB
-最大ファイルサイズは64GB
ファイルシステムサイズorファイルサイズが2GBを超える可能性があれば、ラージファイルイネーブルかJFS2にすること。

■ tar, paxの上限
ハッキリ言って不明。
経験上「最終的に2GBを超える」or「単体で数GBのファイルをいくつか扱う」程度なら問題ないと思われる。
ファイルサイズがそれ以上になる場合は、サポートに裏を取った方がよいと思われる。

参考)
AIX: LVM、JFS2の制約について
JFS および JFS2 について
JFS および JFS2
AIX: tarコマンドのサイズ制限
tar コマンド(infocenter)


DNS設定の大枠

DNS
「DNSには機能が三つある」と理解すると早い。

  1. ホスト名からIPアドレスを引く機能
  2. IPアドレスからホスト名を引く機能(いわゆる逆引き)
  3. もう一つは自分が管理していないアドレスを、ルートサーバーに問い合わせる機能。

/etc/named.confでそれぞれのデータベースファイルを定義している。
その他注意。

  • 複数のセグメントのホスト名を管理している場合、逆引きデータファイルはセグメントごとに作成することになる(named.conf上でセグメント毎に定義するため(in-addr.arpa))。正引きデータファイル(外部zoneファイル)にはセグメントの概念がないので、ずらずら書いていけばOK。
  • FQDNの指定に注意すること。
  • /usr/sbin/named-checkzone, named-checkconfig を使ってある程度はチェックが出来る
  • (あまり関係ないけど)/usr/sbin/named8, named9をリンクで切り替えることで、bindのバージョンを決めることが出来る
  • DNSに登録されていないIPを持つ端末から、そのDNSを利用するサーバにTELNET, FTPなどすると、端末のIPを逆引きしようとする。DNSに登録されてない場合はタイムアウトまで待たされることになりログインが遅くなる

参考URL)
システム奮闘記:その22「BINDでDNSサーバー構築
@IT「すべての基礎、マスター・ゾーンサーバの設定


ユーザー・グループの追加

mkgroup id=1000 hogeadmin
mkgroup id=1001 piyoadmin
mkuser -a id=1000 pgrp=hogeadmin admin=false groups=hogeadmin,piyoadmin hogeadmin
echo "hogeadmin:hogeadmin" | chpasswd -c 


リンク(Fixダウンロードとか相性とか)

System Storage Interoperation Center (SSIC)
http://www-03.ibm.com/systems/support/storage/ssic/interoperability.wss

ファームウェアの入手方法、適用方法等
http://www-933.ibm.com/support/fixcentral/


rootvgミラーディスク交換

hdisk0 : 障害ディスク
hdisk1 : 正常ディスク
とする。

(障害発生ディスクを確認。情報取得計コマンド)
errpt
errpt -aj [IDENTIFIER]
lspv hdisk0
lsvg -p rootvg
lsvg -l rootvg

(念のためプロダクトを停止)

(/dev/ipldevice の再作成)
ipldeviceを確認して、障害ディスク側にリンクがある場合はipldeviceを削除する。
i-node番号が同じ場合はそのディスクにipldeviceがある。
(ipldeviceと障害ディスクのinode番号が異なる場合、ipldeviceのrmによる削除ならびに
lnによる再作成は必要ない)

# ls -i /dev/rhdisk0 /dev/ipldevice
# rm /dev/ipldevice

inode番号が同じだった場合は正常なディスクを差したipldevice再作成する。
(hdiskの前の"r"を忘れないように)
# ln /dev/rhdisk1 /dev/ipldevice

(ミラー解除)
unmirrorvg rootvg hdisk0

以下のようなメッセージが出るのでchpv -c を実行する。
(わたしは基本無視してきた。IBMサポートサイト(※1)には
「念のため実行した方がよい」との記載あり。)

>  0516-1246 rmlvcopy: hd5 がブート論理ボリュームである場合には、
>       rootユーザとして'chpv -c 'を実行して、ブート・レコードを消去し、
>       この論理ボリュームの移動/除去元のディスク上に存在していることがある古い
>       ブート・イメージがブート・オフされる可能性を回避してください。
>  0516-1132 unmirrorvg: quorum の必要性がオンにされました。これを rootvg に対して
>       有効にするためにシステムを再始動してください。
>  0516-1144 unmirrorvg: rootvg は正常にミラーリング解除されました。システムの
>       bosboot を実行してブート・レコードを初期化し直す必要があります。その後
>       hdisk0 を組込むために bootlist を修正してください。

lsvg -l(でミラーが解除されたことを確認)

(ダンプデバイス定義の削除)
lspv -l hdisk1
sysdumpdev -l
-------------------------------------------------
 1次                 /dev/lv_sysdump0
 2次                 /dev/lv_sysdump1
 コピー・ディレクトリ /var/adm/ras
 強制的なコピー・フラグ TRUE
 常時、ダンプを許可   TRUE
 ダンプ圧縮           ON
-------------------------------------------------

(定義の削除)
(障害発生ディスクがhdisk0の時)
sysdumpdev -Pp /dev/sysdumpnull
             ^
(障害発生ディスクがhdisk1の時)
sysdumpdev -Ps /dev/sysdumpnull
             ^
(障害発生ディスクがhdisk0の時)
rmlv lv_sysdump0
               ^
(障害発生ディスクがhdisk1の時)
rmlv lv_sysdump1
               ^
(ディスク削除)
lsvg -p rootvg
-------------------------------------------------
 rootvg:
 PV_NAME       PV STATE     TOTAL PPs     FREE PPs     FREE DISTRIBUTION
 hdisk0        missing      542           65           00..00..00..00..65
 hdisk1        active       542           65           109..108..108..108..109
-------------------------------------------------
reducevg rootvg hdisk0
lsvg -p rootvg
lsdev -Cl hdisk0
rmdev -l hdisk0
(CEさんからHotswap交換するので"-d"オプションは使わないで欲しいと言われた)
lsdev -Cl hdisk0

(ブートイメージ再作成)
bosboot -a -d /dev/hdisk1
bootlist -m normal hdisk1
bootlist -om normal 
-------------------------------------------------
hdisk1
-------------------------------------------------

shutdown -F

(CEさんによるディスク交換作業)

(ディスク追加作業)
lsdev -Cl hdisk0
extendvg -f rootvg hdisk0
lsvg -p rootvg
mirrorvg rootvg hdisk0
- 300GBで20分くらいかかった。
lsvg -l rootvg 

(ダンプデバイス設定)
lslv lv_sysdump1
※ 正常なダンプデバイス
-------------------------------------------------
 COPIES:             1                      SCHED POLICY:   parallel
 LPs:                4                      PPs:            96
 STALE PPs:          0                      BB POLICY:      relocatable
-------------------------------------------------
- LPsの数を記録する。

mklv -y lv_sysdump0 -t sysdump rootvg [上で記録したLP数] hdisk0

(ダンプデバイス設定確認 -1)
lslv lv_sysdump0

- LPsの数の数が同じことを確認する。

(ダンプデバイス設定 -2)
(障害発生ディスクがhdisk0の時)
sysdumpdev -Pp /dev/lv_sysdump0
             ^
(障害発生ディスクがhdisk1の時)
sysdumpdev -Ps /dev/lv_sysdump1

-------------------------------------------------
 1次                 /dev/lv_sysdump1
 2次                 /dev/lv_sysdump2
 コピー・ディレクトリ /var/adm/ras
 強制的なコピー・フラグ TRUE
 常時、ダンプを許可   TRUE
 ダンプ圧縮           ON
-------------------------------------------------

(ブートディスク設定)
bosboot -a 
bootlist -m normal hdisk0 hdisk1 
bootlist -om normal 

(最終確認)
lspv hdisk0
lsvg -p rootvg
lsvg -l rootvg

-物理パーティション数(PPs)が論理パーティション数(LPs)の2倍
-論理ボリュームが配置されている物理ボリューム数(PVs)が2
-論理ボリュームの状態(LV STATE)がsyncd
-Quoramの設定が 1

shutdown -Fr 
(最終確認+errpt)

以上で完了。

(※1)http://www-01.ibm.com/support/docview.wss?uid=jpn1J1008235
その他参考URL)
http://solaris10.sakura.ne.jp/index.cgi?page=AIX%A5%C7%A5%A3%A5%B9%A5%AF%B8%F2%B4%B9%BC%EA%BD%E7
http://homepage3.nifty.com/sony/sd/contents/aix_tips.htm


シェルの関数のトレースを取る時

typeset -tf [Function名]


syslogの設定

ログファイルが存在しないと出力されないため、存在しない場合はtouchが必要。
その後 refresh -s syslogd
動作確認は logger -p user.err "message"


kshで配列

シェルプログラムで配列が必要となることはほとんどありませんが、たまにあるのでメモ。

#!/bin/ksh
set -A hoge `ls`
i=0
echo "件数: ${#hoge[*]}"
echo "配列走査"
while (( $i < ${#hoge[*]} )) ; do
    echo ${hoge[$i]}
    ((i=i+1))
done
echo "全部出力"
echo ${hoge[*]}

 


ksh93で連想配列

シェルプログラムで連想配列が必要となることはほとんどありませんが、たまにあるのでメモ。

[root@host] # cat tmp.ksh
#!/bin/ksh93
typeset -A hoge=(
[aaa]='111'
[bbb]='222'
);
key="aaa"
print ${hoge[$key]}
key="bbb"
print ${hoge[$key]}
[root@host] # ./tmp.ksh
111
222


ネットワーク使用率の取り方

# netstat -I enX Interval_sec

(MTU/2) x 8bit x In(Out)Pkts / Interval_sec / (1024*1024)
秒あたりのパケット数にMTU/2を掛ける。本当はパケット×MTUで、概算のデータ量が分かるはずだけど、実際には空のSYN/ACKが多いため、二で割っておく。後は秒で割ったり、単位をMbitにしたり。


カーネルモード(NN bit)表示

bootinfo -K


パターン適合演算子

[root@host] # file=hoge.ksh
[root@host] # echo ${file%.ksh}
hoge

シェルのログ設定するときこれ使うとスマートですね。

shell=`basename $0`
shell_log=${shell%.*}.log

sed使っても出来ますけど。

echo $shell | sed 's/..*$//'


bcで16進数変換

echo "ibase=16;obase=A;F"| bc

大文字じゃないとダメなので注意。


KSHのIF文の基本

[user@host] # cat hoge.ksh
#!/bin/ksh

i=0

if (( $i == 0 ))
then
echo "true"
fi

if [ -f hoge.ksh ]
then
echo "true"
fi

if [ $i -ne 0 ]
then
echo "true"
fi
[user@host] # ./hoge.ksh
true
true
true


tar (リストファイルで固める)

ls > tmp.tmp
tar -cvf hoge.tar -Ltmp.tmp

“-cvf”のハイフンが大事。


xargs基本の基本(必要にして十分?)

# xargs -I{} ls -l {}


AIX起動時のログ確認

起動ログ

# alog -o -t boot

サービス起動ログ

# alog -o -f /var/adm/ras/conslog
  • トラックバック 停止中
  • コメント (0)
  1. コメントはまだありません。