リダイレクトにもかかわらず、プログラムに標準出力にログを書き込むにはどうすればよいですか?

リダイレクトにもかかわらず、プログラムに標準出力にログを書き込むにはどうすればよいですか?

背景

今日、私は次のコマンドを使ってperconnaのinnobackupexを試しました。

innobackupex --stream=xbstream /root/backup/ > /root/backup/backup.xbstream

しかし、私の端末にログが表示されることを確認しました。

...
IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".

230202 15:52:24 Connecting to MySQL server host: 127.0.0.1, user: root, password: set, port: 3306, socket: not set
...

何をするのか分からない

リダイレクトは>標準出力を/root/backup/backup.xbstreamに書き込めませんか?端末でログを見続けることができるのはなぜですか?

ベストアンサー1

Unixシリーズシステムのプロセスには、異なるエラー出力ストリームと処理されたデータストリームがstderrありますstdout。この分離は、警告メッセージとエラーメッセージが出力データの形式を妨げないようにするために行われます(たとえば、パイプを介して転送される場合など)。

# redirect the command output, but omit warnings and errors
# (these will end up on stderr, which is written to the console by default)
mycommand > /some/path/myfile

# redirect warnings and errors only
mycommand 2> /some/path/myfile

# redirect both
mycommand &> /some/path/myfile

引用するリダイレクトに関するGNU公式Bashドキュメント各ストリームリダイレクトの詳細

おすすめ記事