在 Ubuntu 中将长命令的输出记录到文件中

在 Ubuntu 中将长命令的输出记录到文件中

我正在使用 Ubunutu。我只是想创建一个 postgre 转储。因此我使用以下命令:

sudo -u wap PGPASSWORD="postgres" pg_dump -h localhost -U postgres -d n26n -n public -FC -f /tmp/dump_file --verbose

以上内容按预期创建了转储。但是,由于我以详细模式运行它,因此我希望将输出记录到文件中。我尝试了以下操作:

sudo -u wap PGPASSWORD="postgres" pg_dump -h localhost -U postgres -d n26n -n public -FC -f /tmp/dump_file --verbose >> logfile

日志文件似乎是空的。

我如何表示命令的结束?

答案1

如果没有您收到的输出样本,我只能进行推测,但您的命令包含-f (--file)转储输出的去向:/home/me/dump_file

-f file

将输出发送到指定文件。对于基于文件的输出格式,可以省略此参数,在这种情况下将使用标准输出。但是,对于目录输出格式,必须给出此参数,其中指定目标目录而不是文件。在这种情况下,目录由创建,pg_dump并且之前必须不存在。

任何其他输出都将来自stderr因为您已经提供--verbose,所以您应该使用重定向此输出2> logfile1

--verbose

指定详细模式。这将导致pg_dump将详细的对象注释和开始/停止时间输出到转储文件,并将进度消息输出到标准错误。

例子:

sudo -u wap PGPASSWORD="postgres" \
   pg_dump -h localhost -U postgres \
   -d n26n -n public -Fc -f /tmp/dump_file --verbose 2> logfile1

相关内容