-1

linux: スクリプト ツール(ファイル)によるすべてのアクションをログ ファイルに保存する方法

こんにちは、みんな、

1) すべてを含むスクリプト ファイルを作成したことをログに記録したいと考えています (たとえば、一部の関数には、削除するファイルとログ ファイル内のファイル名を含む必要があるファイルの削除 (rm -rf $file) が含まれる場合があります)。これは、スクリプト ファイルが実行したすべてのことを意味します。

2) 1) 質問に対処する場合、読みやすい形式で出力できますか?

皆さん、ありがとうございました。アドバイスをいただければ幸いです。

4

1 に答える 1

1

私は2つの選択肢を考えることができます:

  • またはechoにとって重要と思われる特定のコマンドをログに記録するために使用します。stdoutstderr

    echo "rm -rf $f"
    rm -rf "$f"
    

    出力先stderr:

    echo "rm -rf $f" >&2
    rm -rf "$f"
    

    残念ながら、この方法は手動で行う必要があるため、適用するのが非常に面倒になる可能性があります。コマンド引数にスペースが含まれている場合にも問題があります。確実に区別できるようにするには、出力を引用するのに多くの作業が必要です。"a" "b""a b"

  • -x/xtraceオプションを有効にして bash を実行します。マニュアルから:

    -バツ

    コマンド、case コマンド、select コマンド、およびコマンドとその引数または関連する単語リストの算術演算の単純なコマンドのトレースを、展開後および実行前に出力します。PS4 変数の値が展開され、結果の値がコマンドとその展開された引数の前に出力されます。

    使用するには、 および を使用set -xset +xて、スクリプトの特定の部分のオプションを有効/無効にするか、bashコマンド ラインに入力するだけです。

    bash -o xtrace script.sh
    

    xtraceサブシェルで再帰的に使用するには、この質問を見てください。

    この代替方法の欠点の 1 つは、出力が非常に冗長で、明示的なメッセージほど読みにくいechoことです。これは、通常の操作でログを記録するのではなく、スクリプトのデバッグに主に適しています。

于 2012-08-19T06:45:38.267 に答える