プロが教えるわが家の防犯対策術!

下記の様な使い方をした場合に、LINUXではOKでしたがSolaris8で実施したところ、"makes too many open files"になり処理が終了してしまいました。
回避策はあるでしょうか?
よろしくお願いいします。
cat $REQID | nawk -v JOBDATA="${JOBDATA}" -v HOSTNAME="${HOSTNAME}" '
{
.
.
.
}'

A 回答 (3件)

for ループで 毎回 awk を実行するのは効率が悪いので、


awk の中でオープンしたファイルを close すべきだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今から、再度見直すため、上記の意見を参考に処理を考えて見ます。

お礼日時:2006/10/24 09:19

nawkではオープン出来るファイルの数に上限があり、その上限を超えてファイルをオープンしようとすると「makes too many open files」になります。


なので、nawkを使用する上で問題があるとしたら省略された処理の方だと思います。

回避策は、処理自体を考え直すか、処理は直したくないならLinuxはGNU awkでしょうから、そちらで問題がないならGNU awkをインストールするとか。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考にさせていただいて、for文で必要な項目をひとつずつawkで処理するように変更しました。

お礼日時:2006/10/23 14:56

問題はnawkではなく、シェルの展開の仕方の違いにあるような気がします。


linuxでは/bin/sh は実体がbashだったりすることが多いので。

Solarisではどのようなコマンドラインがnawkに渡されているか
確かめてみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
早速、確認してみます。

お礼日時:2006/10/23 12:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!