別のスクリプト内でスクリプトを実行し、ログファイルにリダイレクトを含めることはできますか?
大きなスクリプトで3つのスクリプトを実行しようとしています。そのうちの1つを「今」実行する必要があります。以下は、手動で実行する必要がある操作の例です。
sample_script1.sh
at now
sample_script2.sh > sample_script2.log
2>&1
(CTRL + D)
tail -f sample_script2.log
sample_script3.sh
私はこれを試しました(そして他の構文、特に引用された構文を使用していくつかの他の繰り返し):
sample_script_location="$HOME/sample_script.sh"
sample_script_log_location="$HOME/sample_script.log"
echo ""$sample_script_location" > "$sample_script_log_location" 2>&1" | at now
設計どおりに実行すると、手動プロセスはログファイルの下部に「SQL> SP2-0042:不明なコマンド「2>&1」を記録します。エコーを「今」にパイプするスクリプトを使用してこれを実行すると、このメッセージは表示されません。
ベストアンサー1
{ echo a; echo b 1>&2; echo c 1>&2; } 2>&1
a
b
c
いくつかのコマンドを{}中括弧で囲むことができます。望むよりhelp {
。
at now
いわゆる餌を与えることができますhere-document
sample_script1.sh
at now 2>&1 <<EOF
sample_script2.sh > sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh
script2のstderrをログに記録するには、次の手順を実行する必要があります2>&1
。>sample_script2.log
sample_script1.sh
at now <<EOF
sample_script2.sh 2>&1 >sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh
このtail -f
コマンドはキャンセルされるまで実行されるため、バックグラウンドに置くか、最後のコマンドとして実行する必要があります。望むよりhelp bg
。