コマンドを実行しています。
mv /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.32423423424
シェルスクリプトを使用します。
ファイルerror.log
が利用できないため、コマンドは自動的にログファイルにエラーメッセージを書き込みます。エラーメッセージはmv: cannot rename /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.32423423424
2行に折り返されません。
これはシステムによって生成されたエラーメッセージであるため、エラーメッセージの各行の長さを制御することはできません。メッセージの長さが80に達したら、システムはメッセージをラップしたいと思います。
答え1
mv
名前を変更する前にソースファイルが存在することを確認して、これらの試みを保護できます。
test -f /prod/new/outputlog/error.log &&
mv /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.32423423424
あるいは、エラーメッセージをキャプチャして2行に分割してみることもできます。
mv /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.32423423424 2>&1 |
fmt -s -w80 >&2
答え2
エラーメッセージを混同しないでください。ファイルを移動する前にテストしてください。
if [ -f /prod/new/outputlog/error.log ]; then
mv /prod/new/outputlog/error.log \
/prod/hist/new/outputlog/error.log.32423423424
fi
またはショートカットロジックを使用してください。
[ -f /prod/new/outputlog/error.log ] &&
mv /prod/new/outputlog/error.log \
/prod/hist/new/outputlog/error.log.32423423424
ログファイルの欠落が報告された問題の場合は、別途実行してください。
if [ -f /prod/new/outputlog/error.log ]; then
mv /prod/new/outputlog/error.log \
/prod/hist/new/outputlog/error.log.32423423424
else
echo 'ERROR: /prod/new/outputlog/error.log is missing' >&2
fi
答え3
error.logを「損傷」させる代わりに、見たいときに切り取るのはどうでしょうか?
cut -c 1-80 error.log | less