[解決済み] スクリプトからのエラーメッセージを含むすべての端末出力をログファイルにパイプする方法
2022-02-15 18:29:17
質問事項
大規模なバックアップスクリプトのために、読みやすいログファイルを作ろうとしています。
スクリプト内では、コマンドからの出力をすべて大きなファイルにパイプするだけで、後でスクリプトによって "clean"することができるのです。たとえば、次のようなものです。
echo "Error occurred" >> log.file
mount disk >> log.file
私が見逃している警告とエラーは、スクリプトを実行するときにコンソールでパイプします。
backup.script >> log.file
しかし、それでもエラーメッセージがファイルに記録されるとは限らず、cronでスクリプト(パイプ付き)を実行すると、rsyncからのメールとスクリプトエラーが表示されます。
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: write failed on "/mnt/backup1/xxxxx": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(322) [receiver=3.0.9]
rsync: connection unexpectedly closed (215 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
とスクリプトエラーが発生したときです。
/data/scripts/backup.auto: line 320: syntax error near unexpected token `else'
これらのエラーメッセージをログファイルに含めるにはどうすればよいですか?
解決方法は?
STDERR を STDOUT にリダイレクトするためには、以下のように
2>&1
各行の末尾に
echo "Error occurred" >> log.file 2>&1
mount disk >> log.file 2>&1
複数のファイルディスクリプタがある場合、それらをすべて標準出力にリダイレクトすればよい 3>&1...
編集部:ファイルディスクリプタの仕組みを覚えていないときは http://www.tldp.org/LDP/abs/html/io-redirection.html
関連
-
[解決済み] Bashスクリプトでスクリプトファイル名を知るには?
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] bash スクリプトを実行しているドッカーエントリーポイントが "パーミッション拒否" になる
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 検索」からすべての「permission denied」メッセージを除外するにはどうすればよいですか?
-
[解決済み】Bashスクリプトでクリップボードにパイプを接続する
-
[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ambiguous redirect」エラーが発生する
-
[解決済み] bash : cd : 引数が多すぎる [閉店].
-
[解決済み] osx find exec rm find: exec: 不明な主またはオペレータ
-
[解決済み] バッシュ Vim.NET」が表示されたらVimを終了させる Warning: 出力先が端末でない"
-
[解決済み] /bin/sh: apt-get: 見つかりません。
-
[解決済み] bashの文字列の等値性テストで、予期しない演算子エラーが発生するのはなぜですか?重複
-
[解決済み] bash スクリプトを実行しているドッカーエントリーポイントが "パーミッション拒否" になる
-
[解決済み] プロジェクトからすべての .pyc ファイルを削除するにはどうすればよいですか?
-
[解決済み] パイプと二重パイプのどちらの OR 演算子を使うか?
-
[解決済み] STDOUTとSTDERRの両方をターミナルとログファイルに出力するにはどうすればよいですか?