複数のパイプラインコマンドのステータス出力を追跡する便利な方法はありますか?

複数のパイプラインコマンドのステータス出力を追跡する便利な方法はありますか?

ブロックデバイスを持つserverAがあり、その内容をリレーとして使用するコンピュータを介してserverBのブロックデバイスに移動しようとしているとします。これは、パイプ、バッファ、ddなどのツールに非常に便利です。

進捗状況を監視し、ボトルネックを識別するために、別々のステータス出力を介して各コマンドの進捗状況を追跡するのが好きです。

複数の端末の実行、バックグラウンド化(&)、FIFOを介した出力ループなどによってこのラインが複雑になることに加えて、状態出力を便利に整列させる方法はありますか?

ssh serverA "sudo dd if=/dev/sdc status=progress | mbuffer" | mbuffer | ssh serverB "mbuffer | sudo dd of=/dev/sdc status=progress"

これにより、間の行を消去せずに5つのコマンドの状態をすばやく切り替える単一の行が提供されます。たとえば、次のものを交互に使用します(代替出力に「00%いっぱい」を表示)。

in @ 6137 kiB/s, out @ 6137 kiB/s, 26.3 GiB total, buffer 100% full
30353129472 bytes (30 GB, 28 GiB) copied, 1158 s, 26.2 MB/s00% full

クリーンアップ出力は、各コマンドの出力を別々の行に一貫して含みます。

関連情報