如何在使用管道时将程序错误重定向到文件

如何在使用管道时将程序错误重定向到文件

我正在 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>文件名

相关内容