パイプを使用するときにプログラムエラーをファイルにリダイレクトする方法

パイプを使用するときにプログラムエラーをファイルにリダイレクトする方法

データベースをバックアップするために、Linuxシステムで次のコマンドを実行しています。

(echo "`date`: START DUMPING"; db_dump.sh; echo "`date`: DONE DUMPING") >>db_dump.log

db_dump.shから:

pg_dump -v --dbname=mydb | pigz | openssl enc -aes128 -k ssecret -out db_dump.gz.aes

pg_dump、pigz、opensslの情報出力をdb_dump.logにどのようにキャプチャしますか?

現在私はこれを検討しています:

pg_dump -v --dbname=mydb 2>>db_dump.log| pigz 2>>db_dump.log| openssl enc -aes128 -k ssecret -out db_dump.gz.aes 2>>db_dump.log

しかし、これは少し難しいようです...

答え1

括弧でグループ化してみてください。

( pg_dump -v --dbname=mydb | pigz | openssl enc -aes128 -k ssecret -out db_dump.gz.aes ) 2>>db_dump.log

パイプラインのすべての部分で、別々のstderr出力が同じ宛先に移動します。

答え2

次の方法を使用できます。

プログラム2>ファイル名

関連情報