私の問題は、スクリプトを実行すると、以下のコマンドを過ぎて続行されることです。
top -b > output.txt
マシン上のデータは非常に大きいため、出力から CPU 統計の完全なスタックを取得するには時間がかかりますtop
。一部はすぐに出力されますが、残りを取得するには少し時間がかかります。(ターミナルで top コマンドを単独で実行して確認しました)。
すべての CPU 統計などが取得されるまで (たとえば 20 秒) 待機し、top
20 秒経過後に出力を取得して output.txt に出力する必要があります。
スリープは遅延のために使用されることは知っていますが、この場合は特にどこかで必要になるようです。
答え1
この世紀のマシンが1つのtop
表を生成するのに20秒もかかるとは到底思えません。問題は、top
間隔を置いて出力を印刷するように指示したことにある可能性が高いです。永遠に、バッファリングのため出力はすぐには書き込まれません。top -b -n1 > output.txt
代わりに試してください。
答え2
コマンドを使用してみてくださいwait
。
このような:
top -bn 1 > output.txt & wait
次に進む前に、そのプロセスが完了するまで待つ必要があります。