タイムアウトを使用して端末にコマンド出力を表示する方法

タイムアウトを使用して端末にコマンド出力を表示する方法

これにより、dd if=/dev/zero of=/dev/null結果が端末に表示されます。しかし、特定の時間内にこのコマンドを実行して結果を表示したいと思います。たとえば、私は試しました

timeout 10s dd if=/dev/zero of=/dev/nulしかし、端末ではstdout / stderrを取得できません。

「--preserve-status」、「--foreground」、「-v --verbose」など、いくつかのタイムアウトオプションを試してみましたが、まだ端末に出力がありません。

結果を端末やファイルに表示する方法はありますか?

ベストアンサー1

--foreground信号と共にのオプションを使用してくださいtimeoutINTdd

timeout --foreground -s INT 0.1 dd if=/dev/zero of=/dev/null

文書には次timeoutのように記載されています。

--foreground
  when not running timeout directly from a shell prompt,
  allow COMMAND to read from the TTY and get TTY signals;
  in this mode, children of COMMAND will not be timed out

私が見たトレースなどでは、これは信号を取得するプロセスをdd必要としないようです。--foregroundINTしかし、CONTどちらもプロセスをすばやく終了させますddtimeoutまれに、dd実際に信号を処理する時間がありますが、INTこれは標準ではありません。

--foreground終了する前に統計を送信せずに印刷する時間がありましたCONTdd

上記の関数はcleanup最初の反復呼び出しで呼び出されます。sigsuspend

ddSprocess_signals()ほとんど呼び出されない後ろに interrupt_signalCONT処理時間にすでに設定されていますtimeout(つまり、--foreground設定されていません)。

おすすめ記事