AIX tech tip:Bye-bye loops–代わりに’apply’コマンドを使用します

六角形の抽象技術の背景
AIXコマンドラインの最もよく知られている秘密の一つは、”apply”コマンドです。

聞いたことない? さて、クラブへようこそ。 二人の同僚と私はAIXで60年以上の経験を持っていましたが、私たちの間では一度も”apply”に遭遇したことはありませんでした。

だから、それは何をし、なぜそれを学ぶべきですか? 非常に単純に、”apply”は一連のパラメータに対してコマンドを実行します。 これは、ディスクやその他のデバイスのセット全体のチューニングパラメータを変更する場合などに便利です。 または、いくつかのファイルからいくつかの情報をリストする必要があるかもしれません。 あなたの友人は”適用”です。

すでに基本的なスクリプトに精通している場合は、”for”ループを実行することといくつかの類似点があります。

ここでは、applyコマンドの基本的な使用方法を説明します。 単語のリストにコマンド”echo”を適用しましょう。

apply "echo" all cows eat grassallcowseatgrass

それほど刺激的ではないと思いますが、構文は”for”ループを使用するよりも簡単です。 ここでは、それがどのように見えるかです:

for i in all cows eat grassdoecho $idone

“apply”を使用すると、”apply”とコマンド(この例では”echo”)を指定するだけです。

牛の料理の習慣についての言葉をもう少し技術的なものに置き換えてみてはいかがでしょうか? 物理ボリュームのセットの属性を一覧表示します。

属性を一覧表示するコマンドは次のようになります:

lsattr –El hdiskN

したがって、”apply”コマンドを使用するには、次のようになります:

apply "lsattr –El" hdisk0

aixシステム上のすべてのディスクでさえ、いくつかのディスクに対してこれを実行したい可能性があります。 ディスクを一覧表示するには、次のコマンドを使用します:

lsdev –c disk –F name

これは、次のようなディスクのリストを生成します:

hdisk0hdisk1hdisk2

というように。

applyコマンドでは、それらのディスクを一つずつ一覧表示する代わりに、それらを一覧表示するコマンドを指定できます。 それはbackticksのいずれかである必要があります:

`lsdev –c disk –F name`

またはcommand(コマンド)構文を使用します:

$(lsdev –c disk –F name)

今ではそれをすべて一緒に置くための時間です。 ディスクのリストに適用しているlsattrコマンドにはスペースがあるので、引用符で囲む必要があります:

apply "lsattr –El" $(lsdev –c disk –F name)

これは、変更を加えたい場合にも非常に便利です。

一つのディスクのキューの深さを変更するコマンドは次のとおりです:

chdev –l hdisk0 –a queue_depth=16 –P

すべてのディスクに対してこれを行うには、ディスク名(hdisk0)を%1に置き換えます。 これは、applyコマンドの各リストで生成された最初のパラメーターを示すためです。

:

apply "chdev –l %1 –a queue_depth=16 –P" $(lsdev –c disk –F name)

いくつかのログファイルの最後の20行を見るためにtailコマンドを実行する方法は次のとおりです:

apply "tail -20 %1" $(ls *.log)

あなたはこれを実行することができると思うかもしれません:

tail -20 *.log

しかし、tailコマンドは一度に1つのファイルしか処理できません。

ここに別の例があります。 ファイルを変更する前に、一連のファイルのバックアップを作成するとします。 これを行うには多くの方法がありますが、applyコマンドは非常にうまく機能します:

apply "cp %1 %1.bak" $(ls *.cfg)

applyコマンドの少し珍しい構文に慣れたら、おそらくそれを愛し始めるでしょう。 特に、コマンドを1行で実行する必要がある場合は、常に使用します。

1991年以来IBM systemsに取り組んできたAnthony Englishは、AIXと仮想化があらゆる種類のビジネス環境をどのように管理できるかを見てきました。 彼はIT分野でよく知られている著者であり、http://anthonyenglish.com.auのブログを通じてビジネスシステムの改善について書いています。 アンソニーはオーストラリアのシドニーに拠点を置き、妻と七人の子供たちと一緒にいます。

Leave a Reply

コメントを残す

メールアドレスが公開されることはありません。